Microsoft KB Archive/837860

= You cannot use a pass-through pipeline to receive a file in an orchestration in BizTalk Server =

Article ID: 837860

Article Last Modified on 10/25/2007

-

APPLIES TO


 * Microsoft BizTalk Server 2006 R2 Branch Edition
 * Microsoft BizTalk Server 2006 R2 Developer Edition
 * Microsoft BizTalk Server 2006 R2 Enterprise Edition
 * Microsoft BizTalk Server 2006 R2 Standard Edition
 * Microsoft BizTalk Server 2006 Developer Edition
 * Microsoft BizTalk Server 2006 Enterprise Edition
 * Microsoft BizTalk Server 2006 Standard Edition
 * Microsoft BizTalk Server 2004 Developer Edition
 * Microsoft BizTalk Server 2004 Enterprise Edition
 * Microsoft BizTalk Server 2004 Partner Edition

-





SYMPTOMS
If you use the pass-through pipeline to receive a file in an orchestration in Microsoft BizTalk Server 2006 R2, in Microsoft BizTalk Server 2006, or in Microsoft BizTalk Server 2004, the file is suspended, and error messages that are similar to the following appear in the application log of your BizTalk Server computer:

Message 1

The Messaging Engine encountered an error publishing a batch of &quot;1&quot; messages to the Message Box database for the transport adapter &quot;FILE&quot;. Please refer to Health and Activity Tracking tool for more detailed information on this failure and check the endpoint bindings are correctly configured.

Message 2

The Messaging Engine failed to process a message submitted by adapter:FILE Source URL:C:\Program Files\Microsoft BizTalk Server 2004\SDK\Samples\Orchestrations\CallOrchestration\in\*.xml. Details: Could not find a matching subscription for the message. This error occurs if the subscribed orchestration schedule or send port has not been started, or if some of the message properties necessary for subscription evaluation have not been promoted. Please refer to Health and Activity Tracking tool for more detailed information on this failure.

Message 3

The &quot;FILE&quot; adapter is suspending a message coming from Source URL:&quot;C:\Program Files\Microsoft BizTalk Server 2004\SDK\Samples\Orchestrations\CallOrchestration\in\*.xml. Details: &quot;Could not find a matching subscription for the message.&quot;

Message 4

The Messaging Engine has suspended &quot;1&quot; message(s) from adapter &quot;FILE&quot; due to failures in message processing. Please refer to Health and Activity Tracking tool for more detailed information on this failure.

If you view the message details for the suspended message in the Health and Activity Tracking (HAT) interface, the error description reads:

Could not find a matching subscription for the message.



CAUSE
This behavior may occur because the message type that is required to create the subscription for the orchestration is not available because the XML parser has not parsed the message. The Microsoft.BizTalk.DefaultPipelines.Passthrough pipeline does not contain the XML disassembler. Therefore, the message type that is required to create the subscription for the orchestration is not available.



RESOLUTION
This behavior can be resolved depending on the message type that the orchestration is expecting:
 * If the receive shape in the orchestration contains a message that is of an XSD schema type, the orchestration subscribes based on messagetype when the orchestration is enlisted. To set the messagetype property, the receive pipeline must have an XML disassembler. You can change the pipeline that is configured for the receive location to the Microsoft.BizTalk.DefaultPipelines.XMLReceive pipeline because it contains the XML disassembler. You can also use a custom pipeline that contains the XML disassembler.
 * If the receive shape in an orchestration contains a message that is of type System.XML.XMLDocument, the orchestration creates no default subscription when the orchestration is enlisted. You can create a subscription by setting a filter in the receive shape of the orchestration. In this case, the type of pipeline that you use depends on your filter. For example, if you are filtering on ReceivePortName, the pipeline can be anything, including XMLReceive, PassThruReceive, or a custom pipeline, because the ReceivePortName property is not set by a pipeline. If you are filtering based on a promoted property in the message, you must make sure that the XML disassembler is in the pipeline. Therefore, you need to use the Microsoft.BizTalk.DefaultPipelines.XMLReceive pipeline or a custom pipeline that contains an XML disassembler.
 * If the receive shape in an orchestration contains a message that is of type System.String, the orchestration creates a subscription where the messagetype of the message must be “string” when the orchestration is enlisted. In this case, the PassThruReceive pipeline cannot be used because the messagetype property must be set. Because the orchestration subscribes based on the messagetype of the string type, the message that goes to the orchestration must be wrapped around XML tags message . One way to do this would be to use a custom pipeline that has a custom pipeline component that wraps the message(data) with a root node and with the XML disassembler component to set the messagetype. The root node (, for example) will be discarded, and only the actual data will be available in the orchestration.



STATUS
This behavior is by design.

Keywords: kbbiztalk2004-2006swept kbbtsadapters kbbtsmessaging kbbtshat kbbtsorchestration kbprb KB837860

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.