Advanced types in Logic App SOAP Custom Connectors

Please be aware of the following limitation:

  • Only the (base) type directly referred by a SOAP operation’s message will be used to generate JSON to XML translation. Even if the type is declared as abstract. If that base type is derived in one or more sub-types, sub-types that are not referred by the SOAP action directly, the sub-types will not be translated between JSON and XML.

E.g.:

 
<wsdl:operation name="query">
  <wsdl:input message="tns:querySoapIn"/>
  <wsdl:output message="tns:querySoapOut"/>
</wsdl:operation>

<wsdl:message name="querySoapOut">
  <wsdl:part name="parameters" element="tns:Entity"/>
</wsdl:message>

<s:complexType name="Entity" abstract="true">
  <s:sequence>
    <s:element name="Fields" type="tns:ArrayOfField" maxOccurs="1" minOccurs="0"/>
    <s:element name="id" type="s:long" maxOccurs="1" minOccurs="1"/>
    <s:element name="UserDefinedFields" type="tns:ArrayOfUserDefinedField" maxOccurs="1" minOccurs="0"/>
  </s:sequence>
</s:complexType>

<s:complexType name="Skill">
  <s:complexContent mixed="false">
    <s:extension base="tns:Entity">
      <s:sequence>
        <s:element name="Active" maxOccurs="1" minOccurs="0"/>
        <s:element name="CategoryID" maxOccurs="1" minOccurs="0"/>
        <s:element name="Description" maxOccurs="1" minOccurs="0"/>
        <s:element name="Name" maxOccurs="1" minOccurs="0"/>
      </s:sequence>
    </s:extension>
  </s:complexContent>
</s:complexType>

SOAP operation “query” has output message “querySoapOut” directly referring type “Entity”. XML to JSON translation will be generated for “Entity” type and all its members (“Fields”, “id” and “UserDefinedFields”). No translation will be generated for derived type “Skill”.

This is a simplified example based on the real-world WSDL at https://webservices4.autotask.net/atservices/1.5/atws.wsdl

If you do need support for implicit derived types, consider voting for such idea at the Logic Apps uservoice.