Payload based sync/async bridge

This is my scenario: ABAP -> XI -> MQ -> XI -> ABAP
I want to use the message content to be the correlation key, it means ABAP sends a message with order no.="ORDER1" to MQ and MQ will reply a message contains order no.="ORDER1". Then XI will use this message from MQ to reply to the sync ABAP program. Is it possible ?
I read this document "How-to Correlate JMS 1.20" to build a sync/async bridge (XI is 3.0 SP17)
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/5059f110-0d01-0010-7c8b-fdc983be70c0
First, I followed 3.1 to build a "header based" sync/async bridge. It's ok, I can see a message id in the field "JMSCorrelationID" in MQ tool. (I didn't test reply). And then I checked 3.4 in the document and want to build a "payload based".
There are only 2 steps in this document
1. I modified the correlation to the order no. field of request message in the send step.
2. I modified the correlation to the order no. field of reply message in the correlation editor.
Is it ok ? Because when I ran the ABAP program again, I still see the same JMSCorrelationID in MQ?

Thanks, so, the correlation id is encoded. I think I can see "ORDER1" originally. I changed it to "ORDER2" and see another correlation id and I changed it back to "ORDER1" and I see the original correlation id. I think the configuration of ABAP -> XI -> MQ should be correct now.
Now my problem is MQ -> XI -> ABAP. I manually put a message with order no.="ORDER1" in the reply queue. XI got it, but show the error message in workbench. 
"XI inbound processing failed for message at 2007-03-28|18:15:22.464+0800. JMS and XI identifiers for message are ID:414d51204d495453303153305420202045a35b480003f722 and 3cf8ed80-dd15-11db-a560-0017a47618a6 respectively. JMS adapter will rollback database and JMS session transactions"
Both of the messages are not the encoded "ORDER1" and when I press refresh in workbench, the 2nd id in the error message is always changed. Is there any suggestion for it ? thanks.

Similar Messages

  • File based Sync-Async Bridge

    Hi All,
    I have a scenario where a file is available in a shared folder.
    This file needs to be picked by a RFC Function module called in a Synchronous mode and the contents of the file needs to be displayed as the output of this RFC.
    Is this achievable using Sync-Async Bridge.If so can someone explain me the steps to achieve the same?

    If i were to open a Sync-Async bridge, I need to do the following
    Step 1: Receive step to open the sync/async bridge
    Step 2:Asynchronous send step
    Step 3:Receive step
    Step 4: Send step to close the sync/async bridge
    In my scenario.
    Step 1: Receive the RFC's request message
    Step 2: ????
    Step 3: Get the message from the file
    Step 4: Transform the file's message to RFC's response message
    Step 5: Send the RFC's response message  
    Moreover file adapter works in a polling mechanism..

  • Sync/Async Bridge without Asynchronous Send / Receive Steps

    Hello together,
    we have a synchronous HTTP <--> RFC Scenario using a sync/async Bridge in BPM with the following characteristics:
    1. HTTP Payload is received (opens Sync/Async bridge)
    2.  lookup is done in an LDAP System (we use an UDF here)
    3. Customzied JCo is called which takes the XML String as input parameter (done by Java Mapping)
    4. Return Value of JCo then is delivered back to HTTP Client (closes Sync/Async Bridge)
    --> No RFC Adapter is used here as the provided JCo does all the parsing
    When testing the sync/async bridge is started but we receive an timeout after 30 sec.
    Could it be that the sync/async required exactly a pair of async send and receive steps (which we do not have in our scenario and which we do not need)?
    This would be a problem, as we have to use BPM in this synchronous scenario. Do you have any idea?
    Thank you very much for your help.

    Thank you for your reply, but I think you misunderstood me. Please let me try to clarify once more:
    1. Synchronous HTTP Sender Interface (Request/Response) opens Sync/Async Bridge
    2. LDAP Lookup is done by UDF using the Request Message in Transformation Step
    3. Switch is done based on result of Lookup
    4. Branch 1 in switch calls customized JCo with Java Mapping in Transformation Step (Request Message as input, Response message as output)
    5. Response message (delivered from JCo Call) should close the Async/Sync Bridge and be send back to HTTP Sender
    --> We have no async send / receive steps in this scenario.
    The customized Jco has been provided by an external partner as there is lots of parsing logic implemented. So we want to connect to the backend SAP system using this JCo and not via a  send step.
    My key qestion is therefore: Is it absolutely necessary to use exactly a pair of async send / receive steps in a sync/async bridge?
    In this case we have to look for another design concept without BPM which would make the solution very difficult I think....

  • Getting Time-Out Error in Sync-Async Bridge

    Hi All,
    My IP has a Sync-Async Bridge. I have a fork, two senders, two switchs and a transformation step inside the bridge.
    If XI takes much time to process the IP, the send step that closes sync-async bridge is not waiting for the message after a particular period and throws time out error to the sender.
    Is it possible to increase the waiting time for sync-async bridge?
    This IP works correctly 8 out of 10 times. Sometimes the message is sitting permenantly in the queue(smq2) and gives me system failure error.
    Can u tell me why this problem happening?
    Thanks & Regards,
    Senthil.

    Dear Michal/Senthil,
    Can you pl clear a confusion that i have had for ages...
    suppose there is a sync/async bridge ( i understand that it is used for sync business system too async BS communcation )
    where we have 4 steps
    sync receive - > async send -> async receive -> sync send..
    i do understand that async send and async receive are combined through correlation
    but i do not understand how do they work..
    i mean when async send say send a file to a target system...does async receive reads a file from the same folder based on the corelation or wat...
    basically can you pls explain me how do the steps 2 and 3 above work
    Edited by: Tarang Shah on Mar 3, 2009 12:51 PM

  • BPM Design using sync-async  bridge

    Hi Arpit,
    Below mentioned is an overview of the process flow which we are trying to implement.
    1. A synchronous interface takes in the request
    2. After the mapping, a file is created
    3. Another file adapter reads this file and sends a message back to the sync interface. This step is to make sure that the file is created
    I'm using a sync-async bridge for this process, since file creation and reading processes are asynchronous and the request/response is synchronous.
    Can somebody help me by telling how to design the BPM. How many send and receive steps are required etc?
    Thanks,
    Sandeep
        | Request  |    |    |       |    |     |    |       |
        |--------->|    |    |       |    |     |    |File   |
    HTTP|          |Sync|--->|Mapping|--->|Async|--->|Adapter|
        |<---------|I/f |<-  |       |    |I/f  |    |(write)|
        | Response |    | |  |       |    |     |    |_______|
                          |                              |
                          |                              |
                          |                          ____|___
                          ||      |   |        |    |        |
                          -|Async |<--|File Adp|<---|Folder  |
                           | I/f  |   |(read)  |    |________|

    Hi
    <i>>>I have to map the incoming xml from HTTP to another format before creating the file.</i>
    Ya then u can use the transform Step in between the
    sync Recv ---> Transform ---> Send to File System
    <i>>>Once a file is read, that interface has to send an acknowledgement message telling the status.</i>
    Wht type of acknowledgement msg telling the status.
    I think u can add another element in ur created file payload like <b>Status</b>: Created (ConstanT)
    Then u can map the payload of the readed file with tis payload having Ststus init.Fo this u need a <b>Transformation</b> Step.
    BTW i was searching some previous blogs and i got this and it is bit related to ur scenario.Go thru this
    /people/sriram.vasudevan3/blog/2005/01/11/demonstrating-use-of-synchronous-asynchronous-bridge-to-integrate-synchronous-and-asynchronous-systems-using-ccbpm-in-sap-xi
    Hope it helps.
    Regards
    Arpit Seth

  • RFC Sender to start Sync/Async Bridge

    Hi,
    I'm trying to start a Sync/Async Bridge calling RFC. When importing RFC into Integration Repository, by default it creates two Message Type for request and response (RFCNAME and RFCNAME.response).
    My scenario is configured as follows:
    <b><u>Integration Repository</u></b>
    The starting step in BPM is configured with an abstract synchronous interface (output message is RFCNAME and input message is RFCNAME.response).
    <b><u>Integration Directory</u></b>
    <u>Sender Agreement</u>: sender service is R3 business system (from SLD), interface is the RFC program name (not an interface).
    <u>Receiver determination</u>: sender service is the R3 business system, the interface is RFC program name, an as configured receiver the BPM.
    <u>Interface determination</u>: In the configured inbound interface for the receiver (BPM) I configure the abstract synchronous interface
    My problem is that when calling the RFC, the outbound message is received into XI but does not reach BPM: NO_RECEIVER_CASE_ASYNC. Can you help me please?
    Thank you,
    Gari.
    (Sorry for my english!!!)

    Of course it is possible. Some considerations, though:
    1. you said that receive/send steps of BPM are configured with RFC and RFC.Response messages. However, by default, the RFC interface cant be used as Abstract Async. You have to explicitely create those abstract async interfaces. Have you done that?
    2. What extra steps do you have in BPM? I mean, you dont need to create abstract interfaces based on message type of RFC. If you have the message type of your receiver, you can perform mapping outside of BPM, and all abstract async interfaces could be done refering to the receiver message types.
    Regards,
    Henrique.

  • Dynamic configuration in Sync/Async bridge in JMS

    Hi
    Scenario:
    Portal sending request to JMS MQ and getting Response using sync/Async Bridge.
    I have to written a UDF which will capture the value for cust_uid from request mapping and store it in dynamic configuration
    And when the response comes from JMS MQu2026.this value gets populated in response mapping.
    I have tested the UDF in a dummy Soap2rfc scenario and its working fine.
    But when used in Sync/Async Bridge, the dynamic configuration  fails.
    For Sync/Async Bridge, there are 2 channels 1) Sender JMS 2) receiver JMS.
    The synchronous request is converted to an asynchronous request in the module processor and sent.
    The asynchronous system sends a response to a sender adapter. In the module processor of the sender adapter, this response is forwarded to the module processor of the original receiver adapter, where it is sent as a synchronous response of the waiting synchronous request.
    Please  suggest
    Regards
    Abhijit

    Hi Abhijit,
    Okay, so your data extraction/insertion is working fine for a simple synchronous request responser call.
    I suppose this is working fine because your receiver adapter copies some part of the request message (at least the dc header) to the response message. (But I don't think this always works for all the adapter types). It is not working for the sync-async bridge because there are two unrelated messages in this case.
    In order to copy the dc header from the first message to the second message, I think you can use the DynamicConfiguraitionBean module to store the dc header value in the module data and use this module again to recover it and set it to the second message. The whole process is somewhat complicated, but I will sketch the approach below.
    First, let's call the first use of DCB the store step and the second the recover step. These store and recover steps must take place in the same module sequence so that they can use the module data to pass data from the first message to the second message. Furthermore, the store step must occur after the cust_id value is extracted into the dc header. So, your configuration must be placed in the receiver adapter side. Assuming the request message with the filled dc header coming into the module sequence, the first DCB module can be placed before the ROB module to store the dc header value in the module data. And the second DCB module can be placed after the WRB module to recover the dc header value from the module data and set it the dc header of the response message.
    I hope this will work.
    Regards, Yza

  • Using WAIT step in Sync/Async Bridge

    I am using a sync/async bridge and placed a 1 minute wait step in between my async send and async reply.  When I test my process, the async reply comes in but then my 1 minute wait eventually times out and gives me an error.  Can someone guide me in fixing this BPM design (which steps to add and how)?
    http://webpages.charter.net/kpwendel/bpm_with_wait.jpg
    I would like it to stop waiting once the async reply comes in and not timeout.  If the 1 minute mark comes and a reply never came in, it would also be nice to send back an error message.
    Thanks!

    I pulled my WAIT task and had this scenario working a week ago.  I have not made any changes, but now my inbound replies to close the BPM and link up to the request are not "linking".  The request is eventually timing out even though the reply with a good correlation id comes in successfully.  Any suggestions?
    UPDATE:  I went through my objects in the IB:Config and resaved/activated them and now it is working.  Don't know what messed them up in the first place.
    Message was edited by: Keith Wendel

  • Sync/Async bridge via JMS with FAULT messages

    Hello all,<br><br>
    I set up a sync/async bridge scenario with using of JMS communication channel (SAP - JMSReceiverCC - JMSServer and application - JMSSenderCC - SAP). The normal communication works fine.<br>
    But what we can not solve is the Fault Message handling. If there is a application error behind the JMS, a fault message is generated instead of proper application response and sent back to XI. Without any additional setup of JMS Sender CC the processing of the message ends with "MAPPING - EXCEPTION_DURING_EXECUTE", because normal "response mapping" is executed instead of "fault message mapping". This is correct behavior without any discussion.<br><br>
    [SAPhelp|http://help.sap.com/saphelp_nw70/helpdata/en/45/202845de34072ce10000000a155369/frameset.htm] says that there are 2 module parameters to be set : fault, faultNamespace. The description is rather vague, so let's see, what the "NotifyResponseBean" does, when parameters fault/faultNamespace are filled:<br><br>
    <pre>if(fault != null && faultNamespace != null)
      if(faultNamespace.equals("http://sap.com/xi/XI/System"))
        ((XIMessage)message1).setMessageClass(MessageClass.SYSTEM_ERROR);
        ((XIMessage)message1).setError(fault, "no additional information");
      } else
        ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_ERROR);
        ErrorInfo errorinfo = message1.createErrorInfo();
        errorinfo.setAttribute("ApplicationFaultInterface", fault);
        errorinfo.setAttribute("ApplicationFaultInterfaceNamespace", faultNamespace);
        errorinfo.setAttribute("ErrorCode", fault);
        errorinfo.setAttribute("AdditionalErrorText", "no additional information");
        message1.setErrorInfo(errorinfo);
    } else
      ((XIMessage)message1).setMessageClass(MessageClass.APPLICATION_RESPONSE);
    }</pre><br>
    The code is pretty straight forward so one could assume, that it's the name and namespace of inbound synchronnous message interface what is supposed to be filled in the values of each parameter. And from that kind of information SAP XI can evolve how to handle the response, actually the fault.<br>
    Unfortunatelly the real situation is different - every time the fault message is generated and sent back to XI, the response is correctly corelated with the request message, "WaitResponseBean" and "NotifyResponseBean" are finished correctly and the processing crashes in messaging class on following exception:<br><br>
    java.lang.NullPointerException at java.util.Hashtable.put(Hashtable.java:592) at
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    com.sap.aii.adapter.xi.ms.XIMessage.updateHeaders(XIMessage.java:4244) at
    com.sap.aii.adapter.xi.ms.XIMessage.getTransportHeaders(XIMessage.java:570) at
    com.sap.aii.af.ra.ms.impl.ServerConnectionImpl.request(ServerConnectionImpl.java:212) at
    com.sap.aii.af.ra.ms.impl.core.transport.http.MessagingServlet.doPost(MessagingServlet.java:337) at ...
    <br><br>
    Is there anyone, who can put more light on JMS sync/async bridge fault handling ???
    <br><br>
    Thank you ...<br>
    Regards
    Tomas

    Hello again,
    I proceed in investigation little more, but the main problem has not been solved. I found that the problem is not even in WaitResponseBean (placed in JMCReceiverCC). This bean is woken up properly on base of proper CorrelationID. See the log:
    2009-10-15 11:00:33 Success WRB: entering WaitResponseBean
    2009-10-15 11:00:33 Success WRB: retrieving the message for f1ea1fc0-b96d-11de-9b68-00144f4acd86 ...
    2009-10-15 11:00:46 Success WRB: retrieved the message: ApplicationError
    2009-10-15 11:00:46 Success WRB: leaving WaitResponseBean
    I think, that the problem is somewhere within main messaging functionality. I suppose that on base of exception message:
    com.sap.aii.messaging.mo.MessageContext.setAttribute(MessageContext.java:140) at
    which is generated.
    Any ideas or comments ?
    Thank you in advance.
    Regards
    Tomas

  • Sync/Async bridge

    Hey
    My task is to have an Idoc sent to a Web Service. I have heard that this can be solved using a sync/async bridge in BPM, but from what I can read (help.sap.com) it always say that the first receive step is from a synchronous application. My question is then: Can I use the sync/async bridge to call a web service - i.e. changing from asynchronous (Idoc) to synchronous (WS call)?
    Anyone knows a blog that shows some good examples of sync/async communication? I have read the inital blogs on BPM, but not found anyone good at async/sync communiation...
    thanks a lot!
    regards Marianne

    Hi,
    If you want to receive the response from Webservice means you need to use BPM here.
    Otherwise no need of any BPM,
    That too if u want to response from WS also u dont require any Sync/Async Step here.
    You can configure the BPM with Async receive-Sync Send-Async Send
    REgards
    Seshagiri

  • Sync async bridge configuration

    Hi,
    I am doing one sync to sync scenario using sync/async  bridge in BPM,I am posting one message from HTTP client.
    I am receiving the synchronous message inside bpm and opened sync aysnc bridge.
    Then I need to do some transformations,
    after transformation step I am closing sync/async bridge and sending the message back to sender system.
    I have created repository objects,
    while configuring directory objects,
    I have run wizard once between sender and BPM and do i need to run wizard again?
    please explain me about configuration (ID objects)?
    Thanks
    Best Regards,
    Harleen Kaur Chadha

    Hi Harleen,
       Check this below blog,its very useful for ur requirement.
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/10c73036-f019-2b10-20bc-f15a25be9588
    Regards,
    Skumar

  • BPM - Receive Sync/ASync Bridge Problem

    Hi,
    I am creating a scenario for an inbound Synch request to be serviced by a BPM process.
    Here is the problem that I am facing while trying to configure the Receive Step
    - I created a Message Interface defined as Abstract Synchronous.
    - I created a process model and put in a Receive Step: Mode - Opens S/A Bridge, Synchronous Interface - defined as above.
    - I define a container with Abstract type. But when I try to locate the above defined Abstract Synch message interface, I cannot find it.
    - As a workaround, I create another Abstract Message Interface defined as Abstract ASynch.
    - I create a container with this Abstract ASynch message type.
    - I use this container in the Receive Step.
    But activating the Business Process gives the error:
    Message to be received and Synchronous Interface do not have identical types.
    Can someone give me the correct procedure to configure the Sync / ASync Bridge ? thanks,
    -Manish

    Dan,
    This is the link you are looking for?
    http://help.sap.com/saphelp_nw04/helpdata/en/83/d2a84028c9e469e10000000a1550b0/frameset.htm

  • Sync / Async Bridge without BPM

    Hi All,
    I was trying to implement the Sync / Async Bridge without the BPM. I am trying a HTTP to JMS Sync / Async Bridge. I have followed the following link and done exactly the same as shown in the document
    http://help.sap.com/saphelp_nw04/helpdata/EN/45/20d2b4c20a0732e10000000a155369/content.htm
    I have used a Java application which will poll the request queue and then place the message in the response queue with the same correlation ID frm the request queue.
    After following the above link the response message was not appearing, the message were going to deilvering status and after some time i found that they were cancelled without errors
    I searched in the forums for many solutions but what i found was this thread which stated that since the XI message ID is 32 bytes and Correlation ID is only 24 bytes its difficult for Modules to identify the response since the correlation is truncated.
    JMS: Synch/Async bridge - how to configure
    I tried changing the configuration in the reciver JMS channel to XI Conversion ID instead of Message ID and this also doesnt give me fruitfull results. The message was not being placed in the request queue, it gave an error saying that the conversion id was null. Though in the thread it seems to have worked for him.
    After this i planned to dynamically generate a Correlation ID (a dummy one) of 24bytes and i sent it to the request queue this time the message was retrived from the response queue only to find that the correlation ID this time has been converted to some other format
    Corrletion ID sent to the request queue: ABCDEFGHIJKLMNOPQRSTUVWX
    Corrlation ID coming in the response queue : 4142434445464748494a4b4c4d4e4f505152535455565758
    Can anyone put some light on what i exactly need to do or tell me why the conversion ID worked for Daneil in the thread and it gave me an error saying that the Conversion id is null
    Rgds
    Aditya

    Hi Prateek,
    This is what was tried in my first case. I did exactly what was given in that link.But since the Message id being 32 bytes and length of correlation id is 24 bytes id is getting truncated.
    So its not working fine.
    @ke i am having a look at the note will update you on this
    Thanks for your response
    Rgds
    Aditya

  • Double Sync-Async Bridge

    Hi guys,
    One simple question:
    Is it possible to have two S/A Bridge in a single BPM? It should be quite simple.....
    Thanks in advance

    Hi,
    You are right in real time this will be not possible to even use the two S/A in one process.
    But you could design the process in such a way that
    lets assume you have one sender A and two receiver B & C
    A--Synchronous
    B---Async
    C---Async
    Now the scenario is like
    A-request -
    > B as well as for  -
    > C.
    here B is async so you need to built A to B as S/A bridge but as I had said simultaneously it need to send the data to C which is also async then you need to use Fork to create two branches one for B and one for C.
    Here you need to create Dummy response for A as B or C will not send any response.
    This scenario is very rare to be practical..but there is chance that you could design it in BPM.
    I am pretty sure about the scenario will not work successfully as there will be 3 ports opened at a time and multiple resources will be consumed.
    1. Define a Receive Step to Open the Sync/Async Bridge
    2. Define fork with 2 branch one for A and one for B
    -One Branch-
    Define an Asynchronous Send Step for B
    Define a Receive Step for B
    -2nd Branch--
    Define an Asynchronous Send Step for C
    Define a Receive Step for C
    4. Define a Send Step to Close the Sync/Async Bridge
    Here if you see you have two Sync/Async bridges one for A to B and another for A to C.
    I never have implemented it just giving you the hint.
    Thanks
    Swarup

  • REG : SYNC/ASYNC bridge

    Hi all,
                 I have a scenario where my sender is a syncronus and receiver is asyncronus. I have used sync/async bridge in BPM to acheive this.But when i send the input data from runtime workbench with QOS as BEST EFFORT i  got the following error " Error While sending the message". When checked in moni, the data has sucessfully sent to the receiver and in the BPM flow is failing at the last step (ie SEND step which sents syncronus respose and which ends the bridge)
    The steps i used in BPM are
    RECEIVE(start of sync/async bridge)--> SEND(which sends data to receiver)--
    >SEND(which ends the sync/asynbridge) The response that i send is same which i receive(input data) , so i didnot use any  step for response .
    I ran the wizard for 2 times :
    1) from my source to BPM in which is syncronus.
    2)from BPM to receiver which is asyncronus.
    Can anyone please provide me solution for the above problem.

    Hi Srinivas,
    In BPM second step,
    Send step it would configure the properties as a " Synchronous". then only response back to the sender.
    Regards,
    sateesh

Maybe you are looking for

  • Consuming a Webservice is extremly slow

    Hi I would like to use a Webservice to communicate with a server. For test purposes I wrote a small java webservice which adds to numbers using the following 2 classes. == Class Calculator == package de.theserverside.webservice.service; import javax.

  • Printing from photoshop elements 6 for mac

    I have an i-mac and use photoshop elements 6.  I have created hundreds of images but when i have contacted printers to print cards i created from these images using indesign i have been told by many printers that there is an issue regarding RGB vs CM

  • Domain name change

    Hello I recently received notice tha my company is changing its donaim name from @xmradio.com to siriusxm.com.. My question is how will this change effect the hundreds of  reports that we have setup in Business Objects' CMC to email to  addresses wit

  • What do the "Options" do in WE20 Inbound options for "Trigger Immediately"

    We just upgraded our system to SAP NetWeaver AS ABAP 7.31.  In reviewing the inbound parameters for some of our logical system partner profiles, I came across the Button "Options" next to "Trigger Immediately" in the "Processing by Function Module se

  • How to keep rankings?

    My rankings sometimes disappear in Photoshop7.0 ( WindowsXP) I would like to retain the ranking of images so that I do not have to repeat the process. This is what I am doing: When I finish ranking the images, I right click on the file browser and cl