Skip to Content
avatar image
Former Member

Converting Fault SOAP message to Application response message in PI

Hi Guys,

I have a SOAP to SOAP sync scenario. SFDC --> PI --> External party.

PI is 7.4. External Party web service can not send error response back to PI, they are just sending back the SOAP Fault message in each case. (Even in case of application error). I am able to capture Fault message in PI and see it successfully in soapUI. But catch here is, PI will capture and send back same SOAP Fault message to SFDC.

But here SFDC can not accept SOAP Fault messages. They can only capture application level error responses. Can PI convert Fault message to Application Error Message?

I already tried creating xsd for fault message format from External Party and add this to my Outbound SI. And I added error structure to my data type and have that in my Inbound SI. Now In my OM i did mapping from fault structure (xsd) to Response message (error structure I added). But eventually when I see in soapUI error response it is coming under soap Fault error response.

Could you please tell me how we can handle this.

Here is the below response error message coming in soapUI which is under Fault.

http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Header/>
<SOAP:Body>
<SOAP:Fault>
<faultcode>SOAP:Server</faultcode>
<faultstring>Server Error</faultstring>
<detail>
test.com/BT/testing123">
<faultdata>
<reference>This is test=</reference>
<errorcode>1234</errorcode>
<errormessage>This is test error message</errormessage>
</faultdata>
</ns0:MT_Test_Response>
</detail>
</SOAP:Fault>
</SOAP:Body>
</SOAP:Envelope>

Add comment
10|10000 characters needed characters exceeded

  • Get RSS Feed

1 Answer

  • Apr 18, 2017 at 09:08 AM

    Hi Vineet!

    The most common approach is to create response message type containing both the SOAP Fault message structure and normal response message structure with 0..1 occurences. You set "Do not use SOAP Envelope" option in receiver SOAP adapter properties and use XSL mapping for example to add SOAP Envelope to your request message coming to end system. You also set parameter XMBWS.NoSOAPIgnoreStatusCode = true in receiver SOAP adapter to enable processing fault response message instead of raising System error. In response mapping you check which part of response exists, Fault or Response part and build response message to sender accordingly.

    https://blogs.sap.com/2015/07/29/soap-faults-and-webservice-faults-from-3rd-party-webservices/

    Addition: In case of using XSL transformation as response mapping you even have no need to create common message structure for response and use your current structure. In XSL transformation you just create templates for both of your response types within SOAP Envelope and apply it to your actual response.

    Regards, Evgeniy.

    Add comment
    10|10000 characters needed characters exceeded