on 02-26-2007 6:49 PM
Hi
I am having an issue with interface and receiver determination as follows:
- Inbound message may be sent to two receivers.
- Message gets sent to first receiver, fails during interface determination. There are multiple inbound interfaces found based on a set of XPATH conditions. This creates an error 'Inbound interface found more than once for outbound interface '. That is itself is <b>not </b>the issue.
- Issue is that the message is stopped from going to the other receiver even if there are no issues in the interface determination for that receiver.
Is there a way to resolve this? Appreciate any help. Thx, Duncan
Thanks for the quick replies. Scenario is configured as follows:
<b>Rec Determination</b>
XPATH condition used to route only certain messages to Receiver A.
All messages routed also to Receiver B.
<b>Interface Determination</b> exists for both Receiver A and Receiver B. For Receiver B, Interface Determination contains further XPATH conditions to determine which Inbound Interface and Mapping to use.
I see my messages getting to Receiver A but failing to get to Receiver B. Any idea? Thx, Duncan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Duncan -
Aside from the inbound interface going to Receiver A, from your description, I take it that you have multiple inbound interfaces configured in your interface determination going to Receiver B. If so, do you possibly have the same inbound interface configured twice in that interface determination? If not and you do have different inbound interfaces configured, can you post the error you get in MONI?
Regards,
Jin
Again, thanks for the replies.
<b>MONI for RD</b>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
- <Trace level="1" type="B" name="CL_RD_PLSRV-ENTER_PLSRV">
<Trace level="1" type="T">R E C E I V E R - D E T E R M I N A T I O N</Trace>
<Trace level="1" type="T">Cache Content is up to date</Trace>
<Trace level="2" type="T">Start without given receiver</Trace>
<Trace level="2" type="T">Classic Receiver Determination via Rules.</Trace>
<Trace level="2" type="T">Check conditions for rule line no. 1</Trace>
<Trace level="3" type="T">...create rule engine</Trace>
<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% CE COSTCENTRE or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% CE INTERPLANT or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% CE INTERPLANT_ONESTEP or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% CE INTRAPLANT or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% CE INTRAPLANT_ONESTEP or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:receivingAdvice")% EX or %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:inventoryActivityOrInventoryStatus")% EX</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:despatchAdvice</Trace>
<Trace level="2" type="T">......extracting values found: 0</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:receivingAdvice</Trace>
<Trace level="2" type="T">......extracting values found: 1</Trace>
<Trace level="2" type="T">...valid Receiver with Condition: - GLR430</Trace>
<Trace level="2" type="T">Check conditions for rule line no. 2</Trace>
<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice")% EX and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% NE COSTCENTRE and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% NE INTERPLANT and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% NE INTERPLANT_ONESTEP and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% NE INTRAPLANT and %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:despatchAdvice/deliveryNote/referenceIdentification")% NE INTRAPLANT_ONESTEP</Trace>
<Trace level="2" type="T">...invalid Receiver: P_3PL_XML_ME_ODTH - despatchAdviceToE1EDT20</Trace>
<Trace level="2" type="T">Check conditions for rule line no. 3</Trace>
<Trace level="2" type="T">...valid Receiver w/o Condition: P_3PL_XML_ME_ODTH - S_HTTP</Trace>
<Trace level="2" type="T">No Receiver found behaviour: 0</Trace>
<Trace level="2" type="T">Number of Receivers:2</Trace>
</Trace>
</Trace>
</Trace>
Here, you see that both receivers are found.
<b>MONI for ID</b>
<Trace level="1" type="B" name="PLSRV_INTERFACE_DETERMINATION" />
- <!-- ************************************
-->
<Trace level="1" type="Timestamp">2007-02-26T20:06:49Z CET Start of pipeline service processing PLSRVID= PLSRV_INTERFACE_DETERMINATION</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification...</Trace>
<Trace level="3" type="T" />
<Trace level="3" type="T">Pipeline service specification (table SXMSPLSRV)</Trace>
<Trace level="3" type="T">PLSRVID = PLSRV_INTERFACE_DETERMINATION</Trace>
<Trace level="3" type="T">PLSRVTYPE =</Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_ID_PLSRV</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T">FL_LOG =</Trace>
<Trace level="3" type="T">FL_DUMMY = 0</Trace>
<Trace level="3" type="T" />
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
- <!-- ************************************
-->
- <Trace level="1" type="B" name="CL_ID_PLSRV-ENTER_PLSRV">
<Trace level="1" type="T">I N T E R F A C E - D E T E R M I N A T I O N</Trace>
<Trace level="1" type="T">Cache Content is up to date</Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) GLR430 WMMBXY.WMMBID01</Trace>
<Trace level="3" type="T">...create rule engine</Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p1:inventoryActivityOrInventoryStatus/inventoryDocumentType")% CE INVENTORY_STATUS</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:inventoryActivityOrInventoryStatus/inventoryDocumentType</Trace>
<Trace level="2" type="T">......extracting values found: 0</Trace>
<Trace level="2" type="T">...invalid InbIf: WMMBXY.WMMBID01</Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) GLR430 WMMBXY.WMMBID01</Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p1:inventoryActivityOrInventoryStatus/inventoryDocumentType")% CE INVENTORY_ACTIVITY</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:inventoryActivityOrInventoryStatus/inventoryDocumentType</Trace>
<Trace level="2" type="T">......extracting values found: 0</Trace>
<Trace level="2" type="T">...invalid InbIf: WMMBXY.WMMBID01</Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) GLR430 WMMBXY.WMMBID01</Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:receivingAdvice/receivingAdviceItemContainmentLineItem/purchaseOrder/documentReference/uniqueCreatorIdentification")% EX</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:receivingAdvice/receivingAdviceItemContainmentLineItem/purchaseOrder/documentReference/uniqueCreatorIdentification</Trace>
<Trace level="2" type="T">......extracting values found: 2</Trace>
<Trace level="2" type="T">...valid InbIf with Condition: WMMBXY.WMMBID01</Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) GLR430 WMMBXY.WMMBID01</Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p2:receivingAdvice/carrier/additionalPartyIdentification/additionalPartyIdentificationValue")% CE SHUTTLE</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:receivingAdvice/carrier/additionalPartyIdentification/additionalPartyIdentificationValue</Trace>
<Trace level="2" type="T">......extracting values found: 1</Trace>
<Trace level="2" type="T">...valid InbIf with Condition: WMMBXY.WMMBID01</Trace>
</Trace>
</Trace>
- <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST">
<Trace level="3" type="T">Persisting message after plsrv call</Trace>
<Trace level="3" type="T">Message-Version = 002</Trace>
<Trace level="3" type="T">Message version 002</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</Trace>
<Trace level="3" type="System_Error">Error exception return from pipeline processing!</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
- <!-- ************************************
-->
<Trace level="3" type="T">Persisting message Status = 014</Trace>
<Trace level="3" type="T">Message version 003</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
</SAP:Trace>
Here, you see that the ID runs for the first receiver. It hits an error because two conditions on the ID for the first receiver are satisfied. However, it then stops rather than allow the processing for the other receiver to continue.
Any ideas? Thx, Duncan
Hi Duncan -
In your Interface Determination (ID) for this one receiver, you do seem to have the same inbound interface (WMMBXY.WMMBID01) configured more than once. That in and of itself is not the problem. The problem does arise when the conditions you have set up for each instance of this inbound interface evaluate to true and thus, the "Inbound interface found more than once for outbound interface" error.
In your ID trace, you can see the following:
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) <b>GLR430 WMMBXY.WMMBID01</b></Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH=<b>"/p2:receivingAdvice/receivingAdviceItemContainmentLineItem/purchaseOrder/documentReference/uniqueCreatorIdentification")% EX</b></Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:receivingAdvice/receivingAdviceItemContainmentLineItem/purchaseOrder/documentReference/uniqueCreatorIdentification</Trace>
<Trace level="2" type="T">......extracting values found: 2</Trace>
<Trace level="2" type="T"><b>...valid InbIf with Condition: WMMBXY.WMMBID01</b></Trace>
<Trace level="2" type="T">Check conditions for (Inb: Party Srvc If) <b>GLR430 WMMBXY.WMMBID01</b></Trace>
<Trace level="3" type="T">...call rule engine for Condition%CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH=<b>"/p2:receivingAdvice/carrier/additionalPartyIdentification/additionalPartyIdentificationValue")% CE SHUTTLE</b></Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p2:receivingAdvice/carrier/additionalPartyIdentification/additionalPartyIdentificationValue</Trace>
<Trace level="2" type="T">......extracting values found: 1</Trace>
<Trace level="2" type="T"><b>...valid InbIf with Condition: WMMBXY.WMMBID01</b></Trace>
</Trace>
</Trace>
For the same service/interface (GLR430 WMMBXY.WMMBID01), the condition it evaluates to true more than once - thus the error. In such a case, you have to make sure the condition accounts for mutually exclusive cases. Or perhaps you can configure the inbound interface once and set OR conditions for the different cases.
Regards,
Jin
Hi Jin, Thanks for the answer. Hopefully, this gets 'improved' in a future release 😃 Thx, Duncan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Jin, Thanks for the reply. I understand the reason that the ID is failing. However, it seems odd that because ID for one receiver is failing, it does not even try and process for the other receiver. Does that sound right? Thx, Duncan
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Duncan -
I understand where you're coming from. Unfortunately, in the XI pipeline processing, the Receiver Grouping and Message Branch/Split steps only takes place after the Interface Determination step for a given Service/Outbound Interface/Namespace. So the exception in the Interface Determination prevents the branch/split from occurring and proceeding independently. Currently, I have not insight whether such behavior will be changed in the future.
Regards,
Jin
What I see is strange. When I push in the message, I see only that Interface Determination failed. So I do not even see the normal split that I would expect.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
also chcek:
<a href="/people/venkataramanan.parameswaran/blog/2006/03/17/illustration-of-enhanced-receiver-determination--sp16 of Enhanced Receiver Determination - SP16</a>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
For each business system which is there as a receiver you need to provide individual interface determination
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Duncan,
Hv u specified differnet conditions for the two inbound interfaces? Also r u usins simple or enhanced receiver determination. I guess u r usin=g simple receiver dtermination. Also, r thr two receiver agreements for the the two receivers.
Regards,
Akshay
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
9 | |
7 | |
7 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.