Friday 23 September 2011

Biztalk Dynamic Request Response Port –Consume WCF Service - Error MoveToNextTransport()


Dynamic Request Response Port – Consume WCF Service - Error MoveToNextTransport()
The transport proxy method MoveToNextTransport() failed for adapter WCF-Custom: Reason: "Messaging engine has no record of delivering the message to the adapter. This could happen if MoveToNextTransport() is called multiple times for the same message by the adapter or if it is called for a message which was never delivered to the adapter by the messaging engine". Contact the adapter vendor.


Recently I developed a common Orchestration to send message to WCF Service and get a response from service using Dynamic Request-Response Port.

Basically I am using this Orchestration to receive message from any other orchestration or ESB Itinerary. Here I have two options to resolve the endpoint details.

When a message received form another orchestration, the received message (Xml) contains the additional elements to detail about the endpoint info. When a message received from ESB Itinerary, I am using Resolver dictionary to find the endpoint info, it could be a static or UDDI or BRE resolver.

Every thing looks fine and my orchestration looks like below, I also included XLANGs.BaseTypes.Address and XLANGs.BaseTypes.TransportType to define my endpoint info.
Orchestration is working fine when I submit properly formatted message. It also received a proper fault message when ever endpoint service throws a fault.
Here is the issue, when SOAP fault comes back to orchestration it could see an event log with below error.

The transport proxy method MoveToNextTransport() failed for adapter WCF-Custom: Reason: "Messaging engine has no record of delivering the message to the adapter. This could happen if MoveToNextTransport() is called multiple times for the same message by the adapter or if it is called for a message which was never delivered to the adapter by the messaging engine". Contact the adapter vendor.

When I google it, some one suggested me to add “PropogateFaultMessage=False” to the dynamic port to overcome this error. However that resulted me many other issues then I started digging the issue for 2 days and finally found the solution.




The solution is to add the adapter binding type before you submit message to endpoint system.
Here is my updated code at message assignment shape.




You can reach me @ raj.webjunky@yahoo.com