Message id in BPM

Hi,
I did all of Siva's steps
( Re: Retrieving a message id )
, then:
GlobalContainer globalContainer1 = container.getGlobalContainer();
String b = (String) globalContainer1.getParameter("mymessid");
result.addValue(b);
mymessid is a container variable from BPM
but in the mapping when I run my scanario it returns -> null (the container also doesn't have any Return - only when I assign senderservice I can see the container variable is filled but still in the transofmration I get null)
BTW
I assign messageid from the incomming message
(in a BPM of course)
any ideas?
Regards,
Michal
Message was edited by: Michal Krawczyk

Hi Michal,
We ran into the same issue and submitted an OSS Message about it. Here's the response from OSS:
it's a known issue.
when programming a mapping you must differenciate between two cases:
Will your mapping be executed on the BPE (business process engine) or
within an ordinary step on the integration server.
Due to the different functionality of the BPE (e.g. split/merge) some
parameters are not accessible and will not be evatuated there. This is a
behaviour that was designed that way.
if you are calling the mapping from the BPE engine, the MEssage ID
and other constants are not accessible. The BPE engine can
split/merge XI messages and then i makes no sense to correlate
the messages in the BPE engine  to any Message ID.
If you are executing the mapping
within an ordinary step on the integration server
all Mapping Runtime Constants mentioned in the document under
http://help.sap.com/saphelp_nw04/helpdata/
en/84/4afc51f65c4e4fabfbbbd25f548ab7/frameset.htm
->Design -> Designing Mappings-> Imported Archives (XSLT/Java)
->java mapping
are accessible.
A possible solution for your problem would be to map the MESSAGE ID
into the Xi payload before the XI message is transferred to the
BPE engine. In the BPE engine you can then read the MessageID
from the XI payload.
Thanks,
Jesse

Similar Messages

  • Multi-Mapping and Message Split using BPM

    Hi All,
    Could anyone pls let me know clearly how message mapping can be done for this weblog
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    Thanks,
    Ram

    Hi,
    When you are doing Message mapping after adding the Messaget types for source and target messages. You can click on the "" button in the target message and add one more tab. You can go to Message tab as shown in the 5th image and click "" button to add one more message type. Then do the mapping as usual.
    <b>Based on the value of the element(name), the node of input(details)should be directed to one of the two message types</b>
    Here in this blog it is done based on the Name.
    You need to use IFTHENELSE boolean function and do the mapping.
    Thanks,
    Prakash

  • Different options for message mapping in BPM

    Hey guys
    i m in the learning phase of BPM and am kinda confused with the different ways we can do message mapping in a BPM scenario.
    first of all we can do message mapping before BPM,we can also do after BPM and lastly we can do inside BPM(ofcurse this is not recommended as its too resource consuming)
    i have bene through starters blog on BPM by Krishna moorthy and Arpit seth,and now am wondering how to use the mapping in diff. ways
    suppose i m doing a simple File to File with BPM(just for practise purpose)
    now here is what i have designed in IR
    DT_sender_File                                       DT_receiver_File
    MT_sender_File                                       MT_receiver_File
    MI_Outbound_sender(async,outbound),     MI_Inbound_receiver(async,inbound)
    AI_sender(abstract,async)                        AI_receiver(abstract,async)
    MM_File_File(using MT_sender_File and MT_receiver_File)
    now i want to clear some doubts about interface mapping.my understanding is
    if i do interface mapping between MI_Outbound_sender and AI_receiver,this will be interface mapping before BPM.
    if i do interface mapping between AI_sender and MI_Inbound_receiver,this will be interafce mapping after BPM
    and if i do interface mapping between AI_sender and AI_receiver then it will be mapping inside BPM.
    is my understanding correct?if yes,then does that means we can we any of the above mapping in our scenario.(if we dont consider the performance issue as of now)
    thanx
    saif

    Hi Saif,
    <i>
    is my understanding correct?</i>
    Yes, thts correct
    <i>if yes,then does that means we can we any of the above mapping in our scenario</i>
    Of course, u can use any of them (overlooking the performance issue)
    Regards,
    Prateek

  • Message Bundling in BPM

    Hi All,
    I am trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
    Now the problem is, though it shows Success message in SXMB_MONI, i dont get the output File.It doesnt even show the messages for my scenario in Runtime Workbench.
    Can somebody pl. guide me on this .
    Thanks,
    Ruchi

    Hi,
    I was trying to work on this Scenario for Message Bundling in BPM. The Scenario is i try to collect Idocs in BPM and after 3 IDocs from R/3, BPM will merge all the 3 into one message and send this message to a flat file.
    After checking it inot SXMB_MONI_BPE i could find out the error....
    <i>Bhavesh: Like you said there was an error in Variable assignment.</i>
    But now the problem is , of 3 messages i only get one record in the Output Response file....
    In SXMB_MONI , it shows <i>'Message is being sent'</i> for the other two.
    I checked the PE for that,it doesnt show any error in the Workflow log...but for the first message it shows the complete workflow and for the other two its showing in the processing mode..
    If anybody can guide me more on this..
    Thanks,
    Ruchi

  • Message Mapping outside BPM

    I often see a point from XI-Legends that a Message Mapping should be executed out side the BPM and that will make the XI performance good.
    How to do a Message Mapping outside BPM? What does it mean?
    Any Blog that narrates the above situation?
    Thanks.

    Data Types
    Source/Sender Data Format ---     DT_Sender File     
    Target/Receiver Data Format --     DT_Receiver
    Message Types
    Sender Message Type -  MT_SenderFile
    Receiver Message Type - MT_ReceiverFile
    Message Interface
    MI_OB_Sender(Async, Outbound)            MI_IB_Receiver(Asynch,Inbound)
    AI_Sender(Async, Abstract)                    AI_Receiver(Async,Abstract)
    So
    if the mappaing is done between
    MI_OB_Sender       To   AI_Receiver           (Its Before BPM)
    AI_Sender              To   MI_IB_Receiver      (Its After BPM)
    AI_Sender              to  AI_Receiver            (Its inside BPM)
    Whether my understanding is correct? Thanks for your patience.

  • Multi mapping and message splitting in BPM

    Hi ,
    I am working with this scenario ...
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    how many message interfaces i have to create .
    one outbound , one abstract  and two inbound .. is it correct.

    Hi
    Minimum you need to create three message interfaces i.e. Bpm_In_MI_Abstract,  aBpm_Out_MI_Abstract Bpm_Out1_MI_Abstract, because abstract interfaces can be use inbound and outbound as well.
    You can also use create implement it by using inbound and outbound message interfaces. In that case you have to use three additional interfaces(1 outbound and 2 inbound).
    Regards
    Sami
    Reward points if helpful.

  • Messages stuck in BPM

    Hi Folks,
    I am facing issue with BPM.
    I can see the messsages processed from sender to BPM.But I cann't see any messages processed from BPM to Receiver .
    Is there is anyway to find the messages which stuck in BPM? I can't see failure messages in MONI with BPM as sender.
    Please let me know the reasons.....
    Thanks,
    SPMD.

    Hi,
      You can track the message from SXMB_MONI itself.
    In SXMB_MONI, please go further to see the status of Inbound and outbound and outbound status.  In your case, outbound should be PE, please click that which will provide your BPM work flow log.
    You can see the BPM workflow log if the message reached BPM instance through PE adapter. Outbound status falg should be Successful flag or Failure flag( Red).
      But if you see a green flag, it ideally means message doesn' reached BPM engine at all and it was in  PE adapter queue buffer for sometime  and Vanished.You can't see any message entry in SMQ2/SMQ1 as well..
    This may happen due to your BPM design.( Unprocessed Messages/Unsent messages)
    In this case, you have to use progarm RSWF_XI_UNPROCESSED_MSGS to see your messages.

  • Multi-Mapping and Message Split using BPM UDFs Error

    hi
    As per the below blog
    Illustration of Multi-Mapping and Message Split using BPM in SAP Exchange Infrastructure
    I have just modified the UDFs(1.selectnodeifA 2.selectNodeifB)
    1.selectnodeifA
    for(int i=0;i<=n;i++)
    if(Name<i>.equals("A"))
    result.addValue(Node<i>);
    2.selectNodeifB
    for(int i=0;i<=n;i++)
    if(Name<i>.equals("B"))
    result.addValue(Node<i>);
    while checking I am getting the following errors
    Source code has syntax error: 
    D:/usr/sap/D10/DVEBMGS01/j2ee/cluster/server0/./temp/classpath_resolver/Mapdc8fa4d0896011dd907d001cc01cef0d/source/com/sap/xi/tf/_bpm_mm_.java:132: cannot resolve symbol
    symbol : variable n
    location: class com.sap.xi.tf._bpm_mm_
    for(int i=0;i<=n;i++)
    ^
    D:/usr/sap/D10/DVEBMGS01/j2ee/cluster/server0/./temp/classpath_resolver/Mapdc8fa4d0896011dd907d001cc01cef0d/source/com/sap/xi/tf/_bpm_mm_.java:140: cannot resolve symbol symbol : variable n
    location: class com.sap.xi.tf._bpm_mm_
    for(int i=0;i<=n;i++)
    ^
    2 errors
    The source code given in the blog is correct ? I thought for loop has not completed
    pls help
    manian

    Hi manian,
    I was having a look to Illustration of Multi-Mapping and Message Split using BPM in SAP Exchange Infrastructure blog.
    The functions are not the same. I mean, yours and blogs functions.
    Each function has two parameters, Name and node. Furtheremore, in the blogs' functions is using arrays and you don't.
    So, the right code will be
    1.selectnodeifA
    for(int i=0;i<=node.length();i++)
    if(Name<i>.equals("A"))
    result.addValue(Node<i>);
    However, if you don't need an advance user defined function as you want to process just one element of the node's queue, you will not need to use for sentence.
    Something like:
    1.selectnodeifA
    // for(int i=0;i<=n;i++)
    if(Name.equals("A"))
    result.addValue(Node);
    Hope it is usefull for you.
    Carlos

  • Message Split using BPM for Multiple SOAP Receivers

    hi,
    I have a scenario where in i have to split the message coming from IDOC(SOURCE) to multiple SOAP(TARGET) receivers through BPM
    I took a single file as a scenario and tested it. It worked fine.
    I am using only a single output interface.
    I have followed this weblog
    /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    but this blog has 2 output interfaces whereas in my case i just only one output interface that i want to route to multiple receivers based on the value in the PARVW in the IDOC.
    Thanks,
    Tirumal

    hi ,
    this is done using CONDITIONAL RECEIVER DETERMIANTION.
    While doing your reciver determiantion, you can specify multiple receivers and also specify the condition on which the receiver is to be choosen.
    Also, just check the last path of this blog for the same,
    /people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers
    Regards,
    Bhavesh

  • Message split using BPM.

    Hi SDNers,
         My Scenario - Multiple IDocs to 3 output messages. Mesg1 1:1, Msg2 0:1, Msg3 0:1
         We are using BPM to acheive this.
               I am doing message split using BPM. But I have a problem when I am using BPM.
         My requirement is to collect the Idocs for 1 minute, this I acheived by using deadline branch and collecting idocs using container. After that I used Transformation step to run interface mapping by which message is splitting into three messages. Upto this I acheived successfully, then after I got strucked to split the message.
         I am using fork step and and giving three branches, in each branch I am giving receive step and collecting the transformed message. My problem is the message in the first branch is mandatory to come, where as the messages in the remaining two branches are not mandatory. That is my message can split into three messages or just one.
         If I use fork step, without getting the message in all the three branches, the messages in the branches will not come out. Which is not satisfying my requirement.
         I am thinking that before receive step in fork, can I use wait step for 1 minute or can anybody explain what is the functionality of necessary branches.
         Thanks in Advance.
    Regards,
    Jayaram.G

    Jayaram.G,
    To send the messages in your fork, you need a send step instead of a receive step.
    I think you also need to insert a switch in al of the fork's branches, so that the messages will ony be sent when the transformation produced the message. (use the expression [message] EX in the switch).
    Kind regards,
    Koen

  • Message Splitting Using BPM

    Hi Folks,
        I'm new to SAP PI 7.0 . I want to send one xml file to 2 sender in a splitted manner using BPM. suppose I have 8 fileld in my sender data type, i want to send the xml which contails first 4 fileds to the first receiver and
    the xml which contails second 4 fileds to the second receiver.
         Can anybody help me in this case.I have already looked for the already answered threads but i didnt get any help from them.
    Thanks & Regards,
       Santosh Kumar Nayak.

    Hi,
    Check this blog: /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
    From the blog:
    Three Receiver Determinations are required. One for the Sender to BPM and two
    others for BPM to the corresponding output files. In the Interface Determination for the
    two Receivers, specify the corresponding Interfaces.
    Same logic applicable to your case.
    Regards,
    Abhishek.

  • The N:M message spliting without BPM in PI7.1   ???

    Hi,experts
    I'm doing an scenario which implements the N:M messages split without BPM...
    The data type structure as below:
    ================================
    SOURCE_TEST     
        A                             0...1
        B                             0...1
        C                             0...1
        D                             0...1
        E                             0...1
    ================================
    TARGET1_TEST        
        F                             0...1
        G                            0...1
    ================================
    TARGET2_TEST        
        H                            0...1
        I                              0...1
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    Now i want to split msgs and do the mapping as A-->F,B--->G and D>H,E--
    >I which depends on the C value,,
    for instance,if C="1" then generate TARGET1_TEST,if C="2" then generate TARGET2_TEST
    and i changed the signature tab,set the occurence of SOURCE_TEST 0....unbounded, 
    added the two target msg type into the Target messages and also set the occurence of them 0...unbounded.
    Then did the mapping(the mapping implemented no problem,it's sure)
    after did the operation mapping,do the ID objects as below:
    one sender bussiness component,one sender communication channel,one interface determination,one receiver determination,one send agreement,one receive business component,two receiver communication channel,two receiver agreements
    the issue now is when i do the " test configuration" in ID,it pops up "Runtime error  Split mapping created no messages"
    but i go to check the operation mapping and cannot find any issue in it coz it's as fine as message mapping
    could anybody shed some lights on it?
    Thanks in adv.
    Regards.

    oh....is it really we cannot implement it without BPM or just you havn't do that?i just saw a blog written about 1:N without BPM and it's said we can do N:M similarly,so i want to have a try,now it pops up the errors as below:
    Runtime error
    Split mapping created no messages
    <Trace level="1" type="B">CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV</Trace> <Trace level="2" type="T">......attachment XI_Context not found </Trace> <Trace level="3" type="T">Mapping already defined in interface determination </Trace> <Trace level="3" type="T">Object ID of Interface Mapping 97B524981FD63207AA98CA34BF326F12 </Trace> <Trace level="3" type="T">Version ID of Interface Mapping 6712C511963511DEAEAAF2F4AC197482 </Trace> <Trace level="1" type="T">Mapping-Object-Id:97B524981FD63207AA98CA34BF326F12 </Trace> <Trace level="1" type="T">Mapping-SWCV:6712C511963511DEAEAAF2F4AC197482 </Trace> <Trace level="1" type="T">Mapping-Step:1 </Trace> <Trace level="1" type="T">Mapping-Type:JAVA_JDK </Trace> <Trace level="1" type="T">Mapping-Program:com/sap/xi/tf/_TEST_MM_N2M_NOBPM_ </Trace> <Trace level="3" type="T">MTOM attachments are written to the payload </Trace> <Trace level="3" type="T">Dynamic Configuration Is Empty </Trace> <Trace level="3" type="T">Executing multi-mapping </Trace> <Trace level="3" type="T">Search com/sap/xi/tf/_TEST_MM_N2M_NOBPM_.class (http://infosys.com/pi/projects/sysco/n2, -1) in swcv 6712c511-9635-11de-aeaa-f2f4ac197482. </Trace> <Trace level="2" type="T">Loaded class com.sap.xi.tf._TEST_MM_N2M_NOBPM_ </Trace> <Trace level="3" type="T">Search com/sap/xi/tf/_TEST_MM_N2M_NOBPM_$MT$InnerLibsList.class (http://infosys.com/pi/projects/sysco/n2, -1) in swcv 6712c511-9635-11de-aeaa-f2f4ac197482. </Trace> <Trace level="2" type="T">Loaded class com.sap.xi.tf._TEST_MM_N2M_NOBPM_$MT$InnerLibsList </Trace> <Trace level="3" type="T">Search com/sap/xi/tf/_TEST_MM_N2M_NOBPM_$MT$InnerParamsList.class (http://infosys.com/pi/projects/sysco/n2, -1) in swcv 6712c511-9635-11de-aeaa-f2f4ac197482. </Trace> <Trace level="2" type="T">Loaded class com.sap.xi.tf._TEST_MM_N2M_NOBPM_$MT$InnerParamsList </Trace> <Trace level="2" type="T">Call method execute of the application Java mapping com.sap.xi.tf._TEST_MM_N2M_NOBPM_ </Trace> <Trace level="1" type="T"> *** START APPLICATION TRACE *** </Trace> <Trace level="3" type="T">Document start </Trace> <Trace level="3" type="T">Start tag [ns0:Messages] </Trace> <Trace level="3" type="T">Add raw attribute [ xmlns:ns0=&quot;http://sap.com/xi/XI/SplitAndMerge"] </Trace> <Trace level="3" type="T">Start tag [ns0:Message1] </Trace> <Trace level="3" type="T">Close tag [ns0:Message1] </Trace> <Trace level="3" type="T">Start tag [ns0:Message2] </Trace> <Trace level="3" type="T">Close tag [ns0:Message2] </Trace> <Trace level="3" type="T">Close tag [ns0:Messages] </Trace> <Trace level="3" type="T">Document end </Trace> <Trace level="1" type="T"> *** END APPLICATION TRACE *** </Trace> <Trace level="2" type="T">Java mapping com/sap/xi/tf/_TEST_MM_N2M_NOBPM_ completed. (executeStep() of com.sap.xi.tf._TEST_MM_N2M_NOBPM_). </Trace> <Trace level="3" type="T">Message Type 1 Number of Messages 0 </Trace> <Trace level="3" type="T">Message Type 2 Number of Messages 0 </Trace> <Trace level="1" type="E">CL_XMS_PLSRV_MAPPING~ENTER_PLSRV</Trace>

  • Message split without BPM?

    Can we do correlation (message merge) without bpm. I mean Is there any adwanced service pack which support this,so that we can avoid bpm?

    Hi,
    Ur subject and ur question is confusing.....
    Message split means splitting the one message into N message that is 1:N
    And message merge is merging the N message to 1 message N:1.
    Wat u want to do...can you pls explain with example.
    Correlation is a functionality provided in BPM.
    Thnx
    Chirag

  • How to send JMS Message from a BPM Process

    Hi All
    I have small query regarding sending JMS Message from a bpm process. Is it possible to send JMS message from one bpm process to another bpm process.
    I have a scenario in which I need to send a JMS message to a queue where another process is listening on that queue and as soon as the message is received on the queue the process instance is created.
    I know how to listen for the JMS message on the queue, but I don't how to send a JMS message from a process.
    Also Can I create process by sending the Notification to the process instead of a JMS message. But the process to be created is not a subprocess i.e. Can notification be send accross different processes.
    Any information or example in this regard would be helpful.
    Thanks in advance
    Edited by: user9945154 on Apr 22, 2009 7:46 PM

    Hi,
    Here's one approach to sending JMS messages from an Oracle BPM process. If you're doing this just to send a message into another process, do not take this approach. It's far easier and quicker if you do this using the OOTB "send notification" logic.
    These steps describe how to do this using WebLogic. The steps would be different if you're using another ap server / JMS provider.
    1. Guessing you've already done this, but first expose the two required WebLogic jar files for JMS messaging as Java components in the External Resources. The two files for WebLogic are weblogic.jar and wljmsclient.jar” (located in the < WebLogic home directory > /weblogic/server/lib” directory).
    AquaLogic BPM JMS Queue Listener for WebLogic 8.1
    2. You've probably already done this, but add an External Resource to represent the J2EE container:
    • Name: “weblogicJ2EE” - this is important and will be used in the next step
    • Supported Type: “GENERIC_J2EE”
    • Initial Context Factory: “weblogic.jndi.WLInitialContextFactory”
    • URL: “t3://localhost:7001”
    • Principal: and Credentials: whatever userid and password you defined to access theWebLogic administrative console.
    3. Create the External Resource that represents the send queue configuration. In this example, I'm calling it “WebLogic Send Queue”. This is important - remember what you named it because you will use this name in the logic that sends the JMS message. This new External Resource is configured as:
    • J2EE: “weblogicJ2EE” (same name as the second External Resource you created)
    • Destination Type: “QUEUE”
    • Lookup Name: “weblogic.examples.jms.exampleQueue”
    • Connection Factory Lookup Name: “weblogic.examples.jms.QueueConnectionFactory”
    4. Here's the logic to send a Message to the Queue
    <pre class="jive-pre"><p />msg as String = "Hello World"
    jmsMsg as Fuego.Msg.JmsMessage
    msg = "<?xml version=\"1.0\"?><Msg>" + msg + "</Msg></xml>"
    jmsMsg = JmsMessage(type : JmsMessageType.TEXT)
    jmsMsg.textValue = msg
    sendMessage DynamicJMS
    using configuration = "WebLogic Send Queue",
    message = jmsMsg</pre>
    Note that the “sendMessage” method uses the configuration parameter “WebLogic Send Queue”. You previously created a JMS messaging service External Resource with this name in the third step.
    Again, please don't go this route if you're just using it to send notifications between processes,
    Dan

  • User getting locked while sending message sync via BPM. Please help

    Hi Experts,
       I have a sync - sync scenario where I am sending data synchronously from webservice to a sync RFC FM. I am using BPM and in BPM I have three steps
    1. Receive step - Opens Sync-Async Bridge
    2. Sync Send step
    3. Send step - Closes SYnc-Async bridge.
    This BPM solution is same as that give in the blog https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/1403 [original link is broken] [original link is broken] [original link is broken]
    When I test this scenario I am getting
    <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="INTERNAL">PL_TIMEOUT</SAP:Code>
    <SAP:P1 />
    <SAP:P2 />
    <SAP:P3 />
    <SAP:P4 />
    <SAP:AdditionalText />
    <SAP:ApplicationFaultMessage namespace="" />
    <SAP:Stack>Timeout condition of pipeline reached</SAP:Stack>
    <SAP:Retry>N</SAP:Retry>
    </SAP:Error>
    When I check the "Status monitor for Sync/Async communication" via SXMB_MONI, I found that my message is listed there with BPE status = "Wait".
    On double clicking my message I found that there is an error " User is locked. Please notify the person responsible".
    Why is my BPE struck in "Wait" stage and user is locked?
    What am I doing wrong? Am I missing any settings in SOAP sender communication channel?
    Please help me in resolving this problem.
    Regards
    Gopal

    Hi,
    Few months ago we had also problems with "locked user" in XI, in our case XIAPPLUSER was sometimes (b)locked.
    Perhaps note:
    721548 Changing the passwords of the XI 3.0 service users
    will help you.
    We removed and entered the service users again, with the password in CAPITALS and language blank.
    After that our problem was solved, I hope yours too.
    Regards
    Jack

Maybe you are looking for