@publicocean0 it seems like you got this now, but the 2PC protocol is internal to transactions. When a transaction is committed, the 2PC protocol is run internally using all the participants (primitives and partitions) and the result is returned (success/failure). Internally, prepare is run on all participants and then commit depending on whether the prepares all succeeded. There’s no reason that protocol has to be explicitly exposed to the user. The begin/commit pattern is pretty common to database transactions.