In addition to combining the wsdls and csds in one file, also consider removing documentation elements
We encountered some soap contracts described in WSDL 1.1 that fail to load into APIM even after combining the WSDL and inmported XLSds with the WSDLProcessor.
It turned out that those WSDLs contain documentation elements in the wsdl:definition, wsdl:port and wsdl:operation declarations.
At least the last two are rejected by APIM.
Therefor, we suggest to remove all wsdl:documentation elements while preparing a WSDL for APIM, preferably automated, for instance in the WSDLProcessor that already does other preparations for APIM.
At the end of Microsoft.Azure.ApiManagement.WsdlProcessor.Common.WsdlDocument.LoadAsync(), add:
//Remove wsdl:documentation elements
var documentationElements = documentElement.Descendants()
.Where(e => e.Name.NamespaceName.Equals(Wsdl11Namespace)
&& e.Name.LocalName.Equals("documentation")).ToList();
logger.Informational("WsdlDocumentation", string.Format(CommonResources.WsdlDocumentationFound, documentationElements.Count));
documentationElements.ForEach(i => i.Remove());
I've got this on a local branch and 'it works for me'. The change itself is trivial, getting it as a branch and PR on github apparently not so much. A push is forbidden. I suspect authorization or firewall issues, but do not know where to start. That's why I show the 2 lines of code (and one line of comment and one line of logging) here.