A protocol used when a distributed transaction contains a number of operations which require a number of servers to operate in conjunction with each other. The protocol ensures that if all the servers involved in the transaction are able to carry out their part then the transaction is carried out; if one or more servers are unable to carry out their part, then the transaction is aborted.