Had an interesting EDI issue that occurred recently with how BizTalk 2010 parses the value for ISA11. In older EDI versions, 4010 and below I believe, ISA11 was called the “standards identifier” and was always set to “U”. Newer versions of EDI added a new delimiter called the “repetition separator” and repurposed ISA11 to define what this character would be in an interchange.
In the event we were seeing errors like this:
Error: 1 (Miscellaneous error) 16: Invalid Control Standard Identifier Error: 2 (Field level error) SegmentID: ISA Position in TS: 1 Data Element ID: ISA11 Position in Segment: 11 Data Value: ^ 7: Invalid code value
BizTalk should automatically parse this correctly based on the EDI version defined in the schema but in my case it was defaulting to the old behavior even though the version in the schema was 4060. We even tried to setting the UseIsa11AsRepetitionSeparator property on the EDI pipeline to True but BizTalk was still parsing it like a 4010 transaction.
We fixed this using the following steps:
- Open the party properties and ensure the Local BizTalk processes messages received by the party or supports sending messages from this party option is checked.
- Open the agreement properties and choose the outbound settings tab.
- Select the Envelopes option from the tree view on the left.
- Under ISA11 usage select the Repetition separator option.
- Go back to the party properties and uncheck the Local BizTalk processes messages received by the party or supports sending messages from this party option.
- Restart the host instances used to receive EDI transactions to apply the changes.
This is what my Envelopes configuration looks like:
I do not understand why changing the outbound settings would have any impact on how BizTalk parses an inbound interchange but it works. At some point I will have to see if this is still an issue in BizTalk 2013.