Life of a Transaction: Enlistment in a Transaction II (Phases)

i5 The transaction manager creates an internal enlistment object to record the fact that the resource manager is participating in the transaction. It then returns to the MS DTC proxy.
i6 The MS DTC proxy creates an enlistment object and returns the ITransactionEnlistmentAsync interface pointer of the enlistment object to the resource manager. The ITransactionEnlistmentAsync interface contains the PrepareRequestDone, CommitRequestDone, and AbortRequestDone methods. These are the transaction manager-implemented methods that the resource manager invokes after successfully processing an asynchronous PrepareRequest, CommitRequest, or AbortRequest. The MS DTC proxy also returns a GUID identifying the transaction. The resource manager can use this transaction identifier GUID to ensure that the client is sending a request on the same transaction that the resource manager expects. Finally, the MS DTC proxy returns the isolation level specified by the client when it called ITransactionDispenser::BeginTransaction.
i7 The resource manager performs the resource manager operation which the client requested. For example, it might insert, update, or delete a database record. The resource manager responds to the RM proxy, informing it that the requested resource manager operation has been performed.
i8 The RM proxy responds to the client, informing it that the requested resource manager operation has been performed.