cancel
Showing results for 
Search instead for 
Did you mean: 

Manage multiple structure mapping

jean-philippe_pain2
Participant
0 Kudos

Hello all,

i have a scenario MAIL -> PI -> MAIL.

I am working with standard XSD with multiple external references and namespaces for my outbound and inbound structureq. All messages have different structures that i cannot merge because of different namespace untouchable.

I have a Sender Mail Adapter in order to read my mailbox with an interface filling in it.

I know the interface i need to use only when i am reading a specific field in the mail attachment.

My problem is that the interface in the CC refers to one Interface mapping while i need something dynamic. I cannot use also condition in receiver determination or interface determination due to my standard structure.

I would like something to allow me to choose what Interface mapping i use... I recall that each XSD structure are different, this is the main problem for me.

It must be a way to do it but i don't find it, someone got an idea ?

Thanks,

Jean-Philippe

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi!

Did you think about the opportunity to use BPM? There you can analyze your source message and then decide what mapping has to done etc.

Regards

Heinrich

jean-philippe_pain2
Participant
0 Kudos

Hi Heinrich,

I've thought about that but i was hoping to avoid that.

Why ? Because i have more than 20 differents possible messages i can receive by mail so that's mean, more than 20 branchs in my condition step ! I was hoping to find a more simple way to do it..

Jean-Philippe

Edited by: Jean-Philippe PAIN on Jan 20, 2010 2:16 PM

Former Member
0 Kudos

Is the receiver interface depending on a value from the mail attachment or from the mail message? If you just have to access the main message, you could try a condition in receiver determination based on xpath?

jean-philippe_pain2
Participant
0 Kudos

The receiver interface is depending on a value from the mail attachment.

For example: if i have A -> im1, if i have B -> im2

The problem is that the structures used in im1 and im2 are completely different and the source message also....

Former Member
0 Kudos

You can define an XPATH expression independently from the sender interface in the condition editor. You don't even have to chose the right sender interface. You can create a dummy interface and just don't give any real structure. During runtime the xpath condition should be checked by PI. Do you understand, what I mean?

jean-philippe_pain2
Participant
0 Kudos

You mean that i use the condition in a receiver determination but, from what i understand, the xpath you use is related to the sender interface (the outbound structure) which is different each time in my case. In that case, i should have as many lines in my receiver determination that i have different interface determination evenif the service receiver is the same no ?

But, if i am understanding well what you are saying, PI doesn't really care about the structure in it ? And when you build your Interface determination it's linked via the sender interface with the receiver determination no ? So if i put a dummy interface, i cannot build a correct interface determination and so on...

Can you be more specific please or give me a simple exemple ?

Edited by: Jean-Philippe PAIN on Jan 20, 2010 2:45 PM

Former Member
0 Kudos

OK, if you always have the same receiver, you should give the condition in the interface determination. On which PI version are you working?

In fact PI doesn't care as much about real fitting interface structures as long as you do not wish to do validation or so. You just have to configure things right. E.g. you can chose as interface the IDoc WBBDLD04, but you give the PI an INVOIC01. If you just transport the message, nobody cares.

Now, if you read the mails from your mailbox with a dummy interface, you actually don't know, what's in your message. You're sending the message always to the same receiver system, so you don't have to give any condition here. Now in interface determination, you give all the interfaces that possibly could be on the inbound side. For each interface you now have to put a condition, where you check with an xpath expression, if it is maybe a WBBDLD04 or an INVOIC01 or a DELVRY03 or whatever you have to check.

jean-philippe_pain2
Participant
0 Kudos

Until this evening, i am currently workin on PI 7.0 but from tomorrow, i will be on 7.1.

Ok, i am beginning to understand what your are saying. To be clear, i can put any interfaces in my receiver determination, the important thing is fill up correctly the interface determination, is that right ?

If that's right, what is the purpose of the receiver determination then and how do you link you interface determination with the receiver determination (e.g. the overview for receiver determination will be in red then)

am i clear ?

Former Member
0 Kudos

In the receiver determination you configure which receiver system/service is available for the combination of your sender-system/service and the sender-interface. Creating the interface determination, you have to give the same sender-information as you have given in the receiver determination. When chosing the receiver interface and the needed mapping, you have to know, what king of structure your message has, so the mapping can be processed successfully.

By the way, the sender information in your sender agreement has to be the same as for the receiver determination.

jean-philippe_pain2
Participant
0 Kudos

Ok, i see what you mean but concretely, i don't see yet how to implement this : sender dummy interface structure vs the structure outbound of my interface mapping.

Anyway, thanks for your help, i am going to try as you say now.

Jean-Philippe.

Former Member
0 Kudos

In the interface determination you have to chose the right interface mapping for the sender and receiver interface. You have to make sure to configure this right. During runtime, if you have done everything right, PI takes the sender message and tries to map it into the receiver structure. If your filter works right, also the mapping should work. Just keep in mind that you have to chose the real SenderInterface2ReceiverInterface-mapping and not a Dummy2ReceiverInterface-mapping.

jean-philippe_pain2
Participant
0 Kudos

1. With the dummy sender interface in receiver determination, it always says :" no receiver agreement found ...." . They exist with good receiver interface in it...

2. For my informations, if i have two different receiver, this manipulation must be done in the receiver determination for the condition part no ? In that case, i must continue to use dummy interfaces ?

Edited by: Jean-Philippe PAIN on Jan 20, 2010 4:37 PM

Former Member
0 Kudos

Did you create a new sender agreement for your sender mail channel? Sender agreement and receiver determination have to fit on the sender information, otherwise PI won't find receivers.

jean-philippe_pain2
Participant
0 Kudos

Down finally.

Thanks,

Jean-Philippe

Former Member
0 Kudos

Sounds good

How did you do it? Could be interesting for others too...

jean-philippe_pain2
Participant
0 Kudos

Finally, the process works well when the name space are the same with the dummy interface.

Anyway, what i've done

1. Create dummy or generic interface

2. this interface is source target in my Operation Mapping

3. Interface determination with dummy interface and i select the good OM i want to use.

4. sender agreement => dummy interface.

But, finally, my dummy interface has a different namespace than my messages in input and i cannot create as many namespace in PI that i have messages...that's pity, must find a different way i think.

Answers (0)