3.3.7.1.1 Pull TIP Transaction

The Pull TIP Transaction event MUST be signaled by using the following arguments:

If the Pull TIP Transaction event is signaled, the TIP interoperability provider MUST perform the following actions:

  • If the durable log of the Core Transaction Manager Facet is too full<8> to accept the provided transaction object:

    • Signal the TIP Pull Failure event on itself by using the following arguments:

      • The transaction object

      • The TIP error reason code

  • Using implementation-specific functionality, perform the TIP pull propagation of the transaction that is identified by the TIP URL that is specified by the RemoteTipTransactionUrl field of the transaction.

  • If the TIP pull propagation operation is successful:

    • Create a new enlistment object (as specified in [MS-DTCO] section 3.1.3.1) by using the following values:

      • TIP interoperability provider role as the Transaction Manager Facet, as specified in section 3.3.1.1.

      • The transaction object.

      • A null connection object.

    • Signal the Create Transaction event (as specified in [MS-DTCO] section 3.2.7.13) on the Core Transaction Manager Facet using the following arguments:

      • The Enlistment object.

  • Otherwise, if the TIP pull propagation operation fails:

    • Signal the TIP pull failure event on itself using the following arguments:

      • The transaction object.

      • A reason code that matches the cause of the failure, as follows:

        • TIP Connect Error: If the failure was caused by a connectivity issue.

        • Not Pulled: If the TIP transaction manager against which the pull was performed, replied with NOTPULLED. (For more information, see [RFC2371] section 13.)

        • TIP Error: If any other failure occurred.