cancel
Showing results for 
Search instead for 
Did you mean: 

Can SOAP body have multiple immediate children without splitting the msg

0 Kudos

We have a vendor we need to send a SOAP message to, but they require the SOAP body have two different immediate children. In graphical mapping this doesn't seem to be possible.

If we create separate external definitions for each, then they would become separate target messages once added to a message mapping. If we try to combine the XSDs into one, import it as an external definition, and add it to the mapping, It prompts us to choose one of the elements of the external def from the top level. The only way to choose a second is to add another, which again results it two separate target messages.

Is our vendor's request compliant with W3C standards? If so, is this just a limitation of graphical mapping and what are the most common workarounds in PI?

Accepted Solutions (0)

Answers (1)

Answers (1)

stefan_grube
Active Contributor
0 Kudos

> Is our vendor's request compliant with W3C standards?

Yes, SOAP 1.1 allows this: http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383503

"All immediate child elements of the Body element are called body entries and each body entry is encoded as an independent element within the SOAP Body element."

> If so, is this just a limitation of graphical mapping and what are the most common workarounds in PI?

provide a structure which includes SOAP envelope. In SOAP adapter check the flag "do not use SOAP envelope".

0 Kudos

Thank you for your response. If we create the SOAP envelope with our mapping, then does that affect the ability to use the SOAP adapter to provide a digital signature?

stefan_grube
Active Contributor
0 Kudos

> If we create the SOAP envelope with our mapping, then does that affect the ability to use the SOAP adapter to provide a digital signature?

I don't know. That depends how SOAP adapter works. When SOAP adapter creates SOAP envelop first and then adds the signature independenty, then it will work. If SOAP adapter creates SOAP envelope and signature in one step, then it will not work.

baskar_gopalakrishnan2
Active Contributor
0 Kudos

>>If we create the SOAP envelope with our mapping, then does that affect the ability to use the SOAP adapter to provide a digital signature?

This is what I would do. Consider synchronous scenario. If you sign the message digitally and send it to system A (say outbound) and you need to have the same soap message structure (inbound) during signature verification. Otherwise signature verification process will fail.

Do as follow

Outbound

A) First mapping: Adding soap envelope using (XSLT mapping) or java mapping or any way

B) Second mapping: Signing the message using digital signature via java mapping

Inbound

First mapping should be digital signature verify using java mapping

if the requirement to remove/modify saop envelope on the inbound side or any changes in structure only after the signature verification

stefan_grube
Active Contributor
0 Kudos

> B) Second mapping: Signing the message using digital signature via java mapping

Nice idea, when youknow how to do

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Currently we are doing message level digital signature using apache open source WSS4j successfully for signing and verify through java mapping... So far no issues. Other resource is Java Digital XML signature.

I dont know any alternate option for message level digital signing without java mapping... If so please elaborate...