2 Replies Latest reply: Nov 26, 2012 5:44 PM by user4656257 RSS

    EDIFECS XML -- how to populate 'Internal-Properties' with XSLT or otherwise

      Hi All

      We are working on our first outbound EDI X12 3020 856. We have SOA and B2B (including B2B EDI Adapter). We received some help to get an overview of B2B and the touch-points between SOA and B2B. So in general we have a decent understanding of all the B2B setups as well as Document Editor and SOA.

      Again we are working on an outbound transaction. In general we use XCBL as our canonical format (Enterprise Business Message). So we are creating the EDIFECS X12 3020 856 XML file by translating from XCBL. And then we will pass EDIFECS XML to B2B via the B2B Adapter in SOA (using 'fabric').

      From the help we received, we have a working example of an outbound PO (based on SOA Samples project). Once the EDIFECS XML PO is handed off to B2B, partners and agreements are identified and the final EDI is created -- all is well. One important thing to note is that in the working PO project, the EDIFECS XML was provided.

      Investigating the working PO project, we see that 'Interchange Identifiers' are being populated in two places (Interchange Identifiers are used to find the B2B agreement).

      The first place is in the Mediator where we are assigning the following values:

      - b2b.toTradingPartnerId
      - b2b.fromTradingPartnerId
      - b2b.documentProtocolVersion
      - b2b.documentTypeName

      The second place is in the EDIFECS XML PO file, where some of the same values are populated under 'Internal-Properties' element. Here is an example of 'Internal-Properties' in EDIFECS XML:

      <Data-Structure Name="Interchange">
      <Lookup Name="InterchangeSenderQual">ZZ</Lookup>
      <Lookup Name="InterchangeSenderID">ESCO</Lookup>
      <Lookup Name="InterchangeReceiverQual">ZZ</Lookup>
      <Lookup Name="InterchangeReceiverID">Caterpillar</Lookup>
      <Lookup Name="InterchangeControlVersion">00400</Lookup>
      <Lookup Name="Standard">X12</Lookup>
      <Property Name="InterchangeAuthorizationInfoQual">00</Property>
      <Property Name="InterchangeAuthorizationInfo"></Property>
      <Property Name="InterchangeSecurityInfoQual">00</Property>
      <Property Name="InterchangeSecurityInfo"></Property>
      <Property Name="InterchangeSenderQual">ZZ</Property>
      <Property Name="InterchangeSenderID">ESCO</Property>
      <Property Name="InterchangeReceiverQual">ZZ</Property>
      <Property Name="InterchangeReceiverID">Caterpillar</Property>
      <Property Name="InterchangeDate">041216</Property>
      <Property Name="InterchangeTime">1900</Property>
      <Property Name="InterchangeControlStandard_RepeatingSeparator">U</Property>
      <Property Name="InterchangeControlVersion">00400</Property>
      <Property Name="InterchangeControlNumber">000001688</Property>
      <Property Name="InterchangeAckRequested">0</Property>
      <Property Name="InterchangeUsageIndicator">P</Property>
      <Property Name="InterchangeComponentElementSep">0x7d</Property>
      <Property Name="DecimalSeparator"/>
      <Property Name="ElementDelimiter">0x2a</Property>
      <Property Name="ReleaseCharacter"/>
      <Property Name="RepeatingSeparator"/>
      <Property Name="SegmentDelimiter">0x7e</Property>
      <Property Name="SubelementDelimiter">0x7d</Property>
      <Property Name="InterchangeChildCount">1</Property>
      <Property Name="InterchangeTrailerControlNumber">000001688</Property>
      <Data-Structure Name="Group">
      <Lookup Name="GroupSenderID">ESCO</Lookup>
      <Lookup Name="GroupReceiverID">Caterpillar</Lookup>
      <Lookup Name="GroupVersionNumber">004010</Lookup>
      <Property Name="GroupID">PO</Property>
      <Property Name="GroupSenderID">ESCO</Property>
      <Property Name="GroupReceiverID">Caterpillar</Property>
      <Property Name="GroupDate">20041216</Property>
      <Property Name="GroupTime">1900</Property>
      <Property Name="GroupControlNumber">1695</Property>
      <Property Name="GroupAgencyCode">X</Property>
      <Property Name="GroupVersionNumber">004010</Property>
      <Property Name="GroupChildCount">1</Property>
      <Property Name="GroupTrailerControlNumber">1695</Property>
      <Data-Structure Name="Transaction">
      <Lookup Name="TransactionID">850</Lookup>
      <Property Name="TransactionID">850</Property>
      <Property Name="TransactionControlNumber">16950001</Property>
      <Property Name="TransactionImplementationReference"/>
      <Property Name="TransactionChildCount">26</Property>
      <Property Name="TransactionTrailerControlNumber">16950001</Property>

      At this point we have two questions. Are both the Mediator value assignments (b2b.toTradingPartnerId, etc.) and the 'Internal-Properties' in the EDIFECS XML necessary to find the agreement in B2B? From what we can tell both are necessary which leads to the second question. How do we populate the repeating 'Property' element (under 'Internal-Properties') with XSLT? We don't have expertise with XSLT but in general it seems like you can only map to a given 'target' element once. So even though the EDIFECS XSD specifies that you can have multiple/repeating 'Property' elements under 'Internal-Properties' we can't figure out how to make this happen with XSLT. If there is an example that shows the XSLT used to create 'Internal-Properties' in EDIFECS XML that would be greatly appreciated. Or if there is another way please let us know

      Hope this didn't get too long-winded, I found it somewhat hard to explain

      Thank you,