Tuesday 15 September 2015

There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "XML disassembler" Receive Port: "WcfReceivePort_OracleDBBinding_XXXXXXX" URI: "oracledb://XX.XXX.XX.XX:XXXX/XXXXX/Dedicated" Reason: Cannot locate document specification because multiple schemas matched the message type "http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT#POLLINGSTMT".

ERROR:

There was a failure executing the receive pipeline: "Microsoft.BizTalk.DefaultPipelines.XMLReceive, Microsoft.BizTalk.DefaultPipelines, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Source: "XML disassembler" Receive Port: "WcfReceivePort_OracleDBBinding_XXXXXXX" URI: "oracledb://XX.XXX.XX.XX:XXXX/XXXXX/Dedicated" Reason: Cannot locate document specification because multiple schemas matched the message type "http://Microsoft.LobServices.OracleDB/2007/03/POLLINGSTMT#POLLINGSTMT".


SOLUTION:

Go to your receive location and double click on browse button of XML pipeline you will get a pop up window like below :


















As you can see the first option "Allow UnrecognizedMessage" is set to "FALSE', Make it true:
I hope your error will be gone:

After making it true if you are again getting the same error then:

There is another application that uses a schema generated using the POLLINGSTMT operation
To avoid this, when you specify your connection settings to generate your metadata in VS, you should specify a unique POLLING ID (on the connection details tab), and then use the same POLLING ID when configuring your receive port too.

Thank you

Monday 14 September 2015

Custom Pipeline to remove Unknown/Unwanted/ Characters from Incoming XML message in Biztalk.

Hi Friends,

I got a requirement where I was receiving a incoming xml message from client, that I had to process in Biztalk.

But when we received that message what we found that there was some unknown characters was added as header in that xml file. because of that files were failing at pipeline level. 

Due to some limitations client was not able to remove that header. So I had one option to use custom pipeline to remove that extra unwanted characters and make a valid xml message.

This is my scenario but you can take this example as reference for your requirement if you have:

First I will Show you the incoming message what I was getting from client:























This is my input message. in this message the part I have highlighted from Yellow color is the Unwanted characters which has been added as Header.

The part which is not highlighted, is the actual message what I suppose to receive.

The actual message will be like below snapshot:












Solution:

I will paste the complete code down, but before I would like to give a brief details what I am doing in that code.

Please note its my solution for my requirement specific to me:

I am searching for the position of string <?xml in the incoming message and wherever I am getting that string I am removing from index 0 till that position of <?xml. This I am using at Decode level in custom pipeline.

Here is my code below:






Steps To use this pipeline:

1.Sign in the DLL.
2.Register the DLL in GAC
3.Copy the DLL to Biztalk pipeline component folder.


Thank you for reading this.

Anshu Kumar