3.3.5.2 Receiving COMMIT TIP Command

When the TIP subordinate transaction manager facet (section 1.3.1.2.2) receives a COMMIT TIP command, it MUST perform the following actions:

  • If the Connection Type field of the receiving TIP connection object is not set to Secondary, signal the Invalid TIP Command Event (section 3.3.7.1) and terminate the processing of this event.

  • If the State field of the receiving TIP connection object is not set to either Aborted, Enlisted, or Prepared, signal the Invalid TIP Command Event (section 3.3.7.1) and terminate the processing of this event.

  • If the State field of the receiving TIP connection object is set to Enlisted:

    • Set the State field of the receiving TIP connection object to Enlisted Commit.

    • Signal the Begin Phase Zero ([MS-DTCO] section 3.2.7.5) event on the core transaction manager facet with the following argument:

      • The transaction object referenced by the enlistment object referenced by the receiving TIP connection object.

  • Otherwise, if the State field of the receiving TIP connection object is set to Prepared:

    • Signal the Begin Commit ([MS-DTCO] section 3.2.7.2) event on the core transaction manager facet with the following argument:

      • The transaction object referenced by the enlistment object referenced by the receiving TIP connection object.

  • Otherwise:

    •  Set the State field of the TIP connection object referenced by the provided enlistment to Idle.

    • Send an ABORTED TIP command.