Schema Extension (Polymorphism) in Soap Services (8.0)

The requirement is to import a WSDL file which uses Schema Extension for the Base Complex Type as well as the Child Complex Type. For ex, there could be a generic CustomerType schema which is extended by a USCustomerType and EUCustomerType. The USCustomerType might have few additional US specific field and similarly for the EUCustomerType.

This Base CustomerType may also have a child element/schema of AddressType. Now the AddressType can also be extended to EUAddressType or USAddressType.

Note: The USCustomer can have both EUAddressType and/or US AddressType. So on and so forth.

The ESB layer has to do simple mediation based on the above use-case where on a condition (For ex, if its EUCustomerType, the request needs to be routed to EU Service or if its USCustomerType, the request needs to be routed US Service.) The condition could also be embedded within the child element.

WM 8.1 implementation problems since this is not supported in 7.1.2

Design-time: when WM creates the document while importing the WSDL file with schema extension, it creates separate documents for each - CustomerType, EUCustomerType, USCustomerType, AddressType, USAddressType, EUAddressType with no co-relation for the extension across the types. Due to this the design time omits the extension elements and the base AddressType is attached to the CustomerType. Ideally the document should have a picklist document for the child extension type, so that it can change based on the extension used.

Run time: The service soapClient throws exceptions since the schema extension is lost, and the service finds elements which are coming in as part of the extension.

Tried this in 7.1 and the schema extension is not supported in that version. Opened a SR with SoftwareAG and they said they might have some more support in 8.2 Release. Meanwhile anyone else has come across this problem and have any good recommendations/workarounds to handle the extension and child element extension use-cases.

Thanks,
Nitin