ISA16 component element separator cannot be part of the payload

Summary

An agreement property indicates the char value for ISA16. ISA16 is the X12 message component element separator. When an EDI message fails validation, the 997 fails to generate if the failing value/field contains a char that matches the ISA16, component element separator. The parser will not be able to distinguish the separator character in the payload as payload vs the actual separator.

You might get error in the application event log similar to: Event 5743 The adapter failed to transmit message going to send port "997_SP" with URL "C:\<output folder>". It will be retransmitted after the retry interval specified for this Send Port. Details:"Unable to read the stream produced by the pipeline. 

Details: Error: 1 (Field level error)
SegmentID: AK4
Position in TS: 71
Data Element ID: AK44
Position in Segment: 4
Data Value: 
6: Invalid character in data element

This is by design and documented at http://msdn.microsoft.com/en-us/library/bb226315(v=bts.70).aspx.
If the payload data contains characters that are also used as data, segment, or component separators, check Replace separators in payload with and specify a replacement character or hex. When generating the outbound X12 message, all instances of separator characters in the payload data will be replaced with the specified character or hex value.

More Information

The workarounds availableto handle the scenario are:

1) Use the agreement property, “Replace the separators in payload with:” to set the component element separator from default ":" to another value ie. "$". The setting is applied for all the message types pertaining to the agreement.

2)  Override the component separator (ISA16) for 997 using dynamic envelope overrides (Overriding EDI Headers). The 997 XML generated by EDI Disassembler will have a message type context property with value pertaining to 997. Write a custom pipeline component before the EDI Assembler to look for the message type context property for 997 message and write the override ISA16 context property. In that case only the 997 will go out with a different component separator (ISA16)and the rest of the message types will go out without modification.
Properties

Article ID: 2705105 - Last Review: 9 May 2012 - Revision: 1

Feedback