# US 10,311,082 B2 · Synchronization of offline instances

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

- Number: US 10,311,082 B2
- Document ID: US10311082B2
- Status: Granted
- Kind: B2
- Application number: 14/977,558
- Filed: 2015-12-21
- Published: 2017-06-22
- Granted: 2019-06-04
- Earliest claimed: 2015-12-21
- Assignees: Sap SE
- Applicants: Sap SE
- Inventors: Gerd Martin Ritter; Pradeep Kumar Singh; Tim Kornmann; Rene Gross
- Web page: https://patentgrep.com/patent/US10311082B2

## CPC

- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F 16/93: Document management systems
- H04L 67/1095: Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An enterprise system which facilitates synchronization of offline data. Offline data created during an offline session or sessions (collectively an offline session) prior to synchronization is assigned a temporary key. Changes of offline data created during an offline session is assigned the temporary key of the data to which the change is associated. The temporary key is mapped to a new created backend key and stored in a mapping table. Using the mapping table, temporary keys associated with the changes are swapped with backend keys which the temporary keys are mapped. This maintains data persistency of newly created and change data during an offline session.

## Claims

### Claim 1

A computer implemented method for uploading offline data comprising:
generating offline change data using a client runtime of a frontend sub-system of an enterprise data system residing on an end user device, wherein the offline change data comprises a change data type selected from a newly created base document, a change to the newly created base document, and a change to a previously synchronized base document;
processing the offline change data each time the change data is generated while offline by: determining the change data type, wherein if the change data type comprises the newly created base document, the processing generates a new unique client key associated with the newly created base document, if the change data type comprises the change to the newly created base document, associating the new client key of the newly created base document to the change of the newly created base document, and if the change data type comprises the previously synchronized base document, associating a backend key of the previously synchronized base document to the change of the previously synchronized base document; and
storing the change data and associated key as an entry in a synchronization queue having x number of entries for generating x number of change data while offline without synchronizing with the backend sub-system, the x number of entries being stored in the synchronization queue is based on time when the change data is generated, the first entry being the earliest change data and the last entry being the latest change data while offline without synchronizing with the backend sub-system; and
synchronizing the x entries in the synchronization queue with the backend sub-system of the enterprise data system residing on a server when the end user device is online, wherein synchronizing comprises: processing the x entries in the synchronization queue wherein if the change data type of an entry being processed is the newly created base document the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of an entry being processed is the newly created base document or the previously synchronized base document the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data;
storing the change data of the entry processed in the backend subsystem; and repeating processing the x entries until all entries are processed.

### Claim 2 (depends on 1)

The method of claim 1 wherein processing the number of x entries in the synchronization queue comprises:
copying the x entries of the synchronization queue to an inbound queue on the backend sub-system; and
processing the x entries of the inbound queue.

### Claim 3 (depends on 1)

The method of claim 1 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 4 (depends on 1)

The method of claim 1 wherein synchronizing comprises: processing the ith entry of the synchronization queue, where i=l to x, wherein the processing comprises if the change data type of the ith entry is the newly created base document, the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of the ith entry is the newly created base document or the previously synchronized base document, the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data; storing the change data of the ith entry in the backend sub-system; and repeating processing the x entries until all entries are processed.

### Claim 5 (depends on 4)

The method of claim 4 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 6 (depends on 4)

The method of claim 4 wherein processing the number of x entries in the synchronization queue comprises: copying the x entries of the synchronization queue to an inbound queue on the backend sub-system; and processing the x entries of the inbound queue.

### Claim 7 (depends on 1)

The method of claim 1 wherein synchronizing comprises: initializing i=l;
copying contents of the synchronization queue to an inbound queue on the backend subsystem;
processing the i*11 entry of the inbound queue comprising determining if the change data type of the it entry is the newly created base document,
if the change data type of the ith entry is a newly created base document, then processing comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of the ith entry is not the newly created base document, then processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change data of the ith entry is associated, and uploading the change data of the ith entry in the backend sub-system; and determining if there are more entries to be processed, wherein determining comprises if there are more entries to be processed, incrementing i by 1 and repeating processing the i*11 entry, and if there are no more entries to be processed, terminating synchronization.

### Claim 8

A system for uploading offline data comprising: at least one programmable data processor; and
memory storing instructions which, when executed by the at least one programmable data processor, result in operations comprising: generating offline change data using a client runtime of a frontend sub-system of an enterprise data system residing on an end user device, wherein the offline change data comprises a change data type selected from a newly created base document, a change to the newly created base document, and a change to a previously synchronized base document;
processing the offline change data each time the change data is generated while offline by: determining the change data type, wherein if the change data type comprises the newly created base document, the processing generates a new unique client key associated with the newly created base document, if the change data type comprises the change to the newly created base document, associating the new client key of the newly created base document to the change of the newly created base document, and if the change data type comprises the previously synchronized base document, associating a backend key of the previously synchronized base document to the change of the previously synchronized base document;
storing the change data and associated key as an entry in a synchronization queue having x number of entries for generating x number of change data while offline without synchronizing with the backend sub-system, the x number of entries being stored in the synchronization queue is based on time when the change data is generated, the first entry being the earliest change data and the last entry being the latest change data while offline without synchronizing with the backend subsystem; and
synchronizing the x entries in the synchronization queue with the backend subsystem of the enterprise data system residing on a server when the end user device is online, wherein synchronizing comprises: processing the x entries in the synchronization queue wherein if the change data type of an entry being processed is the newly created base document, the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of an entry being processed is the newly created base document or the previously synchronized base document, the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data;
storing the change data of the entry processed in the backend sub-system; and repeating processing the x entries until all entries are processed.

### Claim 9 (depends on 8)

The system of claim 8 wherein processing the number of x entries in the synchronization queue comprises: copying the x entries of the synchronization queue to an inbound queue on the backend sub-system; and
processing the x entries of the inbound queue.

### Claim 10 (depends on 8)

The system of claim 8 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 11 (depends on 8)

The system of claim 8 wherein synchronizing comprises: processing the ith entry of the synchronization queue, where i=l to x, wherein the processing comprises if the change data type of the ith entry is the newly created base document, the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and
mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and
if the change data type of the ith entry is the newly created base document or the previously synchronized base document, the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data;
storing the change data of the ith entry in the backend subsystem; and repeating processing the x entries until all entries are processed.

### Claim 12 (depends on 11)

The system of claim 11 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 13 (depends on 11)

The system of claim 11 wherein processing the number of x entries in the synchronization queue comprises: copying the x entries of the synchronization queue to an inbound queue on the backend sub-system; and processing the x entries of the inbound queue.

### Claim 14 (depends on 8)

The system of claim 8 wherein synchronizing comprises: initializing i=l;
copying contents of the synchronization queue to an inbound queue on the backend subsystem;
processing the ith entry of the inbound queue comprising determining if the change data type of the ith entry is the newly created base document,
if the change data type of the ith entry is a newly created base document, then processing comprises generating a new backend key, the new backend key is associated with the newly created base document, and
mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and
if the change data type of the ith entry is not the newly created base document, then processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change data of the ith entry is associated, and uploading the change data of the ith entry in the backend sub-system; and
determining if there are more entries to be processed, wherein determining comprises if there are more entries to be processed, incrementing i by 1 and repeating processing the ith entry, and if there are no more entries to be processed, terminating synchronization.

### Claim 15

Non-transitory computer-readable media storing instructions for uploading offline data which, when executed by at least one computer, result in operations comprising: generating offline change data using a client runtime of a frontend sub-system of an enterprise data system residing on an end user device, wherein the offline change data comprises a change data type selected from a newly created base document, a change to the newly created base document, and a change to a previously synchronized base document; processing the offline change data each time the change data is generated while offline by: determining the change data type, wherein if the change data type comprises the newly created base document, the processing generates a new unique client key associated with the newly created base document, if the change data type comprises the change to the newly created base document, associating the new client key of the newly created base document to the change of the newly created base document, and if the change data type comprises the previously synchronized base document, associating a backend key of the previously synchronized base document to the change of the previously synchronized base document;
storing the change data and associated key as an entry in a synchronization queue having x number of entries for generating x number of change data while offline without synchronizing with the backend sub-system, the x number of entries being stored in the synchronization queue is based on time when the change data is generated, the first entry being the earnest change data and the last entry being the latest change data while offline without synchronizing with the backend sub-system: and
synchronizing the x entries in the synchronization queue with the backend subsystem of the enterprise data system residing on a server when the end user device is online, wherein synchronizing comprises:
processing the x entries in the synchronization queue wherein if the change data type of an entry being processed is the newly created base document, the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of an entry being processed is the newly created base document or the previously synchronized base document, the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data;
storing the change data of the entry processed in the backend sub-system; and
repeating processing the x entries until all entries are processed.

### Claim 16 (depends on 15)

The non-transitory computer readable media of claim 15 wherein processing the number of x entries in the synchronization queue comprises: copying the x entries of the synchronization queue to an inbound queue on the backend sub-system; and
processing the x entries of the inbound queue.

### Claim 17 (depends on 16)

The non-transitory computer readable media of claim 16 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 18 (depends on 16)

The non-transitory computer readable media of claim 16 wherein synchronizing comprises: processing the ith entry of the synchronization queue, where i=l to x, wherein the processing comprises if the change data type of the ith entry is the newly created base document, the processing the synchronization queue comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of the ith entry is the newly created base document or the previously synchronized base document, the processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change is associated to the change data;
storing the change data of the ith entry in the backend sub-system; and repeating processing the x entries until all entries are processed.

### Claim 19 (depends on 18)

The non-transitory computer readable media, of claim 18 wherein assigning the backend key associated with the newly created base document comprises analyzing the mapping table to identify the backend key from the mapped key pair with the client key associated with the newly created base document.

### Claim 20 (depends on 16)

The non-transitory computer readable media of claim 16 wherein synchronizing comprises: initializing i=l;
copying contents of the synchronization queue to an inbound queue on the backend subsystem;
processing the ith entry of the inbound queue comprising determining if the change data type of the ith entry is the newly created base document, if the change data type of the ith entry is a newly created base document, then processing comprises generating a new backend key, the new backend key is associated with the newly created base document, and mapping the new backend key to the client key associated with the newly created base document to form a mapped key pair in a key mapping table, and if the change data type of the ith entry is not the newly created base document, then processing comprises assigning the backend key associated with the newly created base document or the previously synchronized base document with which the change data of the ith entry is associated, and uploading the change data of the ith entry in the backend sub-system; and determining if there are more entries to be processed, wherein determining comprises if there are more entries to be processed, incrementing i by 1 and repeating processing the ith entry, and if there are no more entries to be processed, terminating synchronization.
