Hi Experts,
We are using SAP PI 7.1 System. There are 3 interfaces, where sender is SAP ISU (via standard proxy) and receivers are MDM and SOA (via webservice).
To decide the receiver, we implemented the XPATH conditions.
/p1:UtilitiesDeviceERPSmartMeterLocationNotification/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID = HES
message should go to MDM
/p1:UtilitiesDeviceERPSmartMeterLocationNotification/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID != HES (not equal to HES)
message should go to SOA
When i test this through integration engine it is working as expected.
But when i test this end-to-end, the above condition root get changed at runtime.
CPA Cache Refresh and SXI_Cache done multiple times, after cache refresh interface works for few hours and then issue pops up again.
For ex: message is for UtilitiesDeviceERPSmartMeterLocationNotification interface.
Please find below receiver determination trace for same message, where root of the condition changed at runtime to UtilitiesDeviceERPSmartMeterRegisterCreateRequest.
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?><!-- Receiver Determination --> <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30"><Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>
<Trace level="1" type="T">Party normalization: sender </Trace>
<Trace level="1" type="T">Sender scheme external = </Trace>
<Trace level="1" type="T">Sender agency external = </Trace>
<Trace level="1" type="T">Sender party external = </Trace>
<Trace level="1" type="T">Sender party normalized = </Trace>
<Trace level="3" type="T">##### DG: 0</Trace>
<Trace level="3" type="T">##### TO: 3</Trace>
<Trace level="1" type="B" name="CL_XMS_HTTP_HANDLER-HANDLE_REQUEST"></Trace><!-- ************************************ -->
<Trace level="1" type="T">XMB was called with URL /sap/xi/engine/?type=entry</Trace>
<Trace level="2" type="T">Request Line = POST /sap/xi/engine/?type=entry HTTP/1.0</Trace>
<Trace level="2" type="T">Host = MB3AP1069:50200</Trace>
<Trace level="2" type="T">Server protocol = HTTP/1.0</Trace>
<Trace level="2" type="T">Remote address = 10.212.178.153</Trace>
<Trace level="3" type="T">COMMIT is done by IS ! </Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-ENTER_XMS">
<Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>
<Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_INT_PID: SAP_CENTRAL</Trace>
<Trace level="3" type="T">##### DG: 0</Trace>
<Trace level="3" type="T">##### TO: 3</Trace>
<Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV">
<Trace level="3" type="T">No triggers found. OK. </Trace>
</Trace>
<Trace level="3" type="T">system-ID = RX2</Trace>
<Trace level="3" type="T">client = 001</Trace>
<Trace level="3" type="T">language = E</Trace>
<Trace level="3" type="T">user = BASIS</Trace>
<Trace level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA </Trace>
</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_UC_EXECUTE"></Trace><!-- ************************************ -->
<Trace level="1" type="T">Message-GUID = 0050569403CE1ED3AA9B792DB442C615</Trace>
<Trace level="1" type="T">PLNAME = CENTRAL</Trace>
<Trace level="1" type="T">QOS = EO</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_ASYNC">
<Trace level="3" type="T">QOS = EO</Trace>
<Trace level="3" type="T">Message-GUID = 0050569403CE1ED3AA9B792DB442C615</Trace>
<Trace level="3" type="T">Generate prefixed queue name </Trace>
<Trace level="1" type="T">Queue name : XBTI0003</Trace>
<Trace level="1" type="T">Generated prefixed queue name = </Trace>
<Trace level="1" type="T">Schedule message in qRFC environment </Trace>
<Trace level="3" type="T">Setup qRFC Scheduler </Trace>
<Trace level="1" type="T">Setup qRFC Scheduler OK! </Trace>
<Trace level="3" type="T">Call qRFC .... MsgGuid = 0050569403CE1ED3AA9B792DB442C615</Trace>
<Trace level="3" type="T">Call qRFC .... Version = 000</Trace>
<Trace level="3" type="T">Call qRFC .... Pipeline = CENTRAL</Trace>
<Trace level="3" type="T">OK. </Trace>
<Trace level="1" type="T">----------------------------------------------------- </Trace>
<Trace level="1" type="T">Going to persist message </Trace>
<Trace level="1" type="T">NOTE: The following trace entries are always lacking </Trace>
<Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST </Trace>
<Trace level="1" type="T">- Exit CALL_PIPELINE_ASYNC </Trace>
<Trace level="1" type="T">Async barrier reached. Bye-bye ! </Trace>
<Trace level="1" type="T">----------------------------------------------------- </Trace>
</Trace>
<Trace level="3" type="T">Version number = 000</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST"></Trace><!-- ************************************ -->
<Trace level="3" type="T">Persisting message Status = 001</Trace>
<Trace level="3" type="T">Message version 000</Trace>
<Trace level="3" type="T">Pipeline CENTRAL</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE"></Trace><!-- ************************************ -->
<Trace level="3" type="T">Trace object available again now. OK. </Trace>
<Trace level="3" type="T">Message was read from persist layer. OK. </Trace>
<Trace level="3" type="T">Message properties in XMB object were setup. OK. </Trace>
<Trace level="3" type="ToDo">Make sure we catch exceptions in persist read </Trace>
<Trace level="3" type="ToDo">Tracing obj. not avail. before return of CL_XMS_MAIN-PERSIST_READ_MESSAGE</Trace>
<Trace level="1" type="B" name="PLSRV_XML_VALIDATION_RQ_INB">
<Trace level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA Start of pipeline service processing PLSRVID= PLSRV_XML_VALIDATION_RQ_INB</Trace>
<Trace level="1" type="B" name="CL_XMS_PLSRV_VALIDATION-ENTER_PLSRV">
<Trace level="3" type="T">Pipeline Service = PLSRV_XML_VALIDATION_RQ_INB </Trace>
<Trace level="3" type="T">Skip Inbound Validation = </Trace>
<Trace level="3" type="T">Skip Outbound Validation = </Trace>
<Trace level="3" type="T">Area = XML_VALIDATION_INB </Trace>
<Trace level="1" type="T">Reading sender agreement </Trace>
<Trace level="1" type="T">Message does not contain a sender agreement </Trace>
<Trace level="1" type="T">Inbound validation by Integration Engine does not take place </Trace>
</Trace>
<Trace level="1" type="Timestamp">2014-03-11T05:12:50Z INDIA End of pipeline service processing PLSRVID= PLSRV_XML_VALIDATION_RQ_INB</Trace>
</Trace>
<Trace level="1" type="B" name="PLSRV_RECEIVER_DETERMINATION">
<Trace level="1" type="Timestamp">2014-03-11T05:12:51Z INDIA Start of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>
<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="3" type="T">...create rule engine </Trace>
<Trace level="2" type="T">Check conditions for rule line no. 1 </Trace>
<Trace level="3" type="T">...call rule engine for Condition %CL_SAI_SWF_RULE_ENGINE.MSG_GET(MSG=&_MSG&;NSP=&_NSM&;XPATH="/p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID")% NE HES</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID </Trace>
<Trace level="2" type="T">......extracting values found: 0 </Trace>
<Trace level="2" type="T">......extracting values found: 0 </Trace>
<Trace level="2" type="T">...valid Receiver with Condition: - SOA_DEMO </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="/p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID")% CE HES</Trace>
<Trace level="2" type="T">......extracting (new) for Extractor: XP /p1:UtilitiesDeviceERPSmartMeterRegisterCreateRequest/UtilitiesDevice/SmartMeter/UtilitiesAdvancedMeteringSystemID </Trace>
<Trace level="2" type="T">......extracting values found: 0 </Trace>
<Trace level="2" type="T">......extracting values found: 0 </Trace>
<Trace level="2" type="T">...invalid Receiver: - Emeter_Demo </Trace>
<Trace level="2" type="T">No Receiver found behaviour: 0 </Trace>
<Trace level="2" type="T">Number of Receivers:1 </Trace>
</Trace>
<Trace level="1" type="Timestamp">2014-03-11T05:12:51Z INDIA End of pipeline service processing PLSRVID= PLSRV_RECEIVER_DETERMINATION</Trace>
</Trace>
</SAP:Trace>
any input on this would be helpful.
Thanks,
Mandar