Warning, the following code is not pretty! Often times I get into a situation where I lose my confidence in the finesse of the Biztalk Mapper. That’s when I pull out my sledge hammer. This is one of those occasions.

The following map wouldn ‘t workwhen the STqualified or ship-toinformation wasnot in the 1st N1 loop.The output would always be blank.I tried fruitlessly using every combination oflooping functoid, value mapping functoid, and value mappingflattening functoid to no avail.

To make it work with functoids I created two “Functoid Array Strings”. The first string (IterationString_1 in the VB.Net Scripting Functoid parameter) contains the Looping Iteration followed by a “*” followed by the N1 qualifier I was searching for. Essentially my Iteration string would look like this – 1*CR2*IT3*ST4*IM. I bolded the ST to show that it is found in the 3rd iteration of the loop. Once i knew I was looking for Iteration 3 of the loop I could take in element I was looking for in the same “Iteration*Element” string format I created earlier. As soon as I found the 3rd iteration i can just pull out the element I need and never have to worry about looping, I get the value every time.

Here’s the functiod logic.

Public Function ReturnSTInfo_1(ByVal IterationSTring_1 As String, ByVal N104_1 As String) As String
Dim BeginningIndexValue_1 As Integer
Dim EndingIndexValue_1 As Integer
Dim LengthOfElement_1 As Integer
BeginningIndexValue_1 = System.Convert.ToInt32(IterationSTring_1.Substring((IterationSTring_1.IndexOf(“ST”) – 2), 1))
EndingIndexValue_1 = BeginningIndexValue_1 + 1
If N104_1.IndexOf(System.Convert.ToString(EndingIndexValue_1) + “*”) = -1 Then

Return N104_1.Substring((N104_1.IndexOf(System.Convert.ToString(BeginningIndexValue_1) + “*”) + 2))

Else

LengthOfElement_1 = (N104_1.IndexOf(System.Convert.ToString(EndingIndexValue_1) + “*”)) – (N104_1.IndexOf(System.Convert.ToString(BeginningIndexValue_1) + “*”) + 2)
Return N104_1.Substring((N104_1.IndexOf(System.Convert.ToString(BeginningIndexValue_1) + “*”) + 2), LengthOfElement_1)

End If
End Function