# US 2008/0189439 A1 · Synchronization framework for occasionally connected applications

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2008/0189439 A1
- Document ID: US20080189439A1
- Status: Published application
- Kind: A1
- Application number: 11/670,369
- Filed: 2007-02-01
- Published: 2008-08-07
- Earliest claimed: 2007-02-01
- Assignees: Microsoft Corporation
- Inventors: Sudarshan A. Chitre; Steven M. Lasker; Rafik Robeal; Yi Chen; Vijay Krishna Tandra Sistla; Philip Austin Vaughn
- Web page: https://patentgrep.com/patent/US20080189439A1

## CPC

- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A synchronization framework is provided for synchronizing data groups between a server and clients that may go off-line. The framework includes a client sync provider component that interfaces to client storage in a storage format independent way, a sync agent component that collects synchronization metadata maintained by the clients and uploads and/or downloads changes to the data groups to and/or from server storage and a server sync provider component that interfaces via sync adapters to server storage independently of storage format. The framework provides default building blocks for building off-line synchronizing applications that behave according to default application synchronization scenarios, and also enables custom building blocks for custom off-line application synchronization scenarios.

## Claims

### Claim 1

A synchronization framework for synchronizing at least one data group between a server and at least one client, comprising:
a client sync provider component that interfaces to client storage independently of structure of the client storage during synchronization of the at least one data group between the server and the at least one client;
a sync agent component that collects synchronization metadata maintained by the at least one client for transmission to the server during synchronization and uploads and/or downloads changes to the at least one data group to and/or from server storage; and
a server sync provider component that interfaces to server storage independently of structure of the server storage during synchronization of the at least one data group between the server and the at least one client.

### Claim 2 (depends on 1)

The synchronization framework according to claim 1, further comprising:
a client application that consumes synchronized data by making synchronization requests to the client sync provider component.

### Claim 3 (depends on 2)

The synchronization framework according to claim 2, wherein the client sync provider component is one of a plurality of default client sync providers.

### Claim 4 (depends on 2)

The synchronization framework according to claim 2, wherein the client sync provider component is a client sync provider customized for one or more functions of the client application.

### Claim 5 (depends on 2)

The synchronization framework according to claim 2, wherein the sync agent component propagates error, progress and conflict events to the client application.

### Claim 6 (depends on 1)

The synchronization framework according to claim 1, further comprising:
at least one sync adapter that communicates directly with the server storage, wherein the sync agent component interacts with the server sync provider component that uses the at least one sync adapter to connect to the server storage.

### Claim 7 (depends on 6)

The synchronization framework according to claim 6, wherein each of the at least one sync adapter defines a table and column mapping for each table being synchronized between client and server along with a logical grouping of a plurality of tables.

### Claim 8 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to propagate inserts on the client storage to the server storage.

### Claim 9 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to propagate updates on the client storage to the server storage.

### Claim 10 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to propagate deletes on the client storage to the server storage.

### Claim 11 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to enumerate inserts that took place on the server storage since the last time the client storage synced.

### Claim 12 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to enumerate updates that took place on the server storage since the last time the client storage synced.

### Claim 13 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to enumerate deletes that took place on the server storage since the last time the client storage synced.

### Claim 14 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to obtain the existing row that led to the failure of insert, update or delete commands.

### Claim 15 (depends on 1)

The synchronization framework according to claim 1, wherein the sync agent component instructs the server sync provider component to obtain the existing row that led to the failure of insert, update or delete commands.

### Claim 16 (depends on 1)

The synchronization framework according to claim 1, wherein the server sync provider component stores sync information for the at least one data group, enumerates incremental changes that took place on the server storage since the last sync, applies incremental changes to the server storage received from a client.

### Claim 17 (depends on 1)

The synchronization framework according to claim 1, wherein the server sync provider component detects conflicting updates and enables resolution of the conflicts programmatically or interactively.

### Claim 18

A method for synchronizing at least one data group between a server and at least one client according to a synchronization framework, comprising:
connecting a sync application of the at least one client to the server;
requesting synchronization by the sync application of a client sync provider component of the at least one client that interfaces to client storage independently of structure of the client storage;
receiving synchronization metadata maintained by the at least one client including a synchronization anchor by a sync agent component of the at least one client that interfaces with and instructs one or more components of the server that perform synchronization; and
at least one of uploading or downloading changes to the at least one data group to or from server storage by the sync agent component.

### Claim 19 (depends on 18)

The method according to claim 18, further comprising:
resolving at least one conflict presented by the changes to the at least one data group with reference to at least one synchronization conflict resolution policy.

### Claim 20

A method for synchronizing at least one data group between a server and a loosely coupled client according to a synchronization framework, comprising:
receiving by a server sync provider component a request from the loosely coupled client for synchronization with at least one synchronization group of the server including receiving synchronization metadata maintained by the client enabling determination of the synchronization state of the client;
for each synchronization group of the at least one synchronization group,
receiving by the server sync provider component any changes to the synchronization group from the client; and
updating the at least one synchronization group of the server based on the changes via at least one sync adapter that communicates with server storage independent of the structure of the server storage.
