Mapping Design  - SOAP body content needs to be different between test and production

Hello,
We are integrating with a 3rd party SOAP receiver who uses the same web service URLS for test and production.
So to differentiate they exposed 2 web services which do the same thing but have different root and payload node names...along with account details.
For example, for production our SOAP XML must follow pattern like:
<Envelope>
<Body>
<appRequest>
<userID>produser</userID><password>prodpwd</password>
<appPayload>
<?xml>
blah blah this XML is the same between test and production
</xml>
</appPayload>
etc
But for their testing we must use:
<Envelope>
<Body>
<appRequestTest>
<userID>testuser</userID><password>testpwd</password>
<appPayloadTest>
<?xml>
blah blah this XML is the same between test and production
</xml>
</appPayload>
etc
So I'm trying to think of a good way to handle this difference in one set of mappings that we can use in our 3 PI platforms Dev / Test / Prod
Since these differences are in the SOAP Body does it need handled in mapping or is there a way to handle it in the Adapter Config which is naturally different between our environments (mapping we like to keep the same).
What is a smart way to handle this scenario?
Many thanks,
Aaron

I second Artem when he states that this is a bad design decission from the caller's side.
However this is not gonna help you in the current situation, right?
The problem you are facing is that by poor design the message does not have a root node which you may use to handle occurences. Let me explain further
You would be good if prod message looked like so
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
  <appData>
   <appRequest>
   </appRequest>
  </appData>
</soapenv:Body>
</soapenv:Envelope>
and test message looked like so
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header/>
<soapenv:Body>
  <appData>
   <appRequestTest>
   </appRequestTest>
  </appData>
</soapenv:Body>
</soapenv:Envelope>
--> Then you would have been able to specify occurence of <appRequest> and <appRequestTest> as 0..1
So I think you have (besides what Artem already pointed out) 2 other options:
1. activate "do not use SOAP envelope" on sender SOAP channel and then designing the data types like above
2. Use HTTP instead of SOAP adapter and designing data types like above
Hope I didn't miss something crucial :-)
Cheers
Jens

Similar Messages

  • I need to map my garden.  I need to draw it to scale and locate plants ties to a list of plants.

    I need to map my garden.  I need to draw it to scale and locate plants that ties to a list of plant names.

    A quick google search for gardening apps gave a surprisingly large number of hits. I saw at least three distinct garden planner apps (from $2 to $10) without half trying. These are mostly for iOS - iPad and/or iPhone - though there may be equivalents for Mac OS.
    I suggest you hit the app store and start doing some searches. I suspect you'll find something appealing fairly quickly.

  • Need to establish Connection between CRM  and   Virtual Directories.

    Dear All,
    I am working for Telecom project.
    I have one requirement that we need to establish Connection between CRM and   Virtual Directories.
    This is existing in Access management system.( SAP EP environment )
    The basic requirement is, with  SAP EP environment we are integrating 8 different application. But for all this Application we have a one more system called Access management system (like Basis in Sap). This will validate the user access and BP(Business Partner ) data for users who logon to a different respective application. For all this applications Company data (Master Data) has to provide from CRM and the changes took place for Company data in CRM will be updated in to Virtual Directories .For this service we need to establish Delta mode connection between SAP CRM and Virtual Directories.
    Which is existing in Access management system .
       Do we have any standard connectors from SAP CRM to connect and who we can achieve this .
    Please let us know..Certainly there will be a reward points
    Thanks & regards.
    BNP

    Try posting this question on the BPA Suite forum - http://forums.oracle.com/forums/category.jspa?categoryID=194

  • Replace complete SOAP body content by new string

    Hi,
    can anyone help me with the following problem - I need to replace body content of the SOAP message by a completly different one. I have this new content as a string which represents a part of XML document. I was thinking to configure replace action in this way (suppose that new content is stored in the variable $formatedMessage):
    Replace [ node contents ] of [ undefined XPath ] in [ body ] with [ $formatedMessage/text() ]
    ... but this does not work :(
    Many Thanks,
    Paul

    1. use fn-bea:inlinexml() that convert string to xml dom.
    2. replace $body/request in body with $myVar
    Note: place some log action (eg: $body/request) to debug, and check $domain/$server/log/$server.log file to check log action.
    Hope it help.
    Jonathan Jiang

  • Identification Test- and Production-System in Mapping

    Hi,
    we have a Java-function in a mapping step.
    There we need an identification if it runs in our Test- or Production-system.
    Currently we use a property file in the Java-Package for realizing this.
    But this is not a very good solution. The last time we transport the archive to our production system somebody forgot to change this property file and therefore we had some trouble in our production.
    Does anybody have an idea how we can identify the system name of the XI-system in a Java-Mapping?
    Is there perhaps any constant we can use of the Map input-parameter?
    In the documentation I didn't found anything about this.
    Best Regards,
    Thorsten

    Thorsten,
    Try using System.getProperty("SAPSYSTEMNAME") in your Java function.
    Regards,
    Jaishankar

  • I just bought a new ipad and i have several other ipod products to my computer why do i need to enter different id for a product that my sister loaded onto my comp?

    just got my new ipad I have several Apple Products that I have loaded to my laptop one in which is my sisters and has a different password why is it that when I go to update my apps I need to enter her password as well as mine

    the spcs page on this site state which video formats the ipad supports
    I'd suggest converting your old videos to one of those formats
    handbrake is a free program which does this for you
    itunes used to be able to too when I right clicked incompatible media but don't see the option any more
    or maybe it only show when one right click incompatible media and currently my lib don't have any
    about the music then it's odd what formats are they?
    if they are acc protected have you tried to remove the DRM this can be don using itunes as
    apple don't use DRM for music any more

  • BPM - Do we need receiver determination step between trans and sync send?

    Hi Gurus,
    I have a 1:1 transformation step followed by a sync send step. The transformation step is executing fine. While the sync step is executing, I am getting an error says 'No receiver determination found'.
    While I am executing this sync step in a separate, it is working fine.
    Do I need to have 'Receiver determination step' between Transformation step and Sync send step? I think so. Can somebody confirms this?
    Thanks for your kind help.
    Kalyan

    Hi,
    I think there is no need of a Receiver determination step in the BPM.
    You should have a proper receiver determination in configuration for this BPM scenario. (i.e) A receiver determination from BPM to the service configured for the synchronous interface.
    Regards,
    P.Venkat

  • Need to minimize spacing between text and footnotes

    I'm editing a style manual (Librarian self-taught InDesign newbie!) and need to lesson the space between the end of the text and footnote line (So I can get all the material on one page.) I'm using a textbox with the footnote feature. I know that one of the Footnote Options should do it, but when I change the First Baseline Offset options it messes up the leading of the footnotes as well (which need to appear single spaced. Any advice would be greatly appreciated. Thanks!

    That was it Ravi!!! Thank you so much!!!! I'm doing my happy dance

  • LSO : need informations about relation between course and training need

    Hi all,
    i need some informations about relation between course (object E) and training need (object TN). After some tests, i note in my environment (SAP ECC6) that this objects are not related, there is no occurrence in table HRP1001. So, why ?
    Cheers

    Hi,
    tranining needs (TN) are linked to training types (D).
    You can also find information in SAP Service Marketplace
    http://service.sap.com/hrfr under France -> Media Center -> Training Needs Management
    Regards
    Frank

  • I need to multiplex communication between threads and sockets

    Hello,
    I need to implement a server which will have a maximum of 10 clients connected.
    I wanted to go for classic blocking I/O because I won't have much clients.
    My problem is that even if I accept() some sockets and then create a thread for each socket,
    then I still need to communicate some data to the other threads, problem is that I am blocked
    on the read() operation, how could I address this problem?
    I mean, lets say I am thread1 and blocked on read() on my socket, now thread7 wants to tell
    me something like a chat message coming from client he handles, how could thread7 manage
    to wake thread1 and send him a message somehow?
    I do not want to deal with NIO stuff if possible because I do not need to scale, I just have a
    problem because I am stuck on the read.
    I will run on Windows.
    Thanks for help.
    Edited by: Marzullo on Jul 15, 2010 1:05 PM

    Marzullo wrote:
    Hello,
    I need to implement a server which will have a maximum of 10 clients connected.
    I wanted to go for classic blocking I/O because I won't have much clients.
    My problem is that even if I accept() some sockets and then create a thread for each socket,
    then I still need to communicate some data to the other threads, problem is that I am blocked
    on the read() operation, how could I address this problem?For small apps like that, I've found it helpful to have two threads per socket: 1 reader and 1 writer. The reader can block on read() 99% of the time, while the writer is blocked on LinkedBlockingQueue.take() 99% of the time (or Object.wait() depending). The writer's queue is populated from the outside with whatever messages are destined to that socket.
    I mean, lets say I am thread1 and blocked on read() on my socket, now thread7 wants to tell
    me something like a chat message coming from client he handles, how could thread7 manage
    to wake thread1 and send him a message somehow?If thread1 is blocked on read() then it will receive any data that was sent to it, there's no need to wake it up because it gets what it's been waiting for (data on the input stream). Thread7 just needs to write data to the socket's output stream and the other end wakes up automatically because read() only blocks until data is available.

  • Need help with color between LR and PS and from PS to desktop

    Trouble with PS5 and LR4... when I go to "edit in Photoshop" from Lr... it opens and doesn't match the image in LR (colors)... same goes when saving edited image back to LR... also, when Saving from PS to desktop, it looks terrible unless I "Save for internet" ... how can I get this to all match? Both are selected SRGB

    If there is a difference between Lightroom and Photoshop that is in almost all cases an indication of a bad monitor profile. (a more remote possibility is the video card driver, specifically OpenGL, which would affect Photoshop only).
    The conversion from source to monitor profile should yield identical results if the monitor profile is good. But since the source color space is different, one conversion may go bad but not the other. It also happens that applications simply react differently to bad profiles.
    The Windows desktop is not color managed and a difference is expected.

  • Need help with space between bullet and text in list

    I've been trying to increase the space between my bullet and text in my list. Everytime I increase the margin-left or padding everything moves to the right but the space between the bullet and text stays the same. Would someone help me figure out what I'm doing wrong. Website is located here. http://www.webassistantsllc.com/clients/sport
    Thanks
    Lynne

    Thanks for the help. That worked perfectly.
    Another question on my bullet:
    Is there a way to adjust the position of my bullet in a list? http://www.webassistantsllc.com/clients/sport
    Thanks
    Lynne

  • Java Web Service "clears" sop:Include/ from SOAP Body?

    I have a Java Web Service which processes SOAP Messages with MIME attachments. The references to the attachments are using XOP (XML-binary Optimized Packaging) specification.
    The XML Schema for the SOAP Body content imports the namespace "http://www.w3.org/2004/08/xop/include", but it is not its main target namespace. When I run the service and view the HTTP packet through HTTP Analyzer, the SOAP Envelope looks like this:
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:ns0="http://www.ACORD.org/Standards/AcordMsgSvc/1"
                  xmlns:xop="http://www.w3.org/2004/08/xop/include"
                  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <env:Header>
        </env:Header>
        <env:Body>
            <ac:CallRq xmlns:ac="http://www.ACORD.org/Standards/AcordMsgSvc/1">
                <ac:WorkFolder>
                    <ac:MsgFile>
                        <ac:FileId>
    <sop:Include href="cid:93609df7-d718-4801-bab9-57e3fd9cc5b5"
    xmlns:sop="http://www.w3.org/2004/08/xop/include"
    xsi:schemaLocation="http://www.w3.org/2004/08/xop/include http://www.w3.org/2004/08/xop/include"/>
    </ac:FileId>
                        <ac:FileFormatCd>text/xml</ac:FileFormatCd>
                    </ac:MsgFile>
                </ac:WorkFolder>
            </ac:CallRq>
        </env:Body>
    </env:Envelope>But when I access the java.xml.soap.SOAPMessage object in handleRequest(MessageContext) method of the Web Service's handler I get the following:
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:ns0="http://www.ACORD.org/Standards/AcordMsgSvc/1"
                  xmlns:xop="http://www.w3.org/2004/08/xop/include"
                  xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <env:Header>
        </env:Header>
        <env:Body>
            <ac:CallRq xmlns:ac="http://www.ACORD.org/Standards/AcordMsgSvc/1">
                <ac:WorkFolder>
                    <ac:MsgFile>
                        <ac:FileId>
    </ac:FileId>
                        <ac:FileFormatCd>text/xml</ac:FileFormatCd>
                    </ac:MsgFile>
                </ac:WorkFolder>
            </ac:CallRq>
        </env:Body>
    </env:Envelope>As you can see, the <sop:Include/> element has disappeared.
    Does anyone has an idea why this happens?
    Thank you!
    Simeon

    Neither the simple "setter" methods work.. :(
    The php client side:
    $string="aladar";
    $client->setSample($string);
    $return = $client->getSample();
    The server side:
    public String sample;
    public String getSample() {
    return sample;
    public void setSample(String a_sample) {
    sample = a_sample;
    Any ideas?

  • OSB 11g - Authentication - Username and password in SOAP body

    Hi,
    I have a PS based on the WSDL provided by the client. According to the WSDL the client will send the username and password (to be used for authentication) in SOAP Body. I have extract the username and password from the body and authenticate it and then only process the data.
    The approach I am thinking of is to create two PS. The first PS will be called by client to send the data. There will be no authentication required for this PS. Once this PS (PS-1) receives the message it will extract the username, password and data from the SOAP body. It will then set the username and password in the HTTP header of the second PS (PS-2) and the data in the SOAP body of PS-2.
    PS-2 will be under basic authentication. PS-2 will accept the data as the only payload. Upon receiving the data it will do the normal processing.
    But I do not see any way to set the HTTP header (Authorization) for the second PS. Is my approach correct? Is there another/better approach?
    I went through this link [http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/security/model.html] and found that we may have to configure another Authentication provider. How to do that?
    Thanks,
    Sanjay

    Hi Sanjay,
    Your approach seems correct to me (using two proxies) but instead of setting the username and password in HTTP header, you may set it as SOAP header and use Custom Authentication method in OSB. To know more about it, please refer -
    http://download.oracle.com/docs/cd/E17904_01/doc.1111/e15866/message_level_cust_auth.htm#i1069719
    Regards,
    Anuj

  • SOAP Body?

    Hi,
    Please let me know whether the SOAP Body can have multiple child elements within verifyNameAddress (in the below example "p548:verifyNameAddressResultDto") as follows-
    <soapenv:Body>
    <p194:verifyNameAddress xmlns:p194="http://www.xyz.com/xml/schema/ccs/verifynameaddress/v1">
                   <p194:verifyNameAddressDto>
                        <p194:inputRefId>2345678901</p194:inputRefId>
                        <p194:crn>202692419S</p194:crn>
                        <p194:surname>WALSH</p194:surname>
                        <p194:firstName>BELINDA</p194:firstName>
                        <p194:middleName>ANN</p194:middleName>
                        <p194:dob>1973-08-08</p194:dob>
                        <p194:addrLn1>10 HONEYEATER AVE</p194:addrLn1>
                        <p194:suburb>NOOSAVILLE</p194:suburb>
                        <p194:state>XYZ</p194:state>
                        <p194:pcode>4566</p194:pcode>
                        <p194:cnfrmDate>2008-07-01</p194:cnfrmDate>
                   </p194:verifyNameAddressDto>
    <p194:verifyNameAddressDto>
                        <p194:inputRefId>2345678700</p194:inputRefId>
                        <p194:crn>202692500M</p194:crn>
                        <p194:surname>WAL</p194:surname>
                        <p194:firstName>BINDY</p194:firstName>
                        <p194:middleName>ANN</p194:middleName>
                        <p194:dob>1973-08-08</p194:dob>
                        <p194:addrLn1>10 HONEYEATER AVE</p194:addrLn1>
                        <p194:suburb>NOOSAVILLE</p194:suburb>
                        <p194:state>ABC</p194:state>
                        <p194:pcode>4578</p194:pcode>
                        <p194:cnfrmDate>2008-07-01</p194:cnfrmDate>
                   </p194:verifyNameAddressDto>
              </p194:verifyNameAddress>
    </soapenv:Body>
    and receive multiple child elements in a single SOAP Envelope Response's Message Body.
    Any information in this regard is highly appreciated.
    Thanks,
    Tanu

    This is valid soap response there is no issues with this example...
    where as SOAP body is having only one child element; "verifyNameAddress"
    and "verifyNameAddressDto" are children of "verifyNameAddress"
    so its valid...
    Edited by: gKrishna on Dec 16, 2009 12:41 AM

Maybe you are looking for

  • Enhancement LMR1M002 for GR/IR clearing account in MIGO

    Hi , Did anyone implement the enhancement LMR1M002 to change the GR/IR clearing account while using tcode MIGO. Please help me how to implement the SAP customer exit , there is a note  SAP Note 301477 and  165692  but I was unable to  code Regards Pr

  • Can I play a dvd on an ipad 2

    I am extremely new to ipads... do not own one, buy considering it... possibly daft... but do they have a dvd drive?

  • How to work with images in Keynote

    Hello, I'm a Keynote newbie and am having problems working with images. My basic question is, do I have to resize my .jpgs every time I put them in Keynote? It seems that if I choose to Insert>Choose a .jpg, it will fill my entire presentation and I

  • Did a manual backup, but update does one itself?

    I'm attempting to update my iPad from iOS 3 to the latest version, so I cleared some extra room on my laptop's HD, did a backup, and copied my paid items to iTunes. After doing this, I have a little over a gig left on my PC hard drive. When I start t

  • Date Format in VC

    Hi, We have a details table where there is particular date field which is automatically displayed as plain text. The user can edit these records by selecting the line item. The date value should be given in the Date Picker for the user to change the