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.

Similar Messages

  • 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

  • 1:2 Message Mapping WithOut BPM - Split mapping created no messages Error

    Hi,
    I am a new-bie to SAP PI and am trying out the following scenario without BPM.
    Make multiple files based on Age received from input file.Input File contains Name,DOB and Output File contains Name, Age.
    I want to create 2 files, one containing details of people with Age <21 and the other output file containing details of people with Age >= 21.
    To acheive this,
    In IR, I created 2 DT and 3 MT,1 MM with 2 Target MT,both having occurences 0..unbounded, 1 IM with 2 Target MI,both having occurences 0..unbounded
    And in ID, 1 Sender Agreement, 2 Receiver Agreement, 1 Receiver Determination, 1 Interface Determination using Enhanced Interface Determination.
    When i run this scenario, I am getting the following error "Split mapping created no messages"
    Please let me know how can I resolve it.

    Oops, I did not know that.
    Thanks for that information. uhuuuuuuuuuuu, atlast the message is processed and I am seeing output files created.
    But, there is still one problem. My output files are created with just the following content
    <?xml version="1.0" encoding="utf-8" ?>
      <ns1:MT_2OP_File_Out xmlns:ns1="http://POC_Sec1_1IP2OP2" />
    In MM, I see the output message as follows:
    Message
         Message1
             MT_2OP_File_Out
                  Employee
                      Name
                      Age
         Message2
             MT_2OP_File_Out1
                  Employee1
                      Name
                      Age
    The mapping done:
    MT_2OP_File_Out and MT_2OP_File_Out with the Message Type element on source end.
    Employee and Employee1 are mapped as
         Age -> removeContext -> SplitByValue[Each Value] < 21, Map Employee
         Age -> removeContext -> SplitByValue[Each Value] >= 21, Map Employee1 resp
    The fields are straight maps.
    Is there any basic mapping error that I am making. Please help.

  • Multi Message Mapping without BPM: Limitaions

    Hi Crew,
    I have done this one(without BPM)
    https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/3115. [original link is broken] [original link is broken] [original link is broken] [original link is broken]
    I understood that there cannot be multiple receiver services.
    This message splitting can be done only with one sender and one receiver business services (with many communication channels) without BPM.
    Am I right?
    Are there anymore limitations than this?
    Regards,
    Karthik kaveriselvan.

    <i>select multiple receivers using the + button.</i>
    one sender service.
    two receiver service referring to one target interface each with one communicaiton channel each.
    Two interface determination for two business services and they both are refering to the same enhanced interface mapping.
    Created receiver determination and added the two receiver service to it, but when looking at the configuration overview for receiver determinaiton, for each service, both the target interfaces used in interface mapping are listed and the reciever determination shows "Does not exist".
    When I run the scenario, I get "No receiver agreement found" error.
    Please calrify how many receiver agreements have to be configured and how?
    Thanks
    karthik

  • How to check data after mapping for BPM if the mapping done outside BPM ?

    Hi.
    I have simple scenario BPM. Proxy -
    > JDBC. I have 1 message mapping in between PROXY and JDBC.
    and i have put the mapping outside the BPM (i didn' use transformation step). In case error happen. how i can see the data after the mapping ? i am always got difficulty to check the data if i have mapping outside bpm.
    Thank you
    Fernand

    Hi
    In case error happen. how i can see the data after the mapping ?
    You have used mapping in interface determination of corresponding receiver determination. In transaction SXMB_MONI, open message corresponding to that receiver determination. There in left hand side you will see IS pipeline steps. There if you want to see message payload that is input to Mapping than see payload of any pipeline step before Request Message Mapping and test it in Design. If mapping fails you can see trace of the same step.
    Request Message Mapping ---> SOAP Header ---> Trace
    There you can see where your mapping failed.
    And as rohit replied you can also get message from RWB.
    For further clarification revert back to us.
    Regards
    Sami
    Reward points if helpful.

  • Multi-Message Mapping based on value of field - (Without BPM)

    Hi.
    I am having a bit of difficulty with multi-message mapping without BPM. I want to map to message1 & message2 based on a field in the rows of the source structure.
    e.g.
    row1-Source-Field1=> (if equal 0)   => <b>Message1</b>-field1.
    row2-Source-Field1=> (if equal 10) => <b>Message2</b>-field1.
    To attempt to do this, I use the conditions in the graphical mapper:
    if row-Source-Field1 = 0   => Map "Row to MessageType1".
    if row-Source-Field1 = 10 => Map "Row to MessageType2".
    However when I test this the mapping only seems to consider the first row value in row-Source-Field1 and ignores the fact that row two has a value of 10. I think this has something to do with contexts etc..
    I would appreciate any help please.
    Regards.
    Mick.

    in that case try this out
    row1-source-field1 (remove context) -- UDF -splitbyvalue-target
    UDF1(for message 1)
    for(int i=0;i<field1.length;i++)
    if(field1<i>.equals("0"))
    result.addValue(<field to be mapped><i>);
    UDF2(for message 2)
    for(int i=0;i<field1.length;i++)
    if(field1<i>.equals("10"))
    result.addValue(<field to be mapped><i>);

  • Performance considerations with mapping outside the BPE

    Hello together,
    we have an Integration Process with 2 more or less complex transformations steps (i.e. Message Merging).
    Since the overall performance is rather poor, we consider to let the mapping take place outside the IP. This
    means we would have no more transformation step within our IP. Instead we use Interface-Mappings between
    the abstract an the Inbound-Interfaces.
    Does anybody know  whether this approach leads to any significant performance advantages or not?
    Regards Gunnar

    The design with mapping outside BPM is always better in terms of performance.
    Regards,
    Prateek

  • Mapping inside/outside BPM

    Hi All,
    I would like to know the flow when  mapping is inside BPM and when it is outside BPM.
    And also about the configuration steps in either cases.
    Thanks,
    Vishal

    Hi,
    Try to avoid using transformation step in BPM, executing mapping program in business process engine not advisable.
    Try to execute the mapping program in Interface determination level, in this case mapping will execute in Integration engine.
    Flow :
    Sender Communication Channel pick ups the message and send it to Adapter engine ,from there internal XI adapter will take the message from AE and send it IE,when you use BPM ,BPE engine come in to picture to execute/process the message, if you use Transformation step , then mapping program will be executed in Business Process Engine.
    After execution of mapping program in BPEN then message will be send to IE, from there to AE.
    Outbound service Interface---sender abstract interface-receiver abstract interfaceinbound interface (some times).
    AE-IEBPEIEAE
    Regards,
    Raj

  • Duplicate Message ID issue in case of Multi mapping (without BPM)

    Hi Experts,
    I am doing one sample Example for my requirement of converting the single source message data into the multiple Target messages.
    for example, when sender system is sending the 5 sale order details into a single message in PI then my Inbound proxy class of ECC R/3 receiver system must get this sale orders separately, that means inbound proxy class method must be triggered separately for 5 sale orders from sender system. for achieving this, I have used the Multi mapping concept in ESR (without BPM).
    This scenario is in Asynchronous mode.
    The below screen shots give the details on what I have configures so far.
    IN ESR
    IN ID
    IN SXMB_MONI of PI
    IN SXMB_MONI of ECC R/3 Receiver system (Error in Processing)
    due to this error, inbound Proxy class method is not being triggered for the single Sale order details as well,
    please let me know how to tackle this duplicate message ID issue when we have multiple payloads to process in a single message.
    please also let me know if is there any other workaround to fulfil this requirement.
    Thank you,
    Regards,
    Jagesh

    Hi Nunu,
    Check the below blog for restrictions.
    Multi-Mapping without BPM - Yes, it’s possible!
    Restrictions
    Messages that result from the split in a mapping-based message split are sent using one AE. So only adapters running on the AE are supported. In particular, this means that target IDOC message splits are not supported since the IDOC adapter is not part of the AE.
    Regards,
    Praveen.

  • 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

  • Accessing container variable of BPM in Message Mapping function

    Hi,
    I have a scenario in BPM where i have a container variable that is used as a loop counter.I want to access that counter defined , every time when i go around the loop and perform certain actions based on that counter. so how can i access that variable in my message Mapping function.

    Hi Sudharshan,
    check these links, hope they give you the required information (i think there is some problem with SDN site, check these links after a while)
    Re: How to use Container Variable across Maps
    Container object in Message Mapping
    Copy value of container (abstract interface) to an other container
    Regards
    Vishnu

  • Message Mapping Error in BPM

    when message mapping, if the length of source field is longer than specified length, I need to output these kinds of messages. what is the solution?

    Hi,
            try using a user defined function written in java where u can check for the condition and raise a exception.
               if(sourcefield.length()>16)
    S.O.P("The Invoice Number is greater than 16 characters");
    or
       using a BPM where u can check whether Invoice number is greater than 16 characters and if it is true then raise an exception and send the message through BPM.
    regards
    jithesh

  • 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.

  • Message mapping when using BPM?

    We are doing a test to see if you can do a split of a string using standard functions, UDF or BPM.
    We discovered that standard function has some of the functionality but if you are going to solve the problem that way the solution will be very complex. You will get no flexi bility in how to design the string and all the feilds will have to have fix length. So Standard functions are not the solution for us.
    UDF works realy great. Write your java function and map it and everything are running.
    We wont to test BPM as well. and i just started to look at it and how to solve it. I'm a newbee on BPM and for start I'm wondering how the message mapping should look to use in the BPM?
    Sourcemessage looks as follow:
    <Header>
       <Line>  
          <SegmentA>   0 to unbounded
          <SegmentB>   0 to unbounded
          <SegmentC>   0 to unbounded
    SegmentA contains a value to be copied to a segment in the target.
    SegmentB contains a date to be copied to a targetelement.
    SegmentC contains a string that we want to split into several elements in the target structure.
    Targetmessage looks as follow:
    <Header>
       <LineA>   1 to 1   (Will get the value from SegmentA in the sourcemessage.)
       <LineB>   1 to 1   (Will get the value from SegmentB in the sourcemessage.)
       <LineC>   0 to unbounded
          <ElementA>   0 to 1   (Will get a part of the string from SegmentC in the sourcemessage.)
          <ElementB>   0 to 1   (Will get a part of the string from SegmentC in the sourcemessage.)
          <ElementC>   0 to 1   (Will get a part of the string from SegmentC in the sourcemessage.)
    To able to get the messages into BPM I need a interfacemapping and to do the interfacemapping I need to do a messagemapping. How should that messagemapping be configured?

    > Now i want to try to replace that UDF with a BPM (Integration Process).
    An UDF is part of a mapping and an Integration Process is used if you want to realize a more complex scenario then sending a message from System A to System B. In BPM you can do things like collecting messages, use timeouts, ...
    But if you want to use a mapping in a BPM you define your mapping in your Integration Repository (like in a standard scenario without BPM) and then you can use the mapping in the Integration Process.
    That's why i say it's maybe possible to realize your mapping without UDF (for example only with standard functions), but it makes no difference if you use BPM.
    If you want to try finding a solution without UDF, i would suggest to open a new thread for this question.
    Hope this helps.
    Regards
    Patrick

  • 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

Maybe you are looking for