3.2.7.12 Create Superior Enlistment
The Create Superior Enlistment event MUST be signaled with the following arguments:
An Enlistment object
If the Create Superior Enlistment event is signaled, the Core Transaction Manager MUST perform the following actions:
If the transaction referenced by the provided Enlistment object already exists in the transaction table:
Signal the Create Superior Enlistment Failure (section 3.8.7.5) event on the Transaction Manager facet referenced by the provided Enlistment object with the following arguments:
The provided Enlistment object
The Duplicate reason code
Otherwise, if the Core Transaction Manager Facet.Durable Log is too full (section 3.2.3.2) to accept the transaction object referenced by the provided Enlistment object:
Signal the Create Superior Enlistment Failure (section 3.8.7.5) event on the Enlistment object's transaction manager facet with the following arguments:
The provided Enlistment object
The Log Full reason code
Otherwise:
Add the transaction object referenced by the provided Enlistment object to the transaction table, using the Transaction Object.Identifier field of the transaction object as the key.
Set the transaction's Superior Enlistment field to the provided Enlistment object.
Set transaction State to Active.
Set the transaction's Root flag to FALSE.
Signal the Create Superior Enlistment Success (section 3.8.7.4) event on the transaction manager facet referenced by the provided Enlistment object with the provided Enlistment object.