# US RE43,571 E1 · Synchronization of recurring records in incompatible databases

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

- Number: US RE43,571 E1
- Document ID: USRE43571E1
- Status: Granted
- Kind: E1
- Application number: 09/939,526
- Filed: 2001-08-24
- Granted: 2012-08-07
- Earliest claimed: 1996-11-13
- Assignees: Intellisync Corporation
- Inventors: David J. Boothby
- Web page: https://patentgrep.com/patent/USRE43571E1

## Abstract

A technique for synchronizing databases in which different techniques are used for storing a recurring event. A database in which the recurring event is, for example, stored as a single recurring record can be synchronized with a database in which the same recurring event is stored as a series of individual records. The individual records are processed to form a synthetic recurring record representing the set of individual records, and synchronization decisions are based on a comparison of the synthetic record to the recurring record of the other database. Following synchronization, the synthetic record can be “fanned” back into the individual records to update the database containing individual records, and the updated recurring record can be written back to the other database. In this way, the invention avoids the problems encountered with prior methods, in which synchronization resulted in a recurring record being transformed into a series of individual records.

## Claims

### Claim 1

A computer implemented method of synchronizing at least a first and a second database, wherein the manner of storing a set of recurring date bearing instances differs between the first and second databases, and at least the first database uses a recurring record to store the set of recurring date bearing instances, the method comprising:
processing a plurality of non-recurring records in the second database to identify a set of non-recurring records storing a set of recurring date bearing instances in the second database;
performing a comparison of the set of non-recurring records of the first second database to a recurring record of the first database; and
completing synchronization based on the outcome of the comparison.

### Claim 2 (depends on 1)

The method of claim 1 wherein the step of completing synchronization includes adding, modifying, or deleting one of the synthetic set of non-recurring record records and the recurring record.

### Claim 3 (depends on 1)

The method of claim 1 further comprising, after completing synchronization, storing the set of recurring date bearing instances in the second database as a plurality of non-recurring records.

### Claim 4 (depends on 1)

The method of claim 1 further comprising, after completing synchronization, storing the set of recurring date bearing instances in the second database as a recurring record having a different record structure than the recurring record of the first database.

### Claim 5 (depends on 1)

The method of claim 1 further comprising storing a history file containing a record representative of one of the recurring record and the set of non-recurring instances records in a past synchronization.

### Claim 6 (depends on 5)

The method of claim 5 further comprises performing a second comparison of one of the synthetic set of non-recurring record records and the recurring record to the record in the history file representative of the recurring record or the set of non-recurring instances records and completing synchronization based on the outcome of the second comparison.

### Claim 7 (depends on 1)

The method of claim 1 wherein each recurring record and each non-recurring record includes a key field, and wherein the step of processing a plurality of non-recurring records in the second database further comprises:
performing a second comparison of the key fields of the recurring and non-recurring records; and
selecting a group of records from among the recurring and non-recurring records based on the outcome of the second comparison.

### Claim 8 (depends on 7)

The method of claim 7 wherein the step of selecting a group of records comprises selecting the group based on identity of the content of the key fields of the recurring and non-recurring records.

### Claim 9 (depends on 7)

The method of claim 7 wherein each recurring record and each non-recurring record includes at least one other field, and wherein the step of processing a plurality of non-recurring records in the second database further comprises:
performing a third comparison of the at least one other field of the non-recurring records in the group;
selecting a the set of non-recurring records based on the outcome of the third comparison; and
correlating the set of non-recurring records to the recurring record of the first database.

### Claim 10 (depends on 9)

The method of claim 9 wherein selecting the set of non-recurring records based on the outcome of the third comparison is based on identity of content of the at least one other field of the non-recurring records in the group.

### Claim 11 (depends on 1)

The method of claim 1 wherein processing the plurality of non-recurring records further includes processing the plurality of non-recurring records to generate a synthetic recurring record representing the set of recurring date bearing instances in the second database, and
wherein performing a comparison of the set of non-recurring records to a recurring record includes performing a comparison of the synthetic recurring record of the second database to the recurring record of the first database.

### Claim 12 (depends on 11)

The method of claim 11 wherein, following the step of completing synchronization, one of the synthetic recurring record and recurring record is fanned back into a plurality of fanned non-recurring records.

### Claim 13 (depends on 11)

The method of claim 11 wherein the synthetic recurring record has a list of excluded instances and the step of processing a plurality of non-recurring records in the second database to generate a synthetic recurring record further comprises generating a list of excluded instances representative of instances previously represented by the recurring record and currently represented by another record or deleted.

### Claim 14 (depends on 11)

The method of claim 11 wherein the recurring record and the synthetic recurring record each contain a list of excluded date bearing instances, wherein the step of performing a comparison of the synthetic recurring record to the recurring record includes performing a comparison of the list of excluded date bearing instances of the recurring record with the list of excluded date bearing instances of the synthetic recurring record.

### Claim 15 (depends on 14)

The method of claim 14 wherein the step of completing synchronization includes adding, modifying, or deleting the list of excluded date bearing instances of one of the recurring record and the synthetic recurring record.

### Claim 16 (depends on 14)

The method of claim 14 wherein the step of completing synchronization includes adding, modifying, or deleting one of the synthetic recurring record and recurring record.

### Claim 17 (depends on 14)

The method of claim 14 wherein, following the step of completing synchronization, one of the synthetic recurring record and recurring record is fanned into a plurality of fanned non-recurring records excluding the instances in the list of excluded date bearing instances of a corresponding one of the synthetic recurring record and recurring record.

### Claim 18 (depends on 11)

The method of claim 11 further comprising storing a history file containing a record representative of one of the recurring record and synthetic recurring record in a past synchronization.

### Claim 19 (depends on 18)

The method of claim 18 wherein the second database assigns a unique ID to each record, and wherein the method further comprises:
fanning one of the synthetic recurring record and the recurring record into a plurality of fanned non-recurring records;
storing records in the history file representative of the plurality of fanned non-recurring records;
storing in the history file the unique IDs assigned by the second database to the plurality of fanned non-recurring records; and
recording linkages among the records representative of the plurality of non-recurring records and the record representative of one of the recurring record and synthetic recurring record.

### Claim 20 (depends on 18)

The method of claim 18 wherein the second database assigns unique IDs to each record, the history file further contains records representative of non-recurring records of the second database from a past synchronization and unique IDs assigned to the non-recurring records of the second database, and the step of processing a plurality of non-recurring records in the second database to generate a synthetic recurring record further comprises:
performing a comparison of the unique IDs stored in the history file with unique IDs of the plurality of non-recurring records in the second database; and
selecting a set of non-recurring records in the second database based on the comparison of the unique IDs and generating the synthetic recurring record using the set of non-recurring records.

### Claim 21 (depends on 20)

The method of claim 20 wherein the step of selecting a set of non-recurring records further comprises selecting a set of non-recurring records in the second database having unique IDs matching a set of the unique IDs stored in the history file.

### Claim 22 (depends on 20)

The method of claim 20 wherein one of the synthetic recurring record and the recurring record has an exclusion list and the step of selecting the set of non-recurring records comprises:
selecting a set of records in the history file having unique IDs failing to match any of the unique IDs of non-recurring records in the second database; and
adding, modifying, or deleting the exclusion list of at least one of the synthetic recurring record and the recurring record, using the set of records in the history file.

### Claim 23 (depends on 18)

The method of claim 18 further comprises performing a second comparison of one of the synthetic recurring record and the recurring record to the history file record representative of the recurring record or the synthetic recurring record in the past synchronization, and completing synchronization based on the outcome of the second comparison.

### Claim 24

A computer program, resident on a computer readable medium, for synchronizing at least a first and a second database, wherein the manner of storing a set of recurring date bearing instances differs between the first and second databases, and at least the first database uses a recurring record to store the set of recurring date bearing instances, comprising instructions for:
processing a plurality of non-recurring records in the second database to identify a set of non-recurring records storing the set of recurring date bearing instances in the second database;
performing a comparison of the set of non-recurring records of the first second database to a recurring record of the first database; and
completing synchronization based on the outcome of the comparison.

### Claim 25 (depends on 24)

The computer program of claim 24 wherein the instruction for completing synchronization includes adding, modifying, or deleting one of the synthetic set of non-recurring record records and the recurring record.

### Claim 26 (depends on 24)

The computer program of claim 24 further comprising instructions for, after completing synchronization, storing the set of recurring date bearing instances in the second database as a plurality of non-recurring records.

### Claim 27 (depends on 24)

The computer program of claim 24 further comprising instructions for, after completing synchronization, storing the set of recurring date bearing instances in the second database as a recurring record having a different record structure than the recurring record of the first database.

### Claim 28 (depends on 24)

The computer program of claim 24 further comprising instructions for storing a history file containing a record representative of one of the recurring record and the set of non-recurring instances records in a past synchronization.

### Claim 29 (depends on 28)

The computer program of claim 28 further comprises instructions for performing a second comparison of one of the synthetic set of non-recurring record records and the recurring record to the record in the history file representative of the recurring record or the set of non-recurring instances records and completing synchronization based on the outcome of the second comparison.

### Claim 30 (depends on 24)

The computer program of claim 24 wherein each recurring record and each non-recurring record includes a key field, and wherein the instruction for processing a plurality of non-recurring records in the second database further comprises instructions for:
performing a second comparison of the key fields of the recurring and non-recurring records; and
selecting a group of records from among the recurring and non-recurring records based on the outcome of the second comparison.

### Claim 31 (depends on 30)

The computer program of claim 30 wherein the instruction for selecting a group of records comprises instructions for selecting the group based on identity of the content of the key fields of the recurring and non-recurring records.

### Claim 32 (depends on 30)

The computer program of claim 30 wherein each recurring record and each non-recurring record includes at least one other field, and wherein the instruction for processing a plurality of non-recurring records in the second database further comprises instruction for:
performing a third comparison of the at least one other field of the non-recurring records in the group;
selecting a the set of non-recurring records based on the outcome of the third comparison; and
correlating the set of non-recurring records to the recurring record of the first database.

### Claim 33 (depends on 32)

The computer program of claim 32 wherein selecting the set of non-recurring records based on the outcome of the third comparison is based on identity of content of the at least one other field of the non-recurring records in the group.

### Claim 34 (depends on 24)

The computer program of claim 24 wherein processing the plurality of non-recurring records further includes processing the plurality of non-recurring records to generate a synthetic recurring record representing the set of recurring date bearing instances in the second database, and
wherein performing a comparison of the set of non-recurring records to a recurring record includes performing a comparison of the synthetic recurring record of the second database to the recurring record of the first database.

### Claim 35 (depends on 34)

The computer program of claim 34 wherein further comprising, following the instruction for completing synchronization, instructions for fanning one of the synthetic recurring record and recurring record is fanned back into a plurality of fanned non-recurring records.

### Claim 36 (depends on 34)

The computer program of claim 34 wherein the synthetic recurring record has a list of excluded instances and the instruction for processing a plurality of non-recurring records in the second database to generate a synthetic recurring record further comprises instructions for generating a list of excluded instances representative of instances previously represented by the recurring record and currently represented by another record or deleted.

### Claim 37 (depends on 34)

The computer program of claim 34 wherein the recurring record and the synthetic recurring record each contain a list of excluded date bearing instances, wherein the instruction for performing a comparison of the synthetic recurring record to the recurring record includes instructions for performing a comparison of the list of excluded date bearing instances of the recurring record with the list of excluded date bearing instances of the synthetic recurring record.

### Claim 38 (depends on 37)

The computer program of claim 37 wherein the instruction for completing synchronization includes instructions for adding, modifying, or deleting the list of excluded date bearing instances of one of the recurring record and the synthetic recurring record.

### Claim 39 (depends on 37)

The computer program of claim 37 wherein the instruction for completing synchronization includes instructions for adding, modifying, or deleting one of the synthetic recurring record and recurring record.

### Claim 40 (depends on 37)

The computer program of claim 37 wherein further comprising, following the instruction for completing synchronization, instructions for fanning one of the synthetic recurring record and recurring record is fanned into a plurality of fanned non-recurring records excluding the instances in the list of excluded date bearing instances of a corresponding one of the synthetic recurring record and recurring record.

### Claim 41 (depends on 34)

The computer program of claim 34 further comprising instructions for storing a history file containing a record representative of one of the recurring record and synthetic recurring record in a past synchronization.

### Claim 42 (depends on 41)

The computer program of claim 41 wherein the second database assigns a unique ID to each record, and wherein the computer program further comprises instructions for:
fanning one of the synthetic recurring record and the recurring record into a plurality of fanned non-recurring records;
storing records in the history file representative of the plurality of fanned non-recurring records;
storing in the history file the unique IDs assigned by the second database to the plurality of fanned non-recurring records; and
recording linkages among the records representative of the plurality of non-recurring records and the record representative of one of the recurring record and synthetic recurring record.

### Claim 43 (depends on 41)

The computer program of claim 41 wherein the second database assigns unique IDs to each record, the history file further contains records representative of non-recurring records of the second database from a past synchronization and unique IDs assigned to the non-recurring records of the second database, and the instruction for processing a plurality of non-recurring records in the second database to generate a synthetic recurring record further comprises instructions for:
performing a comparison of the unique IDs stored in the history file with unique IDs of the plurality of non-recurring records in the second database; and
selecting a set of non-recurring records in the second database based on the comparison of the unique IDs and generating the synthetic recurring record using the set of non-recurring records.

### Claim 44 (depends on 43)

The computer program of claim 43 wherein the instruction for selecting a set of non-recurring records further comprises instructions for selecting a set of non-recurring records in the second database having unique IDs matching a set of the unique IDs stored in the history file.

### Claim 45 (depends on 43)

The computer program of claim 43 wherein one of the synthetic recurring record and the recurring record has an exclusion list and the instruction for selecting the set of non-recurring records comprises instructions for:
selecting a set of records in the history file having unique IDs failing to match any of the unique IDs of non-recurring records in the second database; and
adding, modifying, or deleting the exclusion list of at least one of the synthetic recurring record and the recurring record, using the set of records in the history file.

### Claim 46 (depends on 41)

The computer program of claim 41 further comprises comprising instructions for performing a second comparison of one of the synthetic recurring record and the recurring record to the history file record representative of the recurring record or the synthetic recurring record in the past synchronization, and completing synchronization based on the outcome of the second comparison.

### Claim 47

A computer implemented method of synchronizing at least a first and a second database, wherein records in the first and second databases include a key field, the method comprising:
performing a first comparison of the content of the key field of the records of the first database with the content of the key field of the records of the second database;
selecting a plurality of groups of records of the first and second databases based on the outcome of the first comparison;
performing a second comparison of the records in one of the plurality of groups of records to determine a correspondence between a record of the first database in the one of the plurality of groups and a record of the second database in the one of the plurality of groups;
performing a third comparison of the records in the determined correspondence; and
completing the synchronization based on the outcome of the third comparison.

### Claim 48 (depends on 47)

The method of claim 47, wherein the method further comprises selecting the plurality of groups of records based on identity of the contents of the key fields of the records of the first and second database.

### Claim 49 (depends on 47)

The method of claim 47 further comprising storing a history file containing history records representative of records of the first and second databases in a past synchronization, wherein performing a second comparison includes performing a comparison of the records in the one of the plurality of groups to the history records and wherein performing the third comparison includes comparing a corresponding history record with the records in the determined correspondence.

### Claim 50 (depends on 49)

The method of claim 49 wherein the step of completing synchronization further comprises:
performing a third comparison of the records of the corresponding item group; and
completing synchronization based on the third comparison.

### Claim 51 (depends on 47)

The method of claim 47 wherein the key field is a date field.

### Claim 52 (depends on 47)

The method of claim 47 wherein the key field is a text field.

### Claim 53

A computer program, resident on a computer readable medium, for synchronizing at least a first and a second database, wherein records in the first and second databases include a key field, comprising instructions for:
performing a first comparison of the content of the key field of the records of the first database with the content of the key field of the records of the second database;
selecting a plurality of groups of records of the first and second databases based on the outcome of the first comparison;
performing a second comparison of the records in one of the plurality of groups of records to determine a correspondence between a record of the first database in the one of the plurality of groups and a record of the second database in the one of the plurality of groups;
performing a third comparison of the records in the determined correspondence; and
completing the synchronization based on the outcome of the third comparison.

### Claim 54 (depends on 53)

The computer program of claim 53, the computer program further comprises instructions for selecting the plurality of groups of records based on identity of the contents of the key fields of the records of the first and second database.

### Claim 55 (depends on 53)

The computer program of claim 53 further comprising instructions for storing a history file containing history records representative of records of the first and second databases in a past synchronization, wherein performing a second comparison includes performing a comparison of the records in the one of the plurality of groups to the history records and wherein performing the third comparison includes comparing a corresponding history record with the records in the determined correspondence.

### Claim 56 (depends on 55)

The computer program of claim 55 wherein the instruction for completing synchronization further comprises instructions for:
performing a third comparison of the records of the corresponding item group; and
completing synchronization based on the third comparison.

### Claim 57 (depends on 53)

The computer program of claim 53 wherein the key field is a date field.

### Claim 58 (depends on 53)

The computer program of claim 53 wherein the key field is a text field.
