XI to XI Communication : SOAP Header behavior

Hi Techeis,
I have a scenario XI(A) to XI(B) communication..
I use Receiver XI adapter using HTTP Destination to transfer the payload from IE of A to IE of B. However i see strange behaviour as mentioned below;
in A --> in the SOAP header o/b message interface is A_OUT & i/b message interface is A_IN
when the paylaod reaches XI(B)
in B -->  in the SOAP header o/b message interface is A_IN & i/b message interface is A_IN
i.e. in the target XI server, in the SOAP header o/b message interface is always same as the i/b message interface in source XI server !!
why is that behavior , does anybody have idea on this?

Hi Stefan,
Thanks for your inputs. If that is the case then please help me get answerd for the following queries:
1) Why we need to make the o/b MI in B same as i/b MI in A while creating Receiver Determination again in B ?
2) why it loses the information of another MI ? why does it not carry the information of both MI to the B-XI system?
3) Does that mean, in SXMB_MONI, the SOAP header that we see is only for the display purpose and does not reflect the actually nformation carried ?
Thanks in advance!

Similar Messages

  • How can I get SessionID from SOAP Header in MessageMapping

    Hello experts,
    I've got a Abap Proxy --> PI --> WebService scenario. I do the call to the web service and it returns me the data and a SessionID in the SOAP header. I've got a message mapping for the response, and in this message mapping I need to get this sessionID because I have to use it later.
    I have tried with a UDF with this code:
    String headerField = "";
    try
      String key="SessionID";
      java.util.Map map;
      // get runtime constant map
      map = container.getTransformationParameters();
      // get value of header field by using variable key
      headerField = (String) map.get(key);
    catch(Exception e){}
    if(headerField==null)
        headerField = "";
    return headerField;
    But it returns me nothing.
    In sxmb_moni I can see the sessionID (see attached file), so It should be possible to access it.
    How can I do to get this data????
    Many thanks.

    Thanks Indrajit.
    I have found a solution. I have to use the option: Do Not Use SOAP Envelope in my communication channel.
    But as I am using web services I have to create the SOAP Envelope in my mapping (in request and in response).
    I have created 2 xslt mapping files: one for request and one for response. The xslt mapping for the request it is placed in second position in my operation mapping. This xslt maping just move the fields and add the soap envelope (header and body, and inside the body places the data from 1st mapping).
    The response xslt mapping it is placed directly in my operation mapping (in response area). It transforms the SOAP response into my Message Type.
    Here you can find my xslt for request (sessionID, in0, in1 and in2 are fields from my source message type):
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <SOAP:Envelope xmlns:SOAP="http://www.w3.org/2003/05/soap-envelope">
          <SOAP:Header>
         <ses:sessionIDHeader xmlns:ses="http://xml.apache.org/axis/session">
                 <sessionID><xsl:value-of select="*/sessionID"/></sessionID>
             </ses:sessionIDHeader>
          </SOAP:Header>
          <SOAP:Body>
          <ser:invokeService xmlns:ser="http://www.w3.org/2003/05/soap-envelope">
             <in0><xsl:value-of select="*/in0"/></in0>
             <in1><xsl:value-of select="*/in1"/></in1>
             <in2><xsl:value-of select="*/in2"/></in2>
          </ser:invokeService>
          </SOAP:Body>
        </SOAP:Envelope>
      </xsl:template>
    </xsl:stylesheet>
    Here is xslt for response (invokeServiceReturn,sessionIDare fields from my target message type):
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
        <ns1:MT_invokeServiceResponse xmlns:ns1="http://saras.com/pi/creditoycaucion">
            <invokeServiceReturn><xsl:value-of select="/*/*/*/invokeServiceReturn"/></invokeServiceReturn>
            <sessionID><xsl:value-of select="*/*/*/sessionID"/></sessionID>
        </ns1:MT_invokeServiceResponse>
      </xsl:template>
    </xsl:stylesheet>
    Kind Regards.

  • SOAP Header in SOAP Receiver adapter

    Hi All,
    I am doing a Proxy to  Webservice scenario where webservice requires the SOAP request as below.
    <?xml version="1.0" encoding="UTF-8"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
        <SOAP-ENV:Header>
            <mh:CustomHeader xmlns:mh="http://schemas.test.com/customHeader">
                <mh:MessageData>
                    <mh:MessageId>12345</mh:MessageId>
                    <mh:Timestamp>2004-06-09T14:41:44Z</mh:Timestamp>
                </mh:MessageData>
            </mh:CustomHeader>
            <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/04/secext">
                <wsse:UsernameToken>
                    <wsse:Username>test</wsse:Username>
                    <wsse:Password>test123</wsse:Password>
                </wsse:UsernameToken>
            </wsse:Security>
        </SOAP-ENV:Header>
        <SOAP-ENV:Body>
        </SOAP-ENV:Body>
    Need your help to understand how can we achieve this using Standard SOAP adapter to customize the Header part as it requires to include "<mh:CustomHeader " & "UsernameToken".
    Or Do i need to go for adapter module development to create this SOAP request.
    Please provide your suggestion to achieve this scenario.
    Thanks & regards
    Ashwin
    Edited by: ashwin dhakne on May 17, 2010 5:32 PM

    Hi all,
    Created  a below target payload in a message mapping with  SOAP Header & Body part as per the requirement.
    In SOAP receiver communication channel, checked the option " Do Not Use SOAP Envelope".
    But while executing an sceanrio, i am facing  an error in SOAP receiver channel as Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/HTTP/ADAPTER.HTTP_EXCEPTION - HTTP 500 Internal Server Error
    And if i don't check the option " Do Not Use SOAP Envelope" it gives an error as
    Message processing failed. Cause: com.sap.aii.af.ra.ms.api.RecoverableException: SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Unable to obtain service binding,error=Payload Envelope is not a known message for TestWebserviceService.
    Please provide your suggestions to handle this issue.
      <?xml version="1.0" encoding="UTF-8" ?>
    <ns1:Envelope xmlns:ns1="http://schemas.test.com/CustomrHeader">
    <ns1:Header>
    <ns1:CustomrHeader>
    <ns1:MessageData>
      <ns1:MessageId>Constant</ns1:MessageId>
      <ns1:Timestamp>Constant</ns1:Timestamp>
      </ns1:MessageData>
    <ns1:Security>
    <ns1:UsernameToken>
      <ns1:Username>Constant</ns1:Username>
      <ns1:Password>Constant</ns1:Password>
      </ns1:UsernameToken>
      </ns1:Security>
      </ns1:CustomrHeader>
      </ns1:Header>
    <ns1:Body>
    <ns1:Details>
    <ns1:Information>
      <ns1:Title>Test</ns1:JobTitle>
      </ns1:Information>
    <ns1:Contacts>
      <ns1:Street>Test Drive</ns1:Street />
      </ns1:Contacts>
      </ns1:Details>
      </ns1:Body>
      </ns1:Envelope>
    Thanks
    Ashwin
    Edited by: ashwin dhakne on May 18, 2010 5:47 PM
    Edited by: ashwin dhakne on May 18, 2010 5:48 PM
    Edited by: ashwin dhakne on May 18, 2010 5:48 PM

  • Error in SXMB_MONI in SOAP Header -- Call Adapter

    Hi ALL,
    Got a problem with monitoring activity.
    In SXMB_MONI, iam getting errors with Call Adapter section in SOAP HEADER section of the message.
    The Error part shows the following error:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Call Adapter
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Problem inserting 4657f861-f853-60e8-e100-00000a80314d(INBOUND) into the database: java.sql.SQLException: ORA-25153: Temporary Tablespace is Empty</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Can anybody give me a clear picture of the exact error and what could be the diagnosis for this particular problem.
    cheers,
    Santosh

    Hi Santhosh
    1.Check your authorization settings in XI and R/3. Whether the user has sufficient rights to execute the Function Module etc. This is the most common reason for this error.
    2.If the XI system was brought online even before the R/3 system then re-activate the communication channels from the Integration directory.
    Cheers..
    Vasu
    <u><i><b>** Reward Points if found useful **</b></i></u>

  • SOAP Header XSLT mapping

    Hi,
    I am working on Proxy to SOAP synchronous scenario.  How to create SOAP header message in XSLT mapping...I am trying but no sauces becz receiver side SOAP header and Body in different message types please see below.
    Header part is message type 1
    <CredentialsHeader xmlns="http://reuters.com/datascopeselect/ExtractionService/v1/">
          <Username>string</Username>
          <Password>string</Password>
          <AuthenticationToken>string</AuthenticationToken>
        </CredentialsHeader>
    Body part is
    message type 2
    <soap:Body>
        <Extract xmlns="http://reuters.com/datascopeselect/ExtractionService/v1/">
          <request>
            <OutputFields>
              <string>string</string>
              <string>string</string>
            </OutputFields>
          </request>
        </Extract>
      </soap:Body>
    </soap:Envelope>
    But source is single.. I try ed multi mapping but synchronous scenario it will not working. 
    I am trying to generate both message types as single message type in XSLT mapping target side and will give service interface as dummy in ESR.
    Please guide how to generate 2 message types as single message type in XSLT mapping...
    Thanks,
    Venkat

    Hi Venkat,
    I suggest to produce a complete SOAP message in message mapping. Import the SOAP XSD from [http://schemas.xmlsoap.org/soap/envelope/] as external definition and use it as target message in message mapping. You need at 2 mapping programs in order to produce the message. The first mapping creates header and body. In the second mapping use "Return as XML" to map the header and body nodes to the SOAP envelope.
    In the SOAP receiver communication channel, you need to activate the parameter "Do Not Use SOAP Envelope", see [Configuring the Receiver SOAP Adapter|http://help.sap.com/saphelp_nw04/helpdata/en/29/5bd93f130f9215e10000000a155106/content.htm].
    Regards, Martin

  • How to use XHeaderName1 in SOAP header

    I have a scenario in which im passing the target URL of a webservice dynamically in my mapping udf.
    I have to pass the URL to the TServerLocation parameter in SOAP header. But the error i get is that the URL is too long for TServerLocation. So i have to split it and send it using XHeaderName1,XHeaderName2 and XHeaderName3.
    Can anyone tell me how to do this.
    i saw this blog which gives me some idea but still my scenario is not working
    /people/william.li/blog/2006/04/18/dynamic-configuration-of-some-communication-channel-parameters-using-message-mapping
    please Help

    Hi Sivasakthi Danasekaran,
    URL is an environment variable I think it will take 256 charecters only. You need to split it compulsorly.
    Reward points if needful.
    Thanks,
    RamuV

  • How to get SAMl assertion from SOAP Header and propagate user context to BW

    Hello to all,
    we implemented this scenario:
    3rdparty System to SAP PI 7.11 to SAP BW.
    sync. communication via SOAP Sender adapter and Receiver XI PROXY.
    We get a SAMl assertion in the SOAP Header from the 3rd-Party System.
    The SAP BW System could not read the Header information.
    How can we get the information of the SOAP Header in the PI System and send the usercontext via XI Proxy to the SAP BW system?
    Can we read the Header information in the SOAP adapter and mapping it to another field in the payload or Headerinformation which could read in the backend system in the proxy class?
    Thanks for your help and regards
    Martin

    Dear Fox,
    Thanks for your reply.
    Is it mandatory to have the Header elements and the message defined in the Mediator wsdl?
    At present I have not defined it in the WSDL.
    Thanks,
    Subin

  • Get data from SOAP Header in udf

    Hi,
    I want to get value of a SOAP header Runtime Field and use it in udf.
    The field I need is <SAP:EOReferenceInbound type="TID">. I think I need to use function getTransformationParameters() but I don't know how to use it.
    Can you help me to retrieve this value of SOAP Header in a mapping ?
    Thank you.

    Check this blog: /people/william.li/blog/2009/07/30/how-to-read-soap-header-information
    Make sure that your message structure is defined properly so that it even includes the header fields...otherwise it will throw an error....once you get the value in the field then transfer it as you like using the mapping.
    From the above blog:
    The SOAP sender communication channel gives us an option to send the complete SOAP XML, including the header. Then, we just
    need to construct a message type in the Enterprise Service Repository (ESR) or Integration Repository (IR) to represent the XML.
    With that, message mapping can be performed.
    Regards,
    Abhishek.

  • SOAP Header modification.

    Hello All,
    Please help me. I am trying to use the following scenario RFC to XI and SOAP to post the message.
    I am getting all the info I need in RFC, but the problem is I have to modify the Header fields. The SOAP system is expecting custom parameters in Header and Body (envelope). I know we can do this using ‘Do not use SOAP envelope’ in communication channel check box. My problem is how can I map for header and as well as body.
    Please help me as soon as possible.
    Thank you very much and have a nice day.

    Hi,
    Check out this threads
    Re: XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header
    SOAP Adapter: DO not use soap envelope
    Thanks,
    Prakash

  • Accessing SOAP header information in a custom adaptor module

    Hi Guys,
    Could anyone point me in the direction of information on how to access the SOAP:Header element when writing a custom adaptor module for a http/ SOAP communication channel?
    I'm trying to add some WS-Security stuff which isn't available in XI 3.0.
    Many thanks,
    John

    The solution is as follows:
    Mark as Do Not Use SOAPEnvelope in the communication channel.
    It may be possible to use the SAP implementation of MessageFactory, SOAPEnvelope etc., I forced XI the Apache Axis implementation, a thread on which can be found here Link: [Accessing SOAP header information in a custom adaptor module;
    The SOAP Envelope is created by
    javax.xml.soap.MessageFactory mf= org.apache.axis.soap.MessageFactoryImpl.newInstance();
    This doesn't work it creates a com.sap.engine.services.webservices.jaxm.soap.SOAPMessageImpl
    org.apache.axis.message.SOAPEnvelope env = new org.apache.axis.message.SOAPEnvelope();
    org.apache.axis.Message iSoapMessage = new org.apache.axis.Message(env);
    SOAPMessage sm = iSoapMessage;
    SOAPBody iBody = se.getBody();
    if(iBody!=null)
         iBody.addDocument(iDoc);
         addDocument failed for some reason when called in XI returning
         Exception caught by adapter framework: Exception in method process.
         The code below is copied straight from the addDocument method, but it works.
         org.w3c.dom.Element iDocRoot= iDoc.getDocumentElement();
         org.apache.axis.message.SOAPBodyElement bodyElement = new org.apache.axis.message.SOAPBodyElement(iDocRoot);
         iBody.addChildElement(bodyElement);
    In order to get a document representation of the Envelope you can use
    Document iEnvelopeDoc = ((org.apache.axis.message.SOAPEnvelope)env).getAsDocument();
    You are now in a position to add or adjust the SOAP Envelope as your require. It enabled me to add WS-Security information to a message.
    It is normally possible to use javax.xml.transform.Transformer on the various classes SOAPEnvelope, SOAPBody etc. as they implement Node. However doing this in XI caused a crash.
    The final document can be then be set in the xmlPayload before being sent out the door.
    Hope this helps someone,
    John

  • Adding values to XI Soap Header

    Hi All,
    We have scenario, Soap to RFC. We are generating the wsdl for the ICO. We want the end system to send some values in the soap header(XI Soap header). We have used the keep header in the sender soap communication channel and added the value to the variable binding. When we generate the wsdl, there is no header in wsdl. We can only get the body.
    Kindly let us know if what we are doing is correct.
    Also please let us know how it can be  done.

    Hi,
    We want the end system to send some values in the soap header(XI Soap header). We have used the keep header in the sender soap communication channel and added the value to the variable binding. When we generate the wsdl, there is no header in wsdl. We can only get the body.
    Checking the Keep Header option will only include the XI header as part of the response message. It will not be included in the request message. The variable binding allows you to place three variable headers (HTTP Headers) that you can use in dynamic config, it will not populate the SOAP Header at all.
    If there is information in the SOAP Header that you need, you might as well run it in noSOAP mode by checking Do Not Use SOAP Envelope in your sender CC.
    Regards,
    Mark

  • XI APIs to access SOAP Header Tags

    Hi Forum,
    The way we use DynamicConfiguration class from com.sap.aii.mapping.api.* API, to access file names etc,
    is there classes available for accessing other tags in the SOAP Header, for example ReliableMessaging, PerformanceHeader, etc

    U can look into Adapter Specific attributes for soap adapter also. If you want to transfer header fields, set the relevant indicator for Variable Header in the SOAP communication channel. This is generic for header fields. Not sure about the particual fields
    Regards,
    Prateek

  • Jdev web service and SOAP header

    Hello,
    How can I implement a web service in jdev that extracts some elements from the SOAP header ?
    How can I implement a web service proxy in jdev so that it inserts elements in SOAP header?
    Thank you.
    The operation WSDL looks approx like this:
              <operation name="SoapDDXML">
                   <soap:operation soapAction="someaction"/>
                   <input>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="psXML"/>
                   </input>
                   <output>
    <soap:Header>
    <OurCredentials xmlns="ns">
    <UserName>string</UserName>
    <Password>string</Password>
    </OurCredentials>
    </soap:Header>
                        <soap:body
                             use="encoded"
                             namespace="ns"
                             encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                             parts="Result"/>
                   </output>
              </operation>

    Hello,
    When using OracleAS/JDeveloper 10.1.3.x you are creating Web Service using the standard JAX-RPC API. This API uses the SOAP with Attachments API for Java (SAAJ) to manipulate SOAP messages.
    When dealing with SOAP Header, it is common usage to use the notion of "handler" to set/read header from the messages.
    The chapter "Using JAX-RPC Handler" is a good point to start to see how do deal with this requirement,
    When manipulating the header in the handler, the code will look like:
    SOAPHeader header = message.getSOAPHeader();
    Name headerName = soapFactory.createName("OurCredentials", "ns", "http://schemas.xmlsoap.org/soap/encoding/");
    .. // add sub element
    SOAPHeaderElement headerElement = header.addHeaderElement(headerName);also..
    Could you specify the version of JDeveloper and the type of Web Service that you are using when ascking a question on the forum it help community member to provide a better answer.
    Regards
    Tugdual Grall

  • Archiving of Soap header part for a synchronous interfaces

    We have a requirement where we have to retain the soap header details for a longer period for tracking purpose. So is there any option of archiving only soap header part from the message for a synchronous interface.
    More Information about the requirement:
    1. We will be passing some parameters to the XI Soap header.
    2. In the WSDL we will add the header fields, so that the end system can populate them.This is done for tracking and searching the message, end to end.
    3.  Another thing to note, is that, for synchronous messages the payload will not be available (without enabling logging), Can we search the messages using the values in the header?
    4. The above process is done, keeping in mind that when the messages are archived, the XI soap header will be the only thing that will be archived and not the whole payload, and the messages that are archived can be searched or retrieved based on the values in the XI Soap header.
    Regards
    Nitya

    Hi,
    Glad to hear that you solve this issue, thanks for your sharing.
    Thanks,
    Linda Li
    Linda Li
    TechNet Community Support

  • SOAP header information [continued]

    Dear,
    It all started here Get SOAP header information
    The fact is that I get the WSDL delivered and I need to upload that into the ESR.
    Next step is to create/generate a Service Interface.
    What I see in the WSDL binding
    After I generated a Service Interface
    Where is my SOAP header part? It seems to be gone in the Service interface?
    I tried this for both SOAP 1.1 and 1.2. Both the same phenomenon.
    Any suggestions?
    Thanks a lot
    Kind regards, Dimitri

    Hello Dimitri,
    Have you got any solution of the issue ?
    I think William's blog answer's that :
    http://scn.sap.com/community/pi-and-soa-middleware/blog/2009/07/30/how-to-read-soap-header-information
    However, It suggests to modify XML structure for sender interface as well. By doing so , it gives other challenge as described below :
    If we modify the message structure , it changes the WSDL as well and generating request message something like below :
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aif="urn://transport.nsw.gov.au/test/poc/aif">
      <soapenv:Header/>
      <soapenv:Body>
          <aif:Envelope>   <------- Added by Modifying the structure
             <Header>
                <FileType>?</FileType>
             </Header>
             <Body>
                <BusinessPartner>
                   <!--Optional:-->
    How can we use  "Do not use SOAP Envelop" feature without modifying the WSDL structure?
    If we don't modify the message structure , it is failing to identify the receiver and also we would not be able to see the fields while doing graphical mapping.
    Let me know if you got any other alternative.
    Thanks & Regards,
    Dijesh Tanna

Maybe you are looking for