cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Sender with additional header: Interface determination error

ankit_srivastava3
Participant
0 Kudos

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


Accepted Solutions (1)

Accepted Solutions (1)

former_member184720
Active Contributor
0 Kudos

Hi Ankit - Did you add any condition in the interface determination? i.e. are you checking for header value using xpath??

If so validate it again..

ankit_srivastava3
Participant
0 Kudos

Hello Hareesh,

As of now, I am not doing any interface determination. Once the basic scenario starts working, I will do that as the second step.

Thanks,

Ankit

ankit_srivastava3
Participant
0 Kudos

If there is any need to modify the message associated with OB Service Interface?

former_member184720
Active Contributor
0 Kudos

Please refer to Nicola's reply in the below thread if it helps...

ankit_srivastava3
Participant
0 Kudos

Hello Hareesh,

Bingo! The second option suggested by Nicolas worked like a charm. I am just copying the same here:

-----In ESR, you set the attribute "Interface Pattern" of the outbound service interface as "Stateless (XI30-compatible)", which does not use operations.----

Thanks a lot. Now, I will be able to concentrate on the next steps.

Regards,

Ankit Srivastava

Answers (0)