You cannot use a pass-through pipeline to receive a file in an orchestration in BizTalk Server 2004 (837860)
The information in this article applies to:
- Microsoft BizTalk Server 2004 Enterprise Edition
- Microsoft BizTalk Server 2004 Developer Edition
- Microsoft BizTalk Server 2004 Partner Edition
SYMPTOMSIf you use
the pass-through pipeline to receive a file in an
orchestration 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 1The Messaging Engine encountered an error publishing a batch of
"1" messages to the Message Box database for the transport adapter "FILE".
Please refer to Health and Activity Tracking tool for more detailed information
on this failure and check the endpoint bindings are correctly
configured. Message 2The 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 3The "FILE" adapter
is suspending a message coming from 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." Message 4The Messaging Engine has suspended "1"
message(s) from adapter "FILE" 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. CAUSEThis 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.RESOLUTIONThis 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 <string>message</string>. 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 <string> root node and with the XML disassembler component to set the messagetype. The root node (<string>, for example) will be discarded, and only the actual data will be available in the orchestration.
STATUS This
behavior is by design.
Modification Type: | Minor | Last Reviewed: | 8/3/2006 |
---|
Keywords: | kbbiztalk2004-2006swept kbBTSAdapters kbBTSMessaging kbBTSHat kbBTSOrchestration kbprb KB837860 kbAudDeveloper |
---|
|