PRB: XLANG Schedule That Is Marked as "Treat the XLANG Schedule as a COM+ Component" Fails Activation from BizTalk Messaging (825064)



The information in this article applies to:

  • Microsoft BizTalk Server 2002

SYMPTOMS

If an XLANG schedule is marked as Treat the XLANG schedule as a COM+ component, activation fails in BizTalk Messaging and you receive the following error message:
Distributed transaction completed. Either enlist this session in a new transaction or the NULL transaction.

CAUSE

When you bind a BizTalk Messaging Port to an XLANG schedule, the Orchestration Activation Component (OAC) passes documents to the schedule. The OAC writes the document that the BizTalk Messaging engine was processing to a private Microsoft Messaging queue, and then instantiates the schedule that is bound to the Messaging Port. The OAC instantiates the schedule that is bound to the Messaging Port under the context of a Microsoft Distributed Transaction Controller (MSDTC) transaction.

If the XLANG schedule that is instantiated is marked as Treat the XLANG schedule as a COM+ component, it will also be instantiated under the context of an MSDTC transaction. In this scenario, a race condition may occur. In this race condition, the XLANG schedule tries to enlist in the transaction that the OAC initiated, although the OAC transaction has already been committed or aborted.

WORKAROUND

To prevent the XLANG schedule from trying to enlist in the transaction that the OAC initiates when the OAC instantiates the XLANG schedule, follow these steps:
  1. In the XLANG schedule, right-click the Begin shape, and then click Properties.
  2. Change the setting of Transaction model to Treat the XLANG schedule as a COM+ component.
  3. Change the setting of Transaction activation to Requires New.

STATUS

This behavior is by design.

Modification Type:MajorLast Reviewed:2/3/2004
Keywords:kberrmsg kbprb KB825064 kbAudDeveloper