Skip to Content
May 08, 2018 at 10:25 AM

SOAP (Axis) message is being wrapped with an additional envelope/header/body


We send a synchronous SOAP message to a third party that we are trying to change because the third party are migrating their web service from one server to another, and also from SOAP 1.1 to SOAP 1.2.

To this end, we have amended our SOAP Receiver Adapter to use Transport Protocol of "HTTP (Axis)" to allow us to use SOAP 1.2 (Originally, it was using the standard SOAP HTTP - SOAP 1.1 settings in PI).

However, on testing, the third party has noticed that we are sending two envelopes/body/header elements. This is what they are seeing (notice "soapenv" and "env" elements)...

<?xml version="1.0"?>
<soapenv:Envelope xmlns:xsi="" xmlns:xsd="" xmlns:soapenv="">
  <s:Header xmlns:s=""/>
    <env:Envelope xmlns:u="" xmlns:env="" xmlns:a="">
      <env:Body xmlns:wsu="" wsu:Id="Id-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>

Within SXMB_MONI in our PI system we see this in the Payload MainDocument leaving PI (notice just the "env" elements)...

<?xml version="1.0"?>
<env:Envelope xmlns:u="" xmlns:a="" xmlns:env="">
  <env:Body wsu:Id="Id-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" xmlns:wsu=""/>

This has been created by Java Mapping and is what is currently used with the current webservice (using standard SOAP Adapter with HTTP SOAP 1.1).

So, somehow, the XML we believe is leaving PI is being wrapped up in an additional Envelope, Header and Body? (i.e. the "soapenv" elements seem to be added to our "env" elements).

The settings of our Communication Channel (Parameters tab) are as follows:

  • Adapter Type: SOAP
  • Sender/Receiver: Receiver
  • Transport Protocol: HTTP (Axis)
  • Message Protocol: Axis
  • Adapter Engine: Central Adapter Engine
  • Connection Parameters URL: https address of third party webservice
  • Authentication: None
  • Outbound Parameters
  • SOAP Version: 1.2
  • SOAP Action: action required for third party webservice
  • Encapsulation Format: MIME
  • XI Parameters
  • Keep XI Headers: unchecked
  • Keep Attachments: ticked
  • Payload Extraction: SOAP Body Child

The Identifiers and Module tabs of the Communication Channel are as default - so no changes made here.

We tried changing the XI Parameters settings to see if that makes a difference and what we have found is that if we set Payload Extraction to "SOAP Envelope" then the third party does only see one Envelope, Header and Body, as shown here:

<?xml version="1.0"?>
<soapenv:Envelope xmlns:xsi="" xmlns:xsd="" xmlns:soapenv="">

At first, we thought that this had fixed the issue, but on double checking the Envelope tag, we notice that this seems to be the envelope that is somehow added after the message leaves SXMB_MONI (i.e. its the "soapenv" elements but we want the "env" elements).

Has anyone else seen this and know how to resolve please?

Many Thanks,