Guidelines for using MES transaction activities
- Last UpdatedJan 07, 2026
- 2 minute read
The guidelines for using MES XML Command activities within transaction control are:
-
A transaction must start with a Start MES Transaction activity.
-
A transaction must end with either a Commit MES Transaction activity or a Rollback MES Transaction activity. A Rollback activity can be used if the result of the previous activity is not acceptable; for example, if the produced item is out of spec.
-
The Rollback MES Transaction activity is optional. If any error occurs from an MES XML Command activity that is participating in a transaction, then the transaction is automatically rolled back. So, there is no requirement to have an explicit Rollback activity in a transaction. However, as stated above, the rollback activity can be explicitly used to roll back the results depending on the business requirements.
-
The transaction workflow must be linear. Nested or parallel transactions are not supported. This requirement prevents the transaction from being committed or rolled back before all MES activities have been completed.
-
Child workflows can be included in transaction workflows as MES activities. However, only the parent workflow can have the control to commit or rollback a transaction. Note that a transaction rollback will cause any data results from child activities in the transaction to be rolled back as well.
-
The Execute command as part of a transaction property for an MES XML Command activity must be set to Yes for the activity to participate in a transaction.This includes activities in child workflows. Otherwise, the activity will not be executed as part of a transaction (see Include or exclude an activity from the Transaction).
-
The data reads from an MES XML Command activity will not participate in the client-side transactions even though its Execute command as part of a transaction property is set to Yes.
-
All MES XML Commands within transaction control must be run on the same server. Transaction control does not flow across separate servers (for example, in a load balance scenario).