A computer-implemented method of updating a data object shared between a first computing system and a second computing system, wherein the data object has a token associated with it, each computing system (310, 315) has its respective state of the token and at most one of the computing systems (310, 315) can have the token in an active state, wherein the computing system with the token in the active state can perform an update to the data object, the method comprising: at the first computing system: determining that the token for the data object is in an inactive state; and issuing a request for the token to be activated for the first computing system; at the second computing system having the token in an active state: responsive to the request, verifying that a semantic check for the data object is satisfied; and releasing the token to the first computing system, wherein releasing the token to the first computing system comprises transferring the active state of the token to the first computing system; at the first computing system: responsive to the releasing, updating the data object; making a determination about whether the token can be released from the first computing system to the second computing system after the updating, based on where a next transaction on the data object is likely to originate; transmitting (354, 356) a message from the first computing system to the second computing system to replicate the updating of the data object at the second computing system, wherein the message, responsive to the determination, further indicates whether the second computing system can have the token in the active state or not. at the first computing system: determining that the token for the data object is in an inactive state; and issuing a request for the token to be activated for the first computing system; determining that the token for the data object is in an inactive state; and issuing a request for the token to be activated for the first computing system; at the second computing system having the token in an active state: responsive to the request, verifying that a semantic check for the data object is satisfied; and releasing the token to the first computing system, wherein releasing the token to the first computing system comprises transferring the active state of the token to the first computing system; responsive to the request, verifying that a semantic check for the data object is satisfied; and releasing the token to the first computing system, wherein releasing the token to the first computing system comprises transferring the active state of the token to the first computing system; at the first computing system: responsive to the releasing, updating the data object; making a determination about whether the token can be released from the first computing system to the second computing system after the updating, based on where a next transaction on the data object is likely to originate; transmitting (354, 356) a message from the first computing system to the second computing system to replicate the updating of the data object at the second computing system, wherein the message, responsive to the determination, further indicates whether the second computing system can have the token in the active state or not. responsive to the releasing, updating the data object; making a determination about whether the token can be released from the first computing system to the second computing system after the updating, based on where a next transaction on the data object is likely to originate; transmitting (354, 356) a message from the first computing system to the second computing system to replicate the updating of the data object at the second computing system, wherein the message, responsive to the determination, further indicates whether the second computing system can have the token in the active state or not.