Blog Post

Azure Integration Services Blog
23 MIN READ

Custom Connector Creation Limitation - Multiple Ports in WSDL

mshboul's avatar
mshboul
Icon for Microsoft rankMicrosoft
Mar 24, 2023

One of the possible ways to create a custom connector for logic app; is to import WSDL via the wizard to create the connector definition. The creation wizard uses APIM to create the connector, and there is a limitation when importing from WSDL. The limitation is that the operations defined within the WSDL need to by under a single port type definition. If multiple port definition was defined in the WSDL, only operations related for the first port (defined in <wsdl:service> tage)will be shown as part of the connector definition, and the other operations in other ports will be skipped.

 

Let us have a sample WSDL that contains several ports; as below:

 

<?xml version="1.0" encoding="utf-8"?> <wsdl:definitions name="OrdersAPI" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:tns="http://tempuri.org/" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsp:Policy wsu:Id="ws_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SymmetricBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:ProtectionToken> <wsp:Policy> <sp:SecureConversationToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:RequireDerivedKeys/> <sp:BootstrapPolicy> <wsp:Policy> <sp:SignedParts> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts> <sp:Body/> </sp:EncryptedParts> <sp:SymmetricBinding> <wsp:Policy> <sp:ProtectionToken> <wsp:Policy> <sp:SpnegoContextToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"> <wsp:Policy> <sp:RequireDerivedKeys/> </wsp:Policy> </sp:SpnegoContextToken> </wsp:Policy> </sp:ProtectionToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:Basic256/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> <sp:EncryptSignature/> <sp:OnlySignEntireHeadersAndBody/> </wsp:Policy> </sp:SymmetricBinding> <sp:Wss11> <wsp:Policy/> </sp:Wss11> <sp:Trust10> <wsp:Policy> <sp:MustSupportIssuedTokens/> <sp:RequireClientEntropy/> <sp:RequireServerEntropy/> </wsp:Policy> </sp:Trust10> </wsp:Policy> </sp:BootstrapPolicy> </wsp:Policy> </sp:SecureConversationToken> </wsp:Policy> </sp:ProtectionToken> <sp:AlgorithmSuite> <wsp:Policy> <sp:Basic256/> </wsp:Policy> </sp:AlgorithmSuite> <sp:Layout> <wsp:Policy> <sp:Strict/> </wsp:Policy> </sp:Layout> <sp:IncludeTimestamp/> <sp:EncryptSignature/> <sp:OnlySignEntireHeadersAndBody/> </wsp:Policy> </sp:SymmetricBinding> <sp:Wss11 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy/> </sp:Wss11> <sp:Trust10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <wsp:Policy> <sp:MustSupportIssuedTokens/> <sp:RequireClientEntropy/> <sp:RequireServerEntropy/> </wsp:Policy> </sp:Trust10> <wsaw:UsingAddressing/> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_submitOrder_Input_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_submitOrder_output_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetOpenOrders_Input_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetOpenOrders_output_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetMostRecentOrder_Input_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetMostRecentOrder_output_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetOrder_Input_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_GetOrder_output_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_CancelOrder_Input_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsp:Policy wsu:Id="ws_CancelOrder_output_policy"> <wsp:ExactlyOne> <wsp:All> <sp:SignedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> <sp:Header Name="To" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="From" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="FaultTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="ReplyTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="MessageID" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="RelatesTo" Namespace="http://www.w3.org/2005/08/addressing"/> <sp:Header Name="Action" Namespace="http://www.w3.org/2005/08/addressing"/> </sp:SignedParts> <sp:EncryptedParts xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy"> <sp:Body/> </sp:EncryptedParts> </wsp:All> </wsp:ExactlyOne> </wsp:Policy> <wsdl:types> <xs:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import namespace="http://schemas.datacontract.org/2004/07/FazioAPISoap"/> <xs:element name="submitOrder"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="order" nillable="true" type="q1:Order" xmlns:q1="http://schemas.datacontract.org/2004/07/FazioAPISoap"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="submitOrderResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="submitOrderResult" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetOpenOrders"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="cust" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetOpenOrdersResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="GetOpenOrdersResult" nillable="true" type="q2:ArrayOfOrderSummary" xmlns:q2="http://schemas.datacontract.org/2004/07/FazioAPISoap"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetMostRecentOrder"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="cust" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetMostRecentOrderResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="GetMostRecentOrderResult" nillable="true" type="q3:Order" xmlns:q3="http://schemas.datacontract.org/2004/07/FazioAPISoap"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetOrder"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="orderId" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="GetOrderResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="GetOrderResult" nillable="true" type="q4:Order" xmlns:q4="http://schemas.datacontract.org/2004/07/FazioAPISoap"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CancelOrder"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="orderId" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="CancelOrderResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="CancelOrderResult" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/"> <xs:element name="anyType" nillable="true" type="xs:anyType"/> <xs:element name="anyURI" nillable="true" type="xs:anyURI"/> <xs:element name="base64Binary" nillable="true" type="xs:base64Binary"/> <xs:element name="boolean" nillable="true" type="xs:boolean"/> <xs:element name="byte" nillable="true" type="xs:byte"/> <xs:element name="dateTime" nillable="true" type="xs:dateTime"/> <xs:element name="decimal" nillable="true" type="xs:decimal"/> <xs:element name="double" nillable="true" type="xs:double"/> <xs:element name="float" nillable="true" type="xs:float"/> <xs:element name="int" nillable="true" type="xs:int"/> <xs:element name="long" nillable="true" type="xs:long"/> <xs:element name="QName" nillable="true" type="xs:QName"/> <xs:element name="short" nillable="true" type="xs:short"/> <xs:element name="string" nillable="true" type="xs:string"/> <xs:element name="unsignedByte" nillable="true" type="xs:unsignedByte"/> <xs:element name="unsignedInt" nillable="true" type="xs:unsignedInt"/> <xs:element name="unsignedLong" nillable="true" type="xs:unsignedLong"/> <xs:element name="unsignedShort" nillable="true" type="xs:unsignedShort"/> <xs:element name="char" nillable="true" type="tns:char"/> <xs:simpleType name="char"> <xs:restriction base="xs:int"/> </xs:simpleType> <xs:element name="duration" nillable="true" type="tns:duration"/> <xs:simpleType name="duration"> <xs:restriction base="xs:duration"> <xs:pattern value="\-?P(\d*D)?(T(\d*H)?(\d*M)?(\d*(\.\d*)?S)?)?"/> <xs:minInclusive value="-P10675199DT2H48M5.4775808S"/> <xs:maxInclusive value="P10675199DT2H48M5.4775807S"/> </xs:restriction> </xs:simpleType> <xs:element name="guid" nillable="true" type="tns:guid"/> <xs:simpleType name="guid"> <xs:restriction base="xs:string"> <xs:pattern value="[\da-fA-F]{8}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{4}-[\da-fA-F]{12}"/> </xs:restriction> </xs:simpleType> <xs:attribute name="FactoryType" type="xs:QName"/> <xs:attribute name="Id" type="xs:ID"/> <xs:attribute name="Ref" type="xs:IDREF"/> </xs:schema> <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.datacontract.org/2004/07/FazioAPISoap" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.datacontract.org/2004/07/FazioAPISoap"> <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <xs:complexType name="Order"> <xs:sequence> <xs:element minOccurs="0" name="customer_id" type="xs:int"/> <xs:element minOccurs="0" name="line_items" nillable="true" type="q1:ArrayOfint" xmlns:q1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> <xs:element minOccurs="0" name="order_header_data" nillable="true" type="tns:OrderHeaderData"/> <xs:element minOccurs="0" name="order_id" type="xs:int"/> <xs:element minOccurs="0" name="shipping_address" nillable="true" type="tns:ShippingAddress"/> </xs:sequence> </xs:complexType> <xs:element name="Order" nillable="true" type="tns:Order"/> <xs:complexType name="OrderHeaderData"> <xs:sequence> <xs:element minOccurs="0" name="Bar" type="xs:boolean"/> <xs:element minOccurs="0" name="Foo" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="OrderHeaderData" nillable="true" type="tns:OrderHeaderData"/> <xs:complexType name="ShippingAddress"> <xs:sequence> <xs:element minOccurs="0" name="Address1" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="Address2" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="City" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="Country" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="StateCounty" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="ZipPostcode" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:element name="ShippingAddress" nillable="true" type="tns:ShippingAddress"/> <xs:complexType name="ArrayOfOrderSummary"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="OrderSummary" nillable="true" type="tns:OrderSummary"/> </xs:sequence> </xs:complexType> <xs:element name="ArrayOfOrderSummary" nillable="true" type="tns:ArrayOfOrderSummary"/> <xs:complexType name="OrderSummary"> <xs:sequence> <xs:element minOccurs="0" name="order_header_data" nillable="true" type="tns:OrderHeaderData"/> <xs:element minOccurs="0" name="order_id" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:element name="OrderSummary" nillable="true" type="tns:OrderSummary"/> </xs:schema> <xs:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <xs:complexType name="ArrayOfint"> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="int" type="xs:int"/> </xs:sequence> </xs:complexType> <xs:element name="ArrayOfint" nillable="true" type="tns:ArrayOfint"/> </xs:schema> </wsdl:types> <wsdl:message name="IFazioService_submitOrder_InputMessage"> <wsdl:part name="parameters" element="tns:submitOrder"/> </wsdl:message> <wsdl:message name="IFazioService_submitOrder_OutputMessage"> <wsdl:part name="parameters" element="tns:submitOrderResponse"/> </wsdl:message> <wsdl:message name="IFazioService_GetOpenOrders_InputMessage"> <wsdl:part name="parameters" element="tns:GetOpenOrders"/> </wsdl:message> <wsdl:message name="IFazioService_GetOpenOrders_OutputMessage"> <wsdl:part name="parameters" element="tns:GetOpenOrdersResponse"/> </wsdl:message> <wsdl:message name="IFazioService_GetMostRecentOrder_InputMessage"> <wsdl:part name="parameters" element="tns:GetMostRecentOrder"/> </wsdl:message> <wsdl:message name="IFazioService_GetMostRecentOrder_OutputMessage"> <wsdl:part name="parameters" element="tns:GetMostRecentOrderResponse"/> </wsdl:message> <wsdl:message name="IFazioService_GetOrder_InputMessage"> <wsdl:part name="parameters" element="tns:GetOrder"/> </wsdl:message> <wsdl:message name="IFazioService_GetOrder_OutputMessage"> <wsdl:part name="parameters" element="tns:GetOrderResponse"/> </wsdl:message> <wsdl:message name="IFazioService_CancelOrder_InputMessage"> <wsdl:part name="parameters" element="tns:CancelOrder"/> </wsdl:message> <wsdl:message name="IFazioService_CancelOrder_OutputMessage"> <wsdl:part name="parameters" element="tns:CancelOrderResponse"/> </wsdl:message> <wsdl:portType name="IFazioService2"> <wsdl:operation name="GetMostRecentOrder"> <wsdl:input wsaw:Action="http://tempuri.org/IFazioService/GetMostRecentOrder" message="tns:IFazioService_GetMostRecentOrder_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IFazioService/GetMostRecentOrderResponse" message="tns:IFazioService_GetMostRecentOrder_OutputMessage"/> </wsdl:operation> <wsdl:operation name="GetOrder"> <wsdl:input wsaw:Action="http://tempuri.org/IFazioService/GetOrder" message="tns:IFazioService_GetOrder_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IFazioService/GetOrderResponse" message="tns:IFazioService_GetOrder_OutputMessage"/> </wsdl:operation> <wsdl:operation name="CancelOrder"> <wsdl:input wsaw:Action="http://tempuri.org/IFazioService/CancelOrder" message="tns:IFazioService_CancelOrder_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IFazioService/CancelOrderResponse" message="tns:IFazioService_CancelOrder_OutputMessage"/> </wsdl:operation> </wsdl:portType> <wsdl:portType name="IFazioService"> <wsdl:operation name="submitOrder"> <wsdl:input wsaw:Action="http://tempuri.org/IFazioService/submitOrder" message="tns:IFazioService_submitOrder_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IFazioService/submitOrderResponse" message="tns:IFazioService_submitOrder_OutputMessage"/> </wsdl:operation> <wsdl:operation name="GetOpenOrders"> <wsdl:input wsaw:Action="http://tempuri.org/IFazioService/GetOpenOrders" message="tns:IFazioService_GetOpenOrders_InputMessage"/> <wsdl:output wsaw:Action="http://tempuri.org/IFazioService/GetOpenOrdersResponse" message="tns:IFazioService_GetOpenOrders_OutputMessage"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="ServicePort2" type="tns:IFazioService2"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="GetMostRecentOrder"> <soap:operation soapAction="http://tempuri.org/IFazioService/GetMostRecentOrder" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="GetOrder"> <soap:operation soapAction="http://tempuri.org/IFazioService/GetOrder" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="CancelOrder"> <soap:operation soapAction="http://tempuri.org/IFazioService/CancelOrder" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="ServicePort1" type="tns:IFazioService"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="submitOrder"> <soap:operation soapAction="http://tempuri.org/IFazioService/submitOrder" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="GetOpenOrders"> <soap:operation soapAction="http://tempuri.org/IFazioService/GetOpenOrders" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="OrdersAPI"> <wsdl:port name="ServicePort2" binding="tns:ServicePort2"> <soap:address location="http://fazioapisoap.azurewebsites.net/FazioService2.svc"/> </wsdl:port> <wsdl:port name="ServicePort1" binding="tns:ServicePort1"> <soap:address location="http://fazioapisoap.azurewebsites.net/FazioService.svc"/> </wsdl:port> </wsdl:service> </wsdl:definitions>

 

In the above WSDL, the total number of operations is five, and they are split between two ports, named "ServicePort1" and "ServicePort2". 

 

ServicePort1 has two operations:

  • GetOpenOrders
  • submitOrder

ServicePort2 has three operations:

  • CancelOrder
  • GetMostRecentOrder
  • GetOrder. 

Service Port 2 is the first port defined within the <wsdl:service> tag.

 

If we import this WSDL into SOAPUI; we will have all 5 operations:

 

 

Now, if we go to Azure Portal, and create a new Logic App Custom Connector, and use the same WSDL to create a SOAP to REST connector, we will notice only Three operations are listed as part of the connector definition as below:

 

As mentioned before, only the operation related to the first defined port will show in the portal, and to overcome this limitation we have two options:

  1. Merge all operations to be under a single port definition in the WSDL: For this option, we merge all operations to be under a single port in the WSDL, and to have the WSDL has a single port as part of its definition
  2. Split the WSDL into multiple WSDLs; where each WSDL contains single port definitions: For this option, we split the WSDL into multiple WSDL's where WSDL each is having a single port, with its set of operations.

 

 

 

Updated May 14, 2021
Version 1.0
No CommentsBe the first to comment