Consume Soap "Recursion is not support error"
Question
Application Type
Reactive

Hi All,

I am facing a problem when consume SOAP.

After enter the webservice url, and the system found the 5 functions and ticked.

Then I only get 3 functions is accept. Another show error. Which are

Cannot import getMahEmpBioData method because 'Recursion' is not supported (present in getMahEmpBioDataRespone structure).

Cannot import getBedEntitlement method because 'Recursion' is not supported (present in getBedEntitlementRespone structure).


May i know what is the problem? can be "solve" in OutSystems side? any method reason why have thing error or any method to solve?


Please find the attached file.


Thank you



ConsumeSoap.docx

Hello,

While importing a SOAP Web Service in Service Studio, you get immediate feedback on any currently unsupported feature/use case identified by the development environment.

In this case, you can't import the Web Service immediately using Service Studio. Sometimes you can perform small changes in the WSDL describing the service so that the identified limitations no longer apply, and you can consume the Web Service in OutSystems.

Recursion is one of those unsupported features. Recursive data types are structures that reference themselves. Inside them there is a reference to another element of its own type.

This reference can be direct or indirect. For example, type A has an attribute of type B which references C which in turn contains an element of type A.

Check the following recursion example:

1<xsd:complexType name="Person">
2    <xsd:sequence>
3        <xsd:element name="Firstname" type="xsd:string"/>
4        <xsd:element name="Lastname" type="xsd:string"/>
5        <xsd:element name="PhoneNumber" type="xsd:int"/>
6        <xsd:element name="Address" type="s0:Address"/>
7        <xsd:element name="Contacts" minOccurs="0" maxOccurs="unbounded" type="s0:Person">
8    </xsd:sequence>
9</xsd:complexType>

Use case workaround

Follow these generic guidelines to adapt the WSDL so that the unsupported use case is no longer identified by the platform:

  • "Unroll" the recursive structures up to the level you need to send or receive.
    Following the example above, if you needed to handle two levels of recursion you would:

    1. Change type of Contacts in the Person type to be of type s0:Person2.
    2. Create a copy of the Person definition, renaming it to Person2.
    3. Remove the Contacts element from Person2 definition.

Reference: 

https://success.outsystems.com/Documentation/11/Extensibility_and_Integration/SOAP/Consuming_SOAP_Web_Services/Unsupported_SOAP_Use_Cases#recursion

Community GuidelinesBe kind and respectful, give credit to the original source of content, and search for duplicates before posting.