cancel
Showing results for 
Search instead for 
Did you mean: 

Interface Determination causing issue in Receiver Determination

Former Member
0 Kudos

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

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

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

prabhu_s2
Active Contributor
0 Kudos

is the condition satisfying for second recv?

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Answers (6)

Answers (6)

Former Member
0 Kudos

Hi Jin, Thanks for the answer. Hopefully, this gets 'improved' in a future release 😃 Thx, Duncan

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

prabhu_s2
Active Contributor
0 Kudos

also chcek:

<a href="/people/venkataramanan.parameswaran/blog/2006/03/17/illustration-of-enhanced-receiver-determination--sp16 of Enhanced Receiver Determination - SP16</a>

prabhu_s2
Active Contributor
0 Kudos

For each business system which is there as a receiver you need to provide individual interface determination

Former Member
0 Kudos

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