Sender SOAP Adapter - how to avoid changes of URL for diferent environments

Dear experts,
we have a concern with transports of PI objects in our environment.
Situation:
When we transport SOAP Sender objetcs in PI from Dev to Test the URL (Endpoint) changes automatically the hostname and the business system (target system in SLD). For example:
In Development to call the Web Service (Sender SOAP Adapater):
http://sappid1.evonceib.local:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=EvonceOSB_PEMP_D&receiverParty=&receiverService=&interface=PEMP_PagadoresMaintain_Async_Out_WS&interfaceNamespace=urn%3Aonce%3Asppemp%3Amanagedatosdepagadorpa_in_pemp
In Test to call the Web Service (Sender SOAP Adapater):
http://sappit1:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=EvonceOSB_PEMP_T&receiverParty=&receiverService=&interface=PEMP_PagadoresMaintain_Async_Out_WS&interfaceNamespace=urn%3Aonce%3Asppemp%3Amanagedatosdepagadorpa_in_pemp
Problem:
The consuming side only wants to have one endpoint and don't want to touch the development when transporting the consumer. Generally to find a work around via DNS aliases for the hostname should solve the prefix of the URL, but how to handle the difference of Business Systems senderService=EvonceOSB_PEMP_D and senderService=EvonceOSB_PEMP_T in the URL?
In the SLD I can not maintain two BS with the same name, when I do not define a transport target the import fails.
So anybody has an idea how to get exactly the same URL for diferent environments?
Thank you in advance,
Best Regards,
Karsten Blankenstein

Hi ,
It is recommended to use different environmemt for Dev,testing,Production. So your PI server host name and port will be different for every environment.
So URL will differ.
however if you dont want to change Business system Name then go for BUSINESS SERVICE/COMPONENT instead of BUSINESS SYSTEM. It will be same in every environment and also dont need to maintain anything in SLD

Similar Messages

  • Change Queue Name in Sender Soap Adapter (or make it dynamic)

    Hello SDN!!!!
    We have a scenario where we want to make a message EOIO and I have set the Queue Name in the Sender Soap Adapter and this works great. BUT it is needed to have a more specific queue name (based on order numbers not interface name) So with this being said, Is there any way to change the queue name or append to it from the Soap Sender Adapter. I see it is possible to write a Module Bean, but the Message object returned from the ModuleContext is a scaled down version of the normal message object. Any help would be greatly appreciated
    Cheers
    Devlin

    Is this the only way to change the queue name for Soap Sender? I don't think it is possible for them to do this, as their urls are static when calling us

  • How to use Basis Authentication in Sender SOAP Adapter

    We implemented one Sender SOAP Adapter and we had to implement the modified WEB.XML method to remove the security specification.  We have now asked the developer to correct this situation so we can remove this modification.  The Interface developer would like to use Basic Authentication. If you have an automated interface sending in a SOAP Message, how do you do Basic Authentication? 
    I've tried using:
    http://host:port/XISOAPAdapter/MessageServlet?channel=:<Service>:<Channel>&sap-user=xiappluser&sap-password=<Password>&sap-language=EN&sap-client=<Client>
    When I do this, I still get the Authentication Pop-Up Window.
    How does the Sending Interface either supply the ID and Password on the incoming SOAP Message or respond to the Authentication Pop-Up?
    Thanks,
    Anne

    By Defualt the web service exposed by you will use Basic Authentication mode only.
    But the way you do Basic Authentication in the web client is platfrom dependent.
    This is not the way to do Basic authentication
    http://host:port/XISOAPAdapter/MessageServlet?channel=:<Service>:<Channel>&sap-user=xiappluser&sap-password=<Password>&sap-language=EN&sap-client=<Client>
    I am providing you a code snippet on how to Basic Authentication in Java when making the Web Service Call.
    If the client is on some other platform just look for the corresponding api.
    Please award points if you find this answer useful.
    Code Snippet
    URL url = new URL(URL);
    URLConnection connection = url.openConnection();
    if( connection instanceof HttpURLConnection )
    ((HttpURLConnection)connection).setRequestMethod("POST");
         //connection.setRequestProperty("Content-Length",Integer.toString(content.length()) );
         connection.setRequestProperty("Content-Type","text/xml");
         connection.setDoOutput(true);
         String password = User + ":" + Password ;
          //Where con is a URLConnection 
         connection.setRequestProperty ("Authorization", "Basic " + encode(User + ":"+ Password));
         connection.connect();
    Encode Method
    public static String encode (String source) {
    BASE64Encoder enc = new sun.misc.BASE64Encoder();
    return(enc.encode(source.getBytes()));

  • How to build in user authorisation in sender soap adapter

    HI ,
    how can i built the user authorisation in sender soap adapter. either in a url or somewhere on the server .
    if anyone has an idea do let me knwo
    Thanks
    Nikhil

    Nikhil,
    <b>sender soap adapter</b> is used for ex in the case, u need some data from the DB say of a vendor. U give the name of the vendor in the site, suppose u get the contact address of the vendor from the DB.
    Sender soap adapter sends the soap request from the client to XI and from XI the request is passed to DB.
    With XI, WSDL file is generated and SOAP request is generated for the WSDL file. When the WSDL is deployed on the client application, the authorization is handled.
    For receiver SOAP adapter, it is the otherway round u r getting the data from the DB first and so the authorizations are held in XI.
    -Naveen.

  • How  Sender SOAP Adapter will retriew the data  to process further

    How  Sender SOAP Adapter will  receive the data  to send the integration server to process further

    Hi,
    1. All details are always taken from the Sender Agreement.
    For the Sender File adapter and the Sender SOAP adapter , the details that include are , Sender Service, Sender Interface Name and namespace and these are the details that make up the SOAP header when the message hits the integration Engine.
    Once the corresponding Adapter for the message is identified, ie. the Sender SOAP adapter , the message for the SOAP header is then taken from the Sender Agreement of that adapter. This is the exact reason why one Sender Adapter can be involved in one and only one Sender Agreement.
    Regards
    Bhavesh

  • How to catch the sender SOAP adapter http response?

    Hi eXperts,
    I've a sender soap adapter opened to customer as webservice. When customers call this webservice, data is coming into XI and works fine. But the customer is complaining that the expected HTTP 200 response is not sent back to the calling SOAP client.
    So my question is: Is there a way to catch the http 200 response from sender adapter, or at least get to know if the sender adapter has sent the response?
    Thanks in advance.
    Regards
    Luis

    Hi,
    If I understood it correcly... Sender is a Async SOAP call and the sender system is expcting a status back of HTTP 200. Are you sure you had set the quality of effort to Exactly Once? If not please try setting it.
    You can also go to Adapter monitoring or Communication channel monitoring in the Runtime workbench and see if the Sender SOAP adapter is fine.
    http://help.sap.com/saphelp_nw04/helpdata/en/5e/164442c1a1c353e10000000a1550b0/content.htm
    Thanks,
    Prakash

  • Reading parameters from Query string : Sender SOAP adapter.

    Hello Experts,
    I have a SOAP to SOAP scenario. Here we will have multiple receivers and dynamic receiver determination is needed.
    The sender will send a Value in Query string of URL to sender SOAP adapter. This value in Query string parameter will decide the receiver at runtime.
    I need to know, how can we read values from Query string of incoming call? I did tried to search blogs & forum threads but unfortunately not able to hit the right links.
    Any inputs will be of great help.
    Should i use "Use Query String" on sender soap channel? I tried it, but i was not able to find any query string parameters in SOAP header or payload.
    Please guide me, its bit urgent.
    Regards,
    Abhi.

    > But the argument provided from their side is: They are using standard XSD and this service is provided out of box with sender application.
    If they can add a URL parameter, they can also add a field to the structure.
    > They cant control the value mapping of parameters in payload to the extent required to implement this change.
    Adding a new field to the structure would not affect any existing mapping.
    > Since they have this custom requirement of multiple receivers & receiver to be determined at runtime, they need to go for Query string.
    This can be done based on any field of the payload.
    > I need to find a way to read the query string in any case.
    This is not supported by SOAP adapter.
    > Can I use one of the header parameters to be mapped to this value  (By selecting "Use Query string" & "Keep Headers" flag in sender CC) & then extract this value from header using Dynamic configuration ?
    This feature works only for XI header fields, like message ID or QoS.
    Not for individual parameters.

  • Sender SOAP Adapter, inconsistent behavior

    Hi,
    We are using XI 3.0 SP17. We have noticed some inconsitent behavior with the sender SOAP adapter:
    When sending a valid SOAP message to the adapter, it will reply with:
    <SOAP:Envelope xmlns:SOAP='http://schemas.xmlsoap.org/soap/envelope/'><SOAP:Header/><SOAP:Body/></SOAP:Envelope>
    To me this seems errornous, becuase it is missing "<?xml version='1.0'?>" in the beginning, and thus is not valid XML. This leads to errors on the Client that is sending messages to the Sender SOAP adapter.
    When sending an errornous SOAP message from the client to the XI Sender SOAP adapter, the error message does include the "<?xml version='1.0'?>" + the corresponding error message, so the behavior seems inconsitent and errournous.
    Can someone tell me how the get the Sender SOAP Adapter to include "<?xml version='1.0'?>" in the reply for valid SOAP messages?
    Thanks for any help on this subject!
    -Hans
    PS: Here is an example of an error message from the Sender SOAP adapter, that does include the xml header:
    <?xml version="1.0"?>
    <!-- see the documentation -->
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
         <SOAP:Body>
              <SOAP:Fault>
                   <faultcode>SOAP:Server</faultcode>
                   <faultstring>Server Error</faultstring>
                   <detail>
                        <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                             <context>XIAdapter</context>
                             <code>MalformedMessageException</code>
                             <text><![CDATA[Unexpected content in SOAP:Body; nested exception caused by: com.sap.aii.messaging.util.XMLScanException: Unexpected content in SOAP:Body\tat com.sap.aii.messaging.mo.Message.reparseRootDocument(Message.java:1014)\tat com.sap.aii.messaging.net.MIMEInputSource.readSOAPPart(MIMEInputSource.java:619)\tat com.sap.aii.messaging.net.MIMEInputSource.decodePart(MIMEInputSource.java:611)\tat com.sap.aii.messaging.net.MIMEInputSource.readBody(MIMEInputSource.java:379)\tat com.sap.aii.messaging.net.MIMEServletInputSource.parse(MIMEServletInputSource.java:58)\tat com.sap.aii.af.mp.soap.web.MessageServlet.doPost(MessageServlet.java:378)\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:760)\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:853)\tat com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:390)\tat com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:264)\tat com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:347)\tat com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:325)\tat com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:887)\tat com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:241)\tat com.sap.engine.services.httpserver.server.Client.handle(Client.java:92)\tat com.sap.engine.services.httpserver.server.Processor.request(Processor.java:148)\tat com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)\tat com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)\tat com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)\tat java.security.AccessController.doPrivileged(AccessController.java:180)\tat com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:100)\tat com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:170)          ]]></text>
                        </s:SystemError>
                   </detail>
              </SOAP:Fault>
         </SOAP:Body>
    </SOAP:Envelope>

    Hi,
    "Do not use SOAP Envelope" is not really an option for us.
    From help.sap.com:
    If the indicator is set, the adapter expects a message without a SOAP envelope.
    If you have set the indicator, you must also enter nosoap=true in the URL.
    The adapter then puts the whole message in the XI payloads
    So this also requires heavy changes to the client side. It would almost make more sense to use the plain HTTP adapter in that case..
    -Hans

  • Duplicate check not working in sender soap adapter

    Hi guys,
    I have an urgent problem.  I am using a Sender Soap Adapter (quality of service Best Effort) to receive certain web services requests and send back synchronous responses.
    I have ticked the parameters "Use Encoded Headers" and "Use Query String" to implement duplicate check.
    For this reason I am expecting XI to return errors of the following type when the sender systems posts duplicates:
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="PERSIST">MSGGUID_EXISTING</SAP:Code>
      <SAP:P1>D00B71AC7AEBDEB3E011E5E43C49D97B</SAP:P1>
      <SAP:P2>CENTRAL</SAP:P2>
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Message ID D00B71AC7AEBDEB3E011E5E43C49D97B for pipeline CENTRAL, version already exists in system</SAP:Stack>
      <SAP:Retry>N</SAP:Retry>
      </SAP:Error>
    However, although the duplicates go into an error status, the system is responding with the following message:
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="BPE_ADAPTER">SYSTEM_FAILURE_INTERNAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>An internal error has occurred</SAP:Stack>
      <SAP:Retry>N</SAP:Retry>
      </SAP:Error>
    Can anybody tell me how to force XI to return a message type "MSGGUID_EXISTING" when it catches duplicates?  Or if there is any configuration I can change?
    Many thanks,
    Aldo

    OK, this problem is resolved.
    XI seams to send the error SYSTEM_FAILURE_INTERNAL the first time it receives a duplicate message and sends the MSGGUID_EXISTING error on the following attempt to post the same message.
    Cheers.
    Aldo
    Edited by: Aldo Lazzarini on Sep 23, 2011 6:50 AM
    Edited by: Aldo Lazzarini on Sep 23, 2011 6:53 AM

  • Remove authentication in sender soap adapter pi 7.1

    Hello
    Did anyone manged to remove authentication in PI 7.1 sender soap adapter?
    I have updated file web.xml in the file com.sap.aii.adapter.soap.war
    and now I want to deploy it,but I dont have any sda in the folder
    thx
    Shai

    hi Shai,
    just something to try in case:
    you don't need any java parameters of SOAP sender
    you can try approach from Stefan:
    /people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine
    and then:
    1. in SICF copy the engine service to a new one
    2. put the credentials for this new service inside SICF
    then you will have sender SOAP adapter without a password right?
    I didn't try it but I guess it would work without
    crashing the whole original SOAP sender adapter by
    making changes into web.xml
    Regards,
    Michal Krawczyk

  • Special characters in sender soap adapter provoke HTTP 500 error

    Hi,
    SAP R3 is sending a SOAP message to PI through SOAP adapter.
    When the payload does NOT contain german characters like ü, it works fine.
    However, when the payload DOES contain special characters, the SOAP adapter replies with an HTTP 500 code error.
    If I use SoapUI to send the soap message, and setting UTF-8 as the encoding in the program options, it will go through fine. If I change to ISO-8859-1 it will fail.
    I'm thinking in two options:
    - Make sure that SAP R3 sends the message in UTF-8 format (I think this is happening currently), as if SoapUI works, then probably R3 is not using UTF-8.
    - Force the adapter to use UTF-8. Is this possible? In the sender SOAP adapter I've added AF_Modules/MessageTransformBean (type local EB), and then Transform.ContentType for parameter name and --> text/plain;charset=utf-8 for parameter value. The sender adapter will fail then for every message, with or without special characters.
    Anyway, in this link (http://help.sap.com/saphelp_nwpi71/helpdata/EN/a4/f13341771b4c0de10000000a1550b0/frameset.htm) it seems to say that the sender soap adapter cannot be extended with modules, so maybe that's the reason why it fails when trying to add a module.
    Thanks

    If I use SoapUI to send the soap message, and setting UTF-8 as the encoding in the program options, it will go through fine. If I change to ISO-8859-1 it will fail.
    I'm thinking in two options:
    Check the use of option 1 ..... the URL which SAP is using to send the data can containe the encoding information.
    Check this SAP note: https://service.sap.com/sap/support/notes/856597
    From the above note:
    Q: What character encoding is supported by the SOAP sender adapter?
    +you can supply the encoding information with the xmlenc variable in the request URL as in+
    Regards,
    Abhishek.

  • Sender Soap Adapter PI 7.1

    Hi All
    We just installed a PI 7.1 Server. When I want to use the sender Soap adapter's Default XI Paramater they are not there. Is this because were only on SP 4? Can I still use the adapter as is or do we need to upgrade to a higher SP?
    Any input will be appreciated.

    Hi Stephan.
    Some SOAP Adapters Parameter changed in this PI Version. 
    You can see the SOAP characteristics in the link bellow:
    http://help.sap.com/saphelp_nwpi711/helpdata/en/44/8c4756224a6fb5e10000000a155369/frameset.htm
    Regards.
    Bruno

  • Sender SOAP Adapter with Https

    Hi,
    can any one give me information on  how my Sender SOAP adapter to be configured with HTTPS port.
    please give me the what are all different ways to make my Sender SOAP Adapter secure and give me the steps to achieve the functionality.
    Thank You,
    Madhav

    check this section:
    http://help.sap.com/saphelp_nw70/helpdata/EN/14/ef2940cbf2195de10000000a1550b0/frameset.htm
    Also some help from SAP note:
    https://service.sap.com/sap/support/notes/891877
    Regards,
    Abhishek.
    Edited by: abhishek salvi on May 29, 2009 1:59 PM

  • Sender SOAP Adapter Modules!

    Hi Can anyone guide me how to write a Sender SOAP adapter module ?

    Hi Pooja, thanks for the reply I have seen that.
    Please look at the below forum.
    SOAP Adapter and plain HTTP
    It  says "When you write a module for sender SOAP adapter, you have to deal with the incoming message, as the SOAP adapter first calls the customer module, then creates the XI message."

  • Sender SOAP adapter: get soap header data

    Hi,
    I've been going through various posts and blogs here on SDN + looked in the how to guide for SOAP adapter, but still find it quite difficult to actually find out how to do it. I've tried to follow recommendations seen, but it doesn't add up.
    So can someone please tell me how to get an element situated in the SOAP header of the request sent to XI via sender soap adapter?
    Let's for instance say the request looks like this:
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <SOAP-ENV:Header>
              <SSN>1234567890</SSN>
         </SOAP-ENV:Header>
         <SOAP-ENV:Body>
              <event>
                   <elem1>data 1</elem1>
                   <elem2>data 2</elem2>
                   <elem3>data 3</elem3>
              </event>
         </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    How can I get the data in the SSN-header element at mapping time?
    I'm sure this can be done by using adapter modules as the first step adapter, but I prefer doing it at mapping time if possible.
    Best Regards,
    Daniel

    I solved it on my own now. My missing link was the fact that I'm using XMLSPY to send request and thus need to replace all '&amp;' with & in Connection Endpoint.
    Message was edited by:
            Daniel Engsig-Karup

Maybe you are looking for