cancel
Showing results for 
Search instead for 
Did you mean: 

PI 7.1 : Issue with N:1 File scenario

arkesh_sharma
Active Participant
0 Kudos

Hi Experts,

I am trying to execute a file to file scenario in which I have used a multi-mapping which is 2:1.

I have not used any BPM for this purpose as I thought that in 7.1 we do not need a BPM to successfully execute N:1 Multi-Mapping.

The Source Service interface contains two outbound interfaces which has one message for success and the other for failure. PI 7.1 has the feature to have two interfaces under one Service Interface Name.

So the name of the Service Interface is "MI_Order_Success_Fail" and it has two outbound interfaces within it which contains "Success" and "Fail" interfaces.

My sender system and receiver system is the same but when the file will be posted, the sender and receiver files will have different names.

I tried executing the scenario and it gave the below error.

<SAP:AdditionalText>No standard agreement found for , BS_RECEIVER, , BS_RECEIVER, http://abc.trampolene.com/N:1_MultiMapping_Test, MI_Order_Success_Fail</SAP:AdditionalText>

<SAP:Stack>Problem occurred in receiver agreement for sender -BS_RECEIVER to receiver -BS_RECEIVER,http://abc.trampolene.com/N:1_MultiMapping_Test.MI_Order_Success_Fail: No standard agreement found for , BS_RECEIVER, , BS_RECEIVER, http://abc.trampolene.com/N:1_MultiMapping_Test, MI_Order_Success_Fail</SAP:Stack>

I request you to please help me in this regard and help me fix this issue. Let me know if there is sample scenario available which can help me fix this?

Accepted Solutions (1)

Accepted Solutions (1)

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

N:1 mapping will always use BPM as you need some mechanism to collect the messages.

Hope this helps,

Mark

arkesh_sharma
Active Participant
0 Kudos

Hello Mark & Priyanka,

Thank You for the quick response ! Can you please explain more how I can go ahead using BPM?

My scenario is somewhat different so I thought it might not need a BPM.

The Sender system will send only one message at a time either for success or failure. The source message structure is slightly different for the "success" and "failure" so I had two interfaces in the source side. At a time only 1 message will be sent from the source system (either for success or failure), I have implemented the message mapping with two different source messages and one target message.

Please let me know if the above logic for OM and MM is correct or not? Also, Please let me know what all configurations do I need to do in ID to get rid of the error that I am getting?

Thanks,

Arkesh

PriyankaAnagani
Active Contributor
0 Kudos

Hi,

>>>Please let me know if the above logic for OM and MM is correct or not

Yes...Since your two source structures are different design two datatypes & mssage types with respective fields and add one common fuield for correlation. And use CollectMessagePattern available in the BASIS software component and design your interface with BPM. Follow the second blog by Venkata Ramesh..it'll be the best guide for your scenario.

Regards,

Priyanka

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

The Sender system will send only one message at a time either for success or failure. The source message structure is slightly different for the "success" and "failure" so I had two interfaces in the source side. At a time only 1 message will be sent from the source system (either for success or failure), I have implemented the message mapping with two different source messages and one target message.

Can you tell us more details:

1. Are you using FCC?

2. When you meant slightly different, is it just a few fields?

3. Are the success and failure messages differentiated by FileName?

It seems there is no need to collect the messages and hence no BPM is needed.

Hope this helps,

Mark

arkesh_sharma
Active Participant
0 Kudos

Hi Mark,

Please find the details as mentioned below to the questions asked by you.

1. Are you using FCC?

I am not using FCC. The Sender sends the file in XML format.

2. When you meant slightly different, is it just a few fields?

There is a field in both (Success and Failure) the source XSDs which shows the STATUS of the message whether it is successful or in error. The name of that particular STATUS field is different in the two XSDs. The rest of the structure remains the same in both the XSDs. Both the messages are small in structure.

3. Are the success and failure messages differentiated by FileName?

The File Names will be same for both the messages (Success and Failure).

Thanks,

Arkesh

arkesh_sharma
Active Participant
0 Kudos

Hi Priyanka,

I will tell you the details about the scenario which I am doing.

I have one XSD for Success and one XSD for Failure.

Only one STATUS field's Name is different in both the XSDs. Rest all fields remain the same.

So, I created two MTs and one Service Interface (MI_Order_Success_Fail). Under this service Interface, I added both the outbound MTs (i.e. one operation for Success and the other for Failure). Then I created my MM. Source side I had two MTs and target I had one MT. I mapped the fields based on the STATUS value.

Then I created one OM. Inside that OM my Sender Service Interface is MI_Order_Success_Fail and on the target I had MI_Target. When I clicked on Read interfaces, two outbound Interfaces appeared on the source as one on the target. After this I went on to configure my ID.

In ID, I configured my two file communication channels (one sender and one receiver) for the Business Component BS_RECEIVER. As the sender and receiver system are the same, I had both channels placed under the same Business Component. Then I went on to configure my Sender Agreement, Receiver Agreement and Receiver Determination. These were quite easy. When I configured the Interface Determination, it asked for OM names for both the operations (i.e. Success and Failure). I gave the same OM name which I had configured earlier in ESR.

I saved all changes and activated all my objects. Now when I am trying to execute the scenario, all the steps are getting executed except the receiver agreement. I gave the details of the error earlier in the thread.

Please let me know what is wrong with my configuration?

Thanks,

Arkesh

Former Member
0 Kudos

The N:1 case can be implemented by using BPM only. Because we need a co-relation to collect the data from both the senders.

arkesh_sharma
Active Participant
0 Kudos

Hi Sekhar,

I have only one sender who sends only one message at a time. I get two messages from the same sender but at different times. As per my understanding I don't think we require a correlation in this case. Please correct me if I am missing something here.

Thanks,

Arkesh

PriyankaAnagani
Active Contributor
0 Kudos

Hi,

>> I get two messages from the same sender but at different times.

So the system has to know how much time it has to wait for the second message to arrive to do mapping...i.e you need some integration between the two messages...for that you require an integration process(BPM) with correlation.

Regards,

Priyanka.

arkesh_sharma
Active Participant
0 Kudos

Hi Priyanka,

I do not wish to merge the two messages and neither I wish to pass them simultaneously to the target. I am keeping both the source message under the same MM because they both have the same Target message.

Both the messages will come seperately from the Sender System and they are not inter-dependent.

When success message comes in, the success node in the map should be called which gets mapped to the target.

When Failure message comes in, the failure node in the map should be called which gets mapped to the target.

Thanks,

Arkesh

markangelo_dihiansan
Active Contributor
0 Kudos

Hello,

1. Are you using FCC?

I am not using FCC. The Sender sends the file in XML format.

In that case you can just use one outbound interface, hence only one receiver determination and one sender agreement.

2. When you meant slightly different, is it just a few fields?

There is a field in both (Success and Failure) the source XSDs which shows the STATUS of the message whether it is successful or in error. The name of that particular STATUS field is different in the two XSDs. The rest of the structure remains the same in both the XSDs. Both the messages are small in structure.

You need to have two operation mappings, one for the success and one for the failure. In your interface determination, use xPath to determine which mapping will be used e.g if the status field for failure is existing or has value, then use failure mapping else use the mapping for success. For clarity, use two inbound interfaces, one for success and the other for failure.

More information about xPath can be found in the blogs below:

You would also need to have two receiver agreements.

3. Are the success and failure messages differentiated by FileName?

The File Names will be same for both the messages (Success and Failure).

Since the FileNames are the same, it will not affect number 1 and 2.

Hope this helps,

Mark

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi,

For collecting scenario we should use BPM, because based on one unique id (Correlation) we can collect the messages.

we can develope the scenario for splitting without BPM, but for collecting we should use BPM.

If you want to develope the scenario by using BPM then

https://www.sdn.sap.com/irj/sdn/weblogs?blog=/cs/junior/view/wlg/9918

https://www.sdn.sap.com/irj/sdn/wiki?path=/display/xi/message%2bmerge%2busing%2bthe%2bbpm

If both (2 files) structures are same then we can use BPMPatternCollectPayload predefined pattern, if both structures are different then we can design the BPM by using Fork step and we should use correlationfor both messages.

Regards,

Venkata Ramesh

arkesh_sharma
Active Participant
0 Kudos

Hello Venkata,

I am Not trying to merge the two messages as both the messages won't come together or in succession from the sender system. Only 1 message will come from the source system at a time. I dont know when will the next message come in. Why do I need to collect/ merge the messages?

I am trying to achieve 2:1 mapping just because the message is coming from the same sender system and the target structure is common for both the sender messages.

There is one STATUS field in both the messages whose name is differing in the structure otherwise rest all field names remain the same in both the structures.

Please let me know if this can be done without BPM what I am trying to achieve?

Thanks,

Arkesh

Former Member
0 Kudos

Hi,

You can use any of the collect message pattern provided. In your case any one of the following can be used:

1. BpmPatternCollectMessage

2. BpmPatternCollectTime

->There are some patterns in SWC : SAP BASIS --> namespace : http://sap.com/xi/XI/System/Patterns In ESR of your SAP PI System.

-> please go through this blogs it will help you.

http://www.sdn.sap.com/irj/scn/weblogs?blog=/pub/wlg/10526. [original link is broken] [original link is broken]

with out bpm you can not do N:1 mapping.

regards,

ganesh.

PriyankaAnagani
Active Contributor
0 Kudos

Hi,

>>>>I have not used any BPM for this purpose as I thought that in 7.1 we do not need a BPM to successfully execute N:1 Multi-Mapping

For N:1 multimapping you should use BPM. 1:N you can achieve without BPM.

Use BPM collectPayload or message patterns...also verify whether you configured your receiver agreement for right combination of sender receiver component, service namespace.

Regards,

Priyanka