I ran into a BizTalk problem today that was inevitable. We interface with PeopleSoft a bunch. PeopleSoft has some very specific Schemas it uses to communicate. We have two seperate applications that make use of the same schema in reading responses posted to the PeopleSoft web service. Well the second of two projects what put into production a few days ago. When I came in this morning, one of them had a suspended message on the receive side of a HTTP Send/Receive adapter:
Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
Source: "XML disassembler"
Receive Port: "rcvFile"
URI: "C:\Test\In\*.xml"
Reason: Cannot locate document specification because multiple schemas matched the message type
So, as expected, BizTalk could not figure out which schema to resolve the message to as it exists in this Applicaion and another. The default XML Receive Pipieline is not very helpful in this situation as it is just that - default. The solution turns out to be quite simple. Create a new Receive Pipeline and add an XML Disassembler to the Disassemble stage. In the XML Disassembler's properties, add the desired schema from the application to the disassembler's Document Schemas collection. This tells the disassembler to select from this list only. If the list is empty, it will behave the same way as the default XML Receive Pipeline.