Hello Experts,
I need to implement a scenario where in sender will add custom header fields and in PI, the values needs to captured. Second step: Based on the custom header value, the receiver needs to be determined.
Scenario: SOAP Sender -> PI -> SOAP Receiver
Request Message:
<RequestMsg>
<request>
<Field 1>...</Field 1>
<Field 2>...</Field 2>
<Field 3>...</Field 3>
</request>
</RequestMsg>
Without any custom SOAP header, I have created Request / Response Message, Message Mapping, Service Interfaces (Inbound & Outbound) and Operation Mapping and tested the scenario by triggering call through SOAP UI, it works fine. SOAP Request XML looks like below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://www.test.abc.com/v1">
<soapenv:Header />
<soapenv:Body>
<v1:RequestMsg>
<request>
<Field 1>1</Field 1>
<Field 2>2</Field 2>
<Field 3>3</Field 3>
</request>
</v1:RequestMsg>
</soapenv:Body>
</soapenv:Envelope>
To use customer fields in SOAP Header, I have checked the option "Do Not Use SOAP Envelope" in the SOAP Sender CC and added "&nosoap=true" to url. SOAP Request XML looks like below:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:v1="http://www.test.abc.com/v1">
<soapenv:Header >
<id>REC1</id>
</soapenv:Header >
<soapenv:Body>
<v1:RequestMsg>
<request>
<Field 1>1</Field 1>
<Field 2>2</Field 2>
<Field 3>3</Field 3>
</request>
</v1:RequestMsg>
</soapenv:Body>
</soapenv:Envelope>
Now, when I invoke the url, I see that the message reaches PI but it throws error: RoutingException: InterfaceDetermination did not yield any actual interface
Please note that I have added a Java Mapping before main message mapping to read the soap header and pass only the request message to the next message mapping.
I am sure, I am missing important steps in the configuration. Please help me in reolving the issue.
Thanks & Regards,
Ankit Srivastava