cancel
Showing results for 
Search instead for 
Did you mean: 

Splitting 1:n and splitting to 2 interfaces

Former Member
0 Kudos

Hello guru's

I have the following scenario and requirements.

I receive one message with multiple records from Sender.

1)  All records must be sent separately to Receiver

(easy to do with the 1:n split)

2)  Depending on content of the record some records must be mapped differently and sent via a different interface.

So my example is this:

<message>

  <record>

    <ID> 1111 </ID>

    <indicator>NEW</indicator>

  </record>

  <record>

     <ID> 2222 </ID>

     <indicator>NEW</indicator>

  </record>

     <ID> 3333 </ID>

     <indicator>CHG</indicator>

  </record>

  <record>

    <ID> 4444 </ID>

    <indicator>CHG</indicator>

  </record>

</message>

So in this case it would be that all records where indicator has value NEW we must use mapping A and interface A and all records where value for indicator is CHG must be sent via mapping B to interface B.

But both interfaces still point to the same RECEIVER.

The last requirement would be that all records where indicator has value NEW be sent first.

Can this be done without BPM?

Is there a way to use a dummy receiver in PI system?

What would be the best way to create the required solution?

Regards

Robert

Accepted Solutions (1)

Accepted Solutions (1)

PeterJonker
Active Contributor
0 Kudos

Yes you can do it. You need to sort the mapping after (first) 1:n mapping based on indicator, use interface determination condition and check maintain order at runtime.

Former Member
0 Kudos

Hi Peter,

Thx for your reply.

I created 1 to N mapping where on the N side i have 2 messages: the first is for the NEW and the second is for the CHG messages. Then i call the operation mapping in the interface determination and it works.

Now i have another problem though for i wanted to put this to an ECC proxy receiver. However i got the error that: ADAPTER_NOT_MMF meaning that "Adapter IENGINE cannot process message packages" which is something i was not aware of.

When i did a quick test and put  a dummy file receiver in place of the proxy the message was processed without error and i saw 4 messages in the adapter engine monitoring.

But i dont want to use file receiver.

Is there another way to do this?

Regards

Robert

Former Member
0 Kudos

Hi,

It seems you have done multimapping, the message will split into multiple messages in adapter engine but in your case you used proxy which relies on Integration Engine. Please check this thread

However you can use soap adapter with XI protocol for your requirement if you are using PI7.1. Please check this link http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/70066f78-7794-2c10-2e8c-cb967cef4...

Regards,

Praveen

former_member184720
Active Contributor
0 Kudos

Have a look at the below blog -

Answers (2)

Answers (2)

Former Member
0 Kudos

Hi everyone,

Thx for the input. The interface works now as required.

Regards

Robert

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Have a look at this blog. You can do condition based interface determination as given below

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/90dcc6f4-0829-2d10-b0b2-c892473f1...

Former Member
0 Kudos

Hi guys,

I have managed it allright with a few modifications.

The message mapping is really the heart of it all.

The receiver adapter works allright as SOAP adapter with XI protocol.

The one thing that i'm not completely sure about is the sorting into NEW and CHG, where the NEW messages must be sent first to the receiver.

I've now created the message mapping so that it splits to message1 and message2 where message1 gets created for every NEW and message2 gets created for every CHG. Likewise in the OM and then when i call that in the Interface Determnination it all looks ok.

Using testcase of 4 records NEW, CHG, NEW, CHG it looks like it gets sent to receiver NEW, NEW, CHG, CHG, so it looks ok.

I just would like to see if there is a way to make sure that it gets done in the required way. Anyway, thx all sofar in thinking with me.

Regards

Robert

PeterJonker
Active Contributor
0 Kudos

I am not sure, but the maintain order at runtime should do it. Otherwise you need to use a BPM in which you have two send steps sequentially, first a send step for the new and after a send step for the CHG.

But try it first with maintain order at runtime and a big dataset.