Patent ID: 8290908

Claim:
A method comprising: connecting a computer system as a client to a server system; synchronizing, by the computer system connected as the client to the server system, a data repository hosted by the server system with a data repository hosted by the computer system, wherein the client used by the computer system to synchronize the data repository hosted by the computer system with the data repository of hosted by the server system is a trusted client configured to support a schema defined by the server system for the data repository hosted by the server system; connecting the computer system as a server with a plurality of devices, wherein at least one device of the plurality of the devices is a trusted client configured to support the schema defined by the server system for the data repository hosted by the server system and supported by the computer system, and at least one device of the plurality of the devices is an untrusted client that is not configured to support the schema; receiving, by the computer system connected as the server with the plurality of devices, requests from the plurality of devices to synchronize data records stored at the plurality of devices; selectively identifying, by the computer system connected as the server with the plurality of devices for each device of the plurality of devices, whether the device is a trusted or an untrusted client based on one or more properties of a request received from the device to synchronize data records stored at the device; synchronizing, by the computer system, the data records stored at the plurality of selectively identified devices with corresponding data records from the data repository hosted by the computer system; synchronizing, by the computer system connected as the client to the server system, the data repository hosted by the computer system, that has been synchronized with the data records stored at the plurality of devices, with the data repository hosted by the server system; receiving, from a device identified as an untrusted client, a request including a change of a data record stored at the untrusted client; in response to determining that the change is invalid against the schema, generating, by the computer system, a synthetic change of the data record that is valid against the schema; and updating a data record from the data repository hosted by the computer system corresponding to the data record stored at the untrusted client that includes the synthetic change.