I tested your problem and found (for v4.6 with EDI SP 1) that the IS flow service wm.b2b.edi:convertToString does not escape/release MORE THAN ONE special character per text field in an EDIFACT record structure.
So it does add the release char to the last special char within the string.
For example if the wm.b2b.edi:convertToString is called with :
Segment_terminator = ’
Field_separator = +
Subfield_separator = :
releaseCharacter = ?
and the Values record structure has text fields like:
TEXT + : ’ END OF NAD01
then the resulting EDIFACT string is
TEXT + : ?’ END OF NAD01+
rather than
TEXT ?+ ?: ?’ END OF NAD01+
The service works OK if there is only one special char to be escape/released :
TEXT2 + END OF NAD02 C08201
then the resulting EDIFACT string is correct at
TEXT2 ?+ END OF NAD02 C08201:
The pipeline given below shows this in more detail, where DESADV is mapped to Values on convertToString
<?xml version=“1.0” encoding=“UTF-8”?>
<IDataXMLCoder version=“1.0”>
<record javaclass=“com.wm.data.BasicData”>
<record name=“DESADV” javaclass=“com.wm.data.BasicData”>
<record name=“UNH” javaclass=“com.wm.data.BasicData”>
<record name=“UNH02” javaclass=“com.wm.data.BasicData”>
<value name=“S00901”>DESADV</value>
<value name=“S00902”>D</value>
<value name=“S00903”>98A</value>
<value name=“S00904”>UN</value>
<value name=“S00905”>EAN008</value>
</record>
<record name=“BGM” javaclass=“com.wm.data.BasicData”>
<record name=“BGM01” javaclass=“com.wm.data.BasicData”>
<value name=“C00201”>80E</value>
<value name=“C00203”>9</value>
<value name=“C00204”>INSDES</value>
</record>
<record name=“BGM02” javaclass=“com.wm.data.BasicData”>
<value name=“C10601”>ORDER1</value>
<value name=“C10602”>00</value>
</record>
</record>
<array name=“NAD” type=“record” depth=“1”>
<record javaclass=“com.wm.data.BasicData”>
<value name=“NAD01”>TEXT + : ’ END OF NAD01</value>
<record name=“NAD02” javaclass=“com.wm.data.BasicData”>
<value name=“C08201”>TEXT2 + END OF NAD02 C08201</value>
<value name=“C08202”>TEXT2 : END OF NAD02 C08202</value>
<value name=“C08203”>TEXT2 ’ END OF NAD02 C08203</value>
</record>
<record name=“NAD03” javaclass=“com.wm.data.BasicData”>
<value name=“C05801”>TEXT3 ? END OF NAD03 C05801</value>
</record>
</record>
</array>
</record>
</record>
<value name=“string”>UNH+141526111+DESADV:D:98A:UN:EAN008’BGM+80E::9:INSDES+ORDER1:00’NAD+TEXT + : ?’ END OF NAD01+TEXT2 ?+ END OF NAD02 C08201:TEXT2 ?: END OF NAD02 C08202:TEXT2 ?’ END OF
#webMethods#Integration-Server-and-ESB#edi