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.

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

Similar Messages

  • Does BPM - for a synchronous interface have a performance bottleneck

    Hi All,
    Just have a small query.
    We have a scenario in which we need to receive PO details from a legacy system, create a sales order in ecc and send back a response table to the legacy system.
    Our understanding is that this can be acheived using synchronous ABAP Proxies and also involves BPM and Abstract mappings.
    I beleive that this should not pose any problems. My concern here is that we are confused as to whether BPM would have bottlenecks with performance. Do we have any SAP document or article which mentions that for synchronous interfaces BPM is the only way to go and this would not have a significant impact on the performance.
    Another approach to the problem would be to create an asynchronous inbound proxy, write ABAP code within it and call a seperate outbound asynchronous proxy within the inbound proxy method. This approach looks and sounds very clumsy.
    Kindly let me know your thoughts or any links which would be useful.
    Thanks & Regards,

    Hi Aashish,
    Thanks for your quick reply. it was helpful, but i am not using RFC's. Correct me if i am wrong, but i have explained the scenarios in detail below.
    Scenario 1. Synchronous
    1) PI Picks file from a common folder.
    2) PI does a data mapping and sends the data to ECC.
    3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
    4) The abap proxy code executes a function module and sends the response as an internal table back to PI.
    5) PI receives the response and places it in a text/csv file and places it back to another folder.
    I assume that the above would be possible only using BPM. What i understand is that in order for an interface to receive and send data, abstract mappings are to be used, and for this BPM is required. We do not have any conversions etc. its just a simple matter of receiving an internal table from ECC and creating a file to place in the folder.
    I also understand that BPM could have bottlenecks due to queue and cache issues, messages might be pending, or lost etc.
    Scenario 2. Asynchronous
    1) PI Picks file from a common folder.
    2) PI does a data mapping and sends the data to ECC.
    3) ECC contains an inbound interface which receives the data and in which abap proxy code is written.
    4) ABAP Proxy code executes the same function module and calls a seperate outbound interface and passes the values to it. This would be used in sending the response back.
    5)  PI receives the response from the second interface and places it in a text/csv file and places it back to another folder.
    I would like to know which would be the better approach. Documentation/references to support your claims would be much appreciated.

  • How to pass  soap header variable for invoking siebel service in BPEL

    I am invoking siebel service in soa composite. siebel service have header variables username/password and session type. I have created global variable (message type) in BPEL anddeclare same in messages port in siebel wsdl. after that I passed the username/password and session type as hard coded in assign activity. I have deployed and tested this but, I have an exception like Error Code: 10944642 Error Message: Error: Inbound SOAP Message - Session Token is missing or invalid or has expired
    Can you please help on this..

    check this thread
    HTTP Header parameters in iView.
    May help you

  • Sending a SOAP response immediately upon receipt - synchronous interface

    We have an outbound synchronous SOAP interface on XI which is called by a sender system. Although the process is asynchronous, the sender system can only handle synchronous web service calls (apparently some limitation of that system).
    What I would like XI to do is send a response immediately upon receipt of the message and then continue with the BPM (so not waiting the completion of the BPM before sending back the response).
    Does anyone know the procedure for doing this?
    Thanks. Best regards,

    yes you can do this in a BPM using synch-asych bridge.
    here is the link which describes more(Using a Receive Step to Open a Sync/Async Bridge)
    Message was edited by: Naveen Pandrangi

  • Multiline for a synchronous interface

    Iam stuck with a webservice issue,
    Scenario is File <->BPM <-> Webservice <-> BPM <-> Merge (File + WS) <-> Send
    We have to make one sync call per order number (msg), right now the BPM is working for 1 call only. how can we mitigate this issue? iam not able to use multi mapping/ multiline container since its a synchronous call.
    Thanks for all your help.

    Check the use of ForEach block in the BPM: /people/milan.thaker/blog/2008/08/05/modes-in-block-step-of-bpm
    After the Send step (in the ForEach block) have a Container Operation whose job will be to perform an Append action so that each message received will be appendedand you will get one single message when all the calls are completed to the WS.
    If Sync call doesnt work then you will have to split the sync call into an Async Send and Async Receive calls....

  • XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header

    Hi Folks!
    My scenario is that I have to send a synchronous SOAP message to an external receiving system which expects certain processing information in the SOAP header. That external system then synchronously sends back a response SOAP message to tell me the processing results of my request message.
    The How-To Guide SOAP Adapter says that for the request message I have to create the whole SOAP Envelope (SOAP Enevelope, Header and Body) on my own within the mapping and that I have to remove the SOAP header in the response message. Unfortunately this guide does not tell me how this can be realized.
    In other SDN threads I've read that this can be achieved by using XSLT mappings. Unfortunately I have never done this before and currently I have no clear idea how to do this. And to be honest: I am everything else than an XSLT expert (historically I'm coming from the ABAP part of SAP R/3).
    My plan is to create the request payload using the graphical mapping tool and to add an XSLT mapping as 2nd mapping to build the SOAP "overhead" around the payload.
    For the response my plan is to first use XSLT mapping to remove the SOAP "overhead" from the response message and then use the graphical mapping to handle the payload.
    1. Is this possible?
    2. How can I achieve this?
    3. Can anybody send me an XSLT mapping sample to create a SOAP envelope, header and body around the payload for the request message?
    4. Can anybody send me an XSLT mappping sample to remove the SOAP envelope, header and body around the payload for the response message?
    Because I'm everything else than an expert in XSLT mappings, some kind of a "click guide with samples" would be VERY GREAT!
    Thanx in advance to anybody who will help me!!! For real help maximum points are guaranteed.
    mail: [email protected]

    Hi Volker,
    Try this XSLT code, chanfe the TODO part.. add the SOAP header part. Save it as .xsl. ZIP it and import it in the Imported archive. Please test it I have'nt test the code as I dont have a system access now.
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="" xmlns:fo="">
    <xsl:template match="/">
    <soap:Envelope xmlns:soap="" xmlns:xsi="" xmlns:xsd="">
    <Header xmlns="">
    --- TODO -
    <xsl:copy-of select="*"/>
    For the rest have a look at this thread
    SOAP Adapter: DO not use soap envelope

  • Generating Web Service with SOAP Header

    I have a WSDL for a web Service using document encoding and with a soap header.
    I generate a jws file using WL Workshop 81.SP4 but I always have this error message :
    ERROR: AjoutContactService.jws:13: The binding for AjoutContact does not declare one part.
    ERROR:      SUGGESTION: A document literal binding must have at most one part. Make sure you have a WSDL that declares just one part for each message with a document literal binding.
    The header is a recent adding on an existing Web Service, and I can't change the wsdl definition. I also need to use data contained by the header in conjunction with data in the body.
    Is it a limitation with workshop or a problem with with my binding file ?
    I give sample of my two wsdl files.
    Given wsdl file
         <wsdl:message name="inputAjoutContact">
              <wsdl:part name="body" element="xsdin:NouveauContact"/>
    <wsdl:part name="header" element="xsdinhead:EnTeteRequete"/>          
         <wsdl:message name="outputAjoutContact">
              <wsdl:part name="body" element="xsdout:StatutAjoutContact"/>
         <wsdl:message name="faultAjoutContact">
              <wsdl:part name="body" element="xsdfault:Exception"/>
         <wsdl:portType name="AjoutContactPortType">
              <wsdl:operation name="AjoutContact">
                   <wsdl:input name="ParametresEntree" message="tns:inputAjoutContact"/>
                   <wsdl:output name="ParametresSortie" message="tns:outputAjoutContact"/>
                   <wsdl:fault name="ParametresException" message="tns:faultAjoutContact"/>
    binding file
              <wsdl:operation name="AjoutContact">
                   <soap:operation soapAction="urn:#AjoutContact"/>
    <soap:header part="header" use="literal"/>
    <soap:body parts="body" use="literal"/>
                        <soap:body use="literal"/>
    <fault name="ParametresException">
    <soap:fault use="literal" name="ParametresException" />

    This appears to be a known limitation and is addressed by CR227689
    which has a workaround that needs the wsdl to be modified.
    I am not sure if this is possible given that we don't control the wsdl most times.
    Could you please open a BEA support case and refer to CR227689?
    I found some info on the issue which could help:
    1) Refer to <>
    you will see that only one part is allowed in the message part for doc/literal webservices Snippet from the above link
    "Also, keep in mind that WS-I BP permits only one <part> on document/literal messages, so to be WS-I compliant, you would have to include it in the message structure. "
    2) Refer to <>
    below R2208)
    "For document-literal bindings, the Profile requires that at most one part, abstractly defined with the element attribute, be serialized into the soap:Body element."
    This implies Soap body contains message which contains a at most one part.

  • SOAP header information [continued]

    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 :
    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="" xmlns:aif="urn://">
          <aif:Envelope>   <------- Added by Modifying the structure
    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

  • Howto proces SOAP Header with security info

    My incoming Soap messages contain security info in the soapenv:Header part.
    However, I only need the contents of the Body element.
    If I do NOT handle the Soap Message, then an Exception is thrown: something like: 'Do not know how to handle MustUnderstand'.
    So something must be done with the Security info in the header, but I do not know how. Do I have to remove the header completely in the Soap handler, after checking the singning? If somebody can point me to some examples of Soap header processing for this case it would be helpful.
    kind regs.

    Hi Harry
    The header in Soap Messages is optional. Is is used to carry security information, that is security on the level of the Soap message. So when the header of an incoming Soap message is 'handled', the header is of no use any longer and can (must) be discarded. Indeed discarded, because the rest of the handlers don't expect a header in the Soap message. They extract the 'contents' from the body of the Soap message, and deliver that to you backend system.
    I will describe the header handling in the webservice: to get access to the Soap message in your code, you have to write a 'handler' Class. This Class should implement the Handler Interface or extend the abstract GenericHandler Class. To handle only the incoming Soap messages, the 'Requests', the method 'handleRequest' should be implemented. This handleRequest method has 1 parameter (mc) with type MessageContext. This parameter contains the original Soap message in Object format. You can access the original header information via:
    SOAPMessageContext smc = (SOAPMessageContext)mc;
    SOAPMessage message = smc.getMessage();
    SOAPPart part = message.getSOAPPart();
    SOAPEnvelope envelope = part.getEnvelope();
    SOAPHeader header = envelope.getHeader();
    With: Iterator iterator = header.getChildElements();
    you can navigate through the header elements and do whatever you like. If you decide that security info in this header does not match the contents of the body for instance, you can issue an Exception and log it.
    After processing the header you have to discard it with:
    header.detachNode(); and let your handleRequest method return 'true'.
    The rest of the webservice processing takes the contents from the body element, and delivers that to your application.
    To let you webservice make use of your Handler, you have to name it in the web-services.xml as follows:
    <handler-chain name="myChain">
    <handler class-name="a.b.c.MyHandler" />
    <web-service name="MyService">
    <operation ... handler-chain="myChain" .... />
    When the webservice 'MyService' gets a request, the handler 'MyHandler' is automatically invoked. you can have more handlers in a chain. Also you can declare more chains in your <webservices> section and refer to them from the <operation> elements.
    Items of interest:
    May be this of use for you :).

  • Reading contents of SOAP Header

    Hi folk,
    I did some reseach on SDN on how to read the contents of the SOAP header, there were a lot of promising leads but i havn't hit the bull'sEye yet.....
    1.i have a requirement whrein i need to read some contents frm the SOAP header hold on to it and send it back in the respnse.
    2.2nd requirement i have to modify the soap header's contents based on the current date/time and send it.
    Can someone give me some leads/hints on how to achieve this.
    If you can give me the mapping API i need to call in the mapping that will be greatly appreciated!!
    Thank u all.

    some quick facts:
    #1: there is a confusion between HTTP Headers (which is addressed by the Variable Transport Binding option in both SOAP and HTTP adapters) and the SOAP Header (part of the XML message that is the payload of the HTTP Request). Notice that the SOAP Header is not addressable through the Dynamic Configuration of the HTTP Headers.
    #2: in order to read data from the SOAP Header on the outbound (sender) side, you need to:
        #2.1. select the "Do Not Use SOAP Envelope" option in the Sender communication channel (the SOAP Envelope has two subtags, the SOAP Header and the SOAP body, which contains the payload);
       #2.2. in the mapping, you need to consider the whole SOAP Envelope as source message. You could even try to address it through a Message Mapping, given that you have an external message definition (e.g. wsdl, xsd) that defines the SOAP Envelope layout. But it is much easier to handle it through a XSLT or Java Mapping, at a 1st moment, to read the necessary information from the SOAP Header* and to extract the payload from the SOAP Body, and then use your existing Message Mapping in the payload.
    Example of XSLT mapping: Re: XI30 SPS16 - SOAP Sender Adapter - self-defined SOAP-Header (last message)
    You just need to enhance the part where you read the header field you need.
    to recover the read value at a later point, you could use for example a mapping variable (PI 7.1+) or a custom context object (use dynamic configuration to read/write on a custom context object). Notice that Dynamic Configuration works as a custom HashMap, where you can read/write any combination of context objects namespace/technical name. Just define your custom namespace and technical name (e.g. '' and 'MyParam'), fill it in the XSLT mapping** and read it afterwards, wherever you need***.
    Sample code to read/write Dynamic Configuration in XSLT mappings:
    if you want to use this value in a Receiver Determination, you can even use Adapter Metadata to define them as "fake ASMAs": /people/michal.krawczyk2/blog/2006/10/09/xi-dynamic-configuration-in-adapter-modules--one-step-further

  • HttpURLConnection , Response Code : 404 for HTTP method HEAD  302 for GET

    After establishing the connection For the URL : the response code is different for different HTTP METHODS.
    For the method HEAD the response code is 404
    For the method GET the response code is 302
    Ideally according to W3 standards the header part for both methods should be same.
    Unfortunately all the websites are not following the same standards.
    The above brings up an important issue.
    (i.e) soley depending on the HEAD method for checking the validity of the link may fail sometimes even if the link is
    Please put up your comments and observations on this.
    Sample Code
    public static void main(String[] args) {
    URL myurl = new URL("");
    URLConnection connection = myurl.openConnection();
    if(connection instanceof HttpURLConnection) {
    HttpURLConnection httpConnection = (HttpURLConnection) connection;
    System.out.println("Response = "+httpConnection.getResponseCode());
    catch(Exception e) {
    Edited by: rama.krishna on Dec 3, 2007 3:47 AM

    Iam not encountering any problem.It's just a discussion.

  • Item qty totals in header part of ME21N

    hi frnds,
    i need to display the item qty totals in header part. for this i have placed one field in header using screen exist.i need to display in this field only.  where to i write the logic for this. because in that there are 10 function exit. enhancement is MM06E005.
    Points will be rewarded for helpful answers.
    thanks in advance.

    why don't you try badis.
    jaffer vali shaik
    Message was edited by: Jaffer Vali Shaik

  • Http adapter at sender side for synchronous interface

    Hi SapAll.
    here for one synchronous interface we using http adapter at sender side.
    i just want to know on how i can get the sender ip adress or url through which they sending the data.
    will be waiting for best asnwer.

    Http adapter at sender side for synchronous interface
    i cont see any messages in xi producction.
    Is LOGGING_SYNC enabled for your production box....also is the problem just about the visibility of the messages or is your scenario itself not getting executed?
    At least the sender application might have received some error response if posting message to XI was a failure....also if possible check the message monitoring in RWB if you feel an error has occured.

  • Remove XI-part of SOAP Header in Axis Adapter

    Hi folks!
    We are running a PI 7.11 and use the SOAP Axis Sender Adapter in a synchronous SOAP Web Service scenario. Our challenge is that in our response we definitely need a SOAP Header tag, but it should be empty like this <soapenv:Header/> or this <soapenv:Header></soapenv:Header>
    We tried to achieve this with the Axis Handler But regardless of the parameters we provide to this handler it always removes the complete SOAP Header. On sample is to remove the PI-specific Main header tag from SOAP Header:
    We also tried it only with namespace. But always the same sh... happens: The SOAP Header is removed completely.
    Any ideas?
    Thanx very much in advance!

    Hi Stefan!
    Thanx for your reply. We found that Axis handler mentionedby me in SAP Note 1039369 "FAQ XI Axis Adapter" .
    But please tell me how to parameterize the to ensure that the XI part of SOAP header is removed, but not the complete SOAP header.
    Thanx in advance!

  • Access to SOAP header in synchronous SOAP response?

    Scenario: message received via synchronous SOAP adapter call.
    In the response which is sent back to the sender i can influence the SOAP body but not the SOAP header.
    Is there a possibility to manipulate/add/map the SOAP header in synchronous response messages?
    Thank you very much in advance for your hints.

    Hi Christophe,
    per default PI is sending back something like this
    <SOAP:Envelope xmlns:SOAP=''>
              Payload, which can be accessed via mapping
    but required are some fields in the Header tag like:
    <SOAP:Envelope xmlns:SOAP=''>
              Payload, which can be accessed via mapping

Maybe you are looking for

  • Replication of BP from CRM to R/3

    Hi all,       I got a problem in moving the business partner form CRM 4.0 to R/3 backend. In doing so, a mBDoc gets generated with the status 'sent to receivers ( not all have confirmed )' and when i see the error detail, it says 'Make an entry in al

  • After clean install of Mountain Lion 10.8.5 no Gate Keeper and a ton a long list of differences in verify disk permissions after updating to Itunes 12.1

    HI everybody. I have a MacBopok Prop 15" from mid 2012, 2.6Ghz, Intel Core i7, 16GB RAM 1 TB SSD. As my Mac was running as fast as possible it  was getting slower down during start and shutdown, from 2 secopnds to 15 secconds during start and shutdow

  • How can I return the current Date in Java?

    I am new to Java, and basically I want to know how I can return the current date as a variable, so for example, I have declared the following date variable private java.util.Date currentDate;How can I return the current date, do I have to write a met

  • Multiple rebate conditions

    Hi folks: I hope you can shed some light on this issue I am dealing with. We are trying to use rebate agreements in the following situation, but it does not seem to work: The company negotatiates a deal whereby a client gets a Credit Note with a glob

  • Change width of the addremovelist

    hi, how could i change the width of the addremovelist (not the row option). currently the list i have is too long and i would like to make it shorter with a scroll bar. is it possible with the addremovelist? thanks, lee