IP Library Granted Patent US 12,326,876
Granted Patent B1
US 12,326,876 · App. 18/818,483 · Granted Jun 10, 2025

Systems and methods for managing web, mobile, and point-of-sale servers with a customer relations management system

Inventors: Mikel Lindsaar (Sydney, AU); Ben Pritchard (Sydney, AU)
Assignee: StoreConnect International Pty Ltd
G06F16/27G06Q30/01
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,326,876
App. No.
18/818,483
Granted
Jun 10, 2025
Kind
B1
Abstract

Methods and systems are described for managing business interfaces including web sites, e-commerce platforms, mobile apps, and point-of-sale (POS) systems using databases and user interfaces on a customer relations management (CRM) system. Performance can be improved using two-way synchronization between the CRM database and a second database used by the business interface. Latency and efficiency can be improved by performing the synchronization using a message queue implemented with a single database table that can be replicated using a native replication mechanism. Multiple CRM databases can synchronize to a single second database organized into multiple tenants. Detection of changes in either database can be implemented using polling or change triggers.

Claims (151)

1. A method for synchronizing a first database and a second database comprising:

storing the first database in a first memory of a first computing device, and the second database in a second memory of a second computing device;

detecting a first update to the first database;

creating, based on the detecting, a first message queue item;

inserting the first message queue item into a first message queue database on the first computing device;

replicating the first message queue item from the first message queue database to a second message queue item in a second message queue database on the second computing device;

selecting the second message queue item from the second message queue database; and

updating, based on the selecting, the second database to correspond to the first update;

wherein the replicating of the first message queue item comprises:

detecting the insertion of the first message queue item into the first message queue database;

creating a first queue update object representing the insertion of the first message queue item into the first message queue database;

transmitting the first queue update object to the second message queue database; and

applying the first queue update object to the second message queue database to insert the second message queue item into the second message queue database;

wherein the selecting of the second message queue item from the second message queue database comprises:

detecting the presence of the second message queue item; and

removing the second message queue item from the second message queue database; and

wherein the updating of the second database comprises:

creating a first database update object representing the first update to the first database; and

applying the first database update object to the second database;

wherein the first database update object represents an action selected from the group consisting of a change to a value in the first database, an insertion of a first record into the first database, a deletion of a second record from the first database, an addition to a schema of the first database, and a deletion from the schema of the first database.

2. The method of claim 1 , further comprising:

detecting a second update to the second database;

creating, based on the detecting of the second update, a third message queue item;

inserting the third message queue item into the second message queue database;

replicating the third message queue item from the second message queue database to a fourth message queue item in the first message queue database;

selecting the fourth message queue item from the first message queue database; and

updating, based on the selecting of the fourth message queue item, the first database to correspond to the second update.

3. The method of claim 2 , wherein the replicating of the third message queue item comprises:

detecting the insertion of the third message queue item into the second message queue database;

creating a second queue update object representing the insertion of the third message queue item into the second message queue database;

transmitting the second queue update object to the first message queue database; and

applying the second queue update object to the first message queue database to insert the fourth message queue item into the first message queue database;

wherein the selecting of the fourth message queue item from the first message queue database comprises:

detecting the presence of the fourth message queue item; and

removing the fourth message queue item from the first message queue database; and

wherein the updating of the first database comprises:

creating a second database update object representing the second update to the second database; and

applying the second database update object to the first database.

4. The method of claim 3 , wherein the second database update object represents an action selected from the group consisting of a change to a value in the second database, an insertion of a first record into the second database, a deletion of a second record from the second database, an addition to a schema of the second database, and a deletion from the schema of the second database.

5. The method of claim 1 , wherein:

the detecting of the first update comprises receiving a trigger based on an external input; and

the updating of the second database comprises a synchronization of the first database and the second database.

6. The method of claim 2 , wherein:

the detecting of the second update comprises receiving a trigger based on an external input; and

the updating of the first database comprises a synchronization of the first database and the second database.

7. The method of claim 1 , further comprising:

accessing the first database by a customer relationship management system; and

accessing the second database by an entity selected from the group consisting of an e-commerce system and a point-of-sale system.

8. The method of claim 1 , wherein the detecting comprises:

a first polling of the first database;

a second polling of the first database; and

detecting, based on a difference between the first polling and the second polling, the first update.

9. The method of claim 1 , wherein the detecting comprises:

receiving, based on an access to the first database, a trigger;

determining, based on the trigger, a change to the first database; and

detecting, based on the determination, the first update.

10. A system for synchronizing a first database and a second database comprising:

a first computing device including a first processor and a first memory, and a second computing device including a second processor and a second memory, the first and second computing devices configured to:

store the first database in the first memory and the second database in the second memory;

detect a first update to the first database;

create, based on the detecting, a first message queue item;

insert the first message queue item into a first message queue database on the first computing device;

replicate the first message queue item from the first message queue database to a second message queue item in a second message queue database on the second computing device;

select the second message queue item from the second message queue database; and

update, based on the selecting, the second database to correspond to the first update;

wherein the replicating of the first message queue item comprises:

detecting the insertion of the first message queue item into the first message queue database;

creating a first queue update object representing the insertion of the first message queue item into the first message queue database;

transmitting the first queue update object to the second message queue database; and

applying the first queue update object to the second message queue database to insert the second message queue item into the second message queue database;

wherein the selecting of the second message queue item from the second message queue database comprises:

detecting the presence of the second message queue item; and

removing the second message queue item from the second message queue database; and

wherein the updating of the second database comprises:

creating a first database update object representing the first update to the first database; and

applying the first database update object to the second database;

wherein the first database update object represents an action selected from the group consisting of a change to a value in the first database, an insertion of a first record into the first database, a deletion of a second record from the first database, an addition to a schema of the first database, and a deletion from the schema of the first database.

11. The system of claim 10 , wherein the first and second computing devices are further configured to:

detect a second update to the second database;

create, based on the detecting, a third message queue item;

insert the third message queue item into the second message queue database;

replicate the third message queue item from the second message queue database to a fourth message queue item in the first message queue database;

select the fourth message queue item from the first message queue database; and

update, based on the selecting, the first database to correspond to the second update.

12. The system of claim 11 , wherein the replicating of the third message queue item comprises:

detecting the insertion of the third message queue item into the second message queue database;

creating a second queue update object representing the insertion of the third message queue item into the second message queue database;

transmitting the second queue update object to the first message queue database; and

applying the second queue update object to the first message queue database to insert the fourth message queue item into the first message queue database;

wherein the selecting of the fourth message queue item from the first message queue database comprises:

detecting the presence of the fourth message queue item; and

removing the fourth message queue item from the first message queue database; and

wherein the updating of the first database comprises:

creating a second database update object representing the second update to the second database; and

applying the second database update object to the first database.

13. The system of claim 12 , wherein the second database update object represents an action selected from the group consisting of a change to a value in the second database, an insertion of a first record into the second database, a deletion of a second record from the second database, an addition to a schema of the second database, and a deletion from the schema of the second database.

14. The system of claim 10 , wherein:

the detecting of the first update comprises receiving a trigger based on an external input; and

the updating of the second database comprises a full synchronization of the first database and the second database.

15. The system of claim 11 , wherein:

the detecting of the second update comprises receiving a trigger based on an external input; and

the updating of the first database comprises a full synchronization of the first database and the second database.

16. The system of claim 10 , wherein the first and second computing devices are further configured to:

access the first database by a customer relationship management system; and

access the second database by an entity selected from the group consisting of an e-commerce system and a point-of-sale system.

17. The system of claim 10 , wherein the detecting comprises:

a first polling of the first database;

a second polling of the first database; and

detecting, based on a difference between the first polling and the second polling, the first update.

18. The system of claim 10 , wherein the detecting comprises:

receiving, based on an access to the first database, a trigger;

determining, based on the trigger, a change to the first database; and

detecting, based on the determination, the first update.

19. A non-transitory computer-readable medium having data stored therein representing software executable by a computer, the software including instructions for synchronizing a first database and a second database comprising:

storing the first database in a first memory of a first computing device, and the second database in a second memory of a second computing device;

detecting a first update to the first database;

creating, based on the detecting, a first message queue item;

inserting the first message queue item into a first message queue database on the first computing device;

replicating the first message queue item from the first message queue database to a second message queue item in a second message queue database on the second computing device;

selecting the second message queue item from the second message queue database; and

updating, based on the selecting, the second database to correspond to the first update;

wherein the replicating of the first message queue item comprises:

detecting the insertion of the first message queue item into the first message queue database;

creating a first queue update object representing the insertion of the first message queue item into the first message queue database;

transmitting the first queue update object to the second message queue database; and

applying the first queue update object to the second message queue database to insert the second message queue item into the second message queue database;

wherein the selecting of the second message queue item from the second message queue database comprises:

detecting the presence of the second message queue item; and

removing the second message queue item from the second message queue database; and

wherein the updating of the second database comprises:

creating a first database update object representing the first update to the first database; and

applying the first database update object to the second database;

wherein the first database update object represents an action selected from the group consisting of a change to a value in the first database, an insertion of a first record into the first database, a deletion of a second record from the first database, an addition to a schema of the first database, and a deletion from the schema of the first database.

20. The non-transitory computer-readable medium of claim 19 , the instructions further comprising:

detecting a second update to the second database;

creating, based on the detecting, a third message queue item;

inserting the third message queue item into the second message queue database;

replicating the third message queue item from the second message queue database to a fourth message queue item in the first message queue database;

selecting the fourth message queue item from the first message queue database; and

updating, based on the selecting, the first database to correspond to the second update;

wherein the replicating of the third message queue item comprises:

detecting the insertion of the third message queue item into the second message queue database;

creating a second queue update object representing the insertion of the third message queue item into the second message queue database;

transmitting the second queue update object to the first message queue database; and

applying the second queue update object to the first message queue database to insert the fourth message queue item into the first message queue database;

wherein the selecting of the fourth message queue item from the first message queue database comprises:

detecting the presence of the fourth message queue item; and

removing the fourth message queue item from the first message queue database; and

wherein the updating of the first database comprises:

creating a second database update object representing the second update to the second database; and

applying the second database update object to the first database.

References Cited (50)
US 6256634B1 · Moshaiov · 2001 [cited by examiner]
US 6779002B1 · Mwaura · 2004 [cited by examiner]
US 8572026B2 · Vedula · 2013 [cited by examiner]
US 8812438B2 · Long · 2014 [cited by applicant]
US 9124609B2 · Alberti · 2015 [cited by examiner]
US 9965536B2 · Shang · 2018 [cited by examiner]
US 10452684B2 · Frerking · 2019 [cited by applicant]
US 10592286B2 · Evenson et al. · 2020 [cited by applicant]
US 11172023B2 · Liang · 2021 [cited by examiner]
US 11716385B2 · Karumbunathan · 2023 [cited by examiner]
US 11893041B2 · Stolze · 2024 [cited by examiner]
US 20040044763A1 · Besson · 2004 [cited by examiner]
US 20040054690A1 · Hillerbrand · 2004 [cited by examiner]
US 20050193269A1 · Haswell · 2005 [cited by examiner]
US 20050289198A1 · Todd · 2005 [cited by examiner]
US 20060080363A1 · Vadlamani · 2006 [cited by examiner]
US 20060080468A1 · Vadlamani · 2006 [cited by examiner]
US 20070156730A1 · Rothermel · 2007 [cited by examiner]
US 20080027987A1 · Arora · 2008 [cited by examiner]
US 20080098044A1 · Todd · 2008 [cited by examiner]
US 20080222630A1 · Taylor · 2008 [cited by examiner]
US 20110208695A1 · Anand · 2011 [cited by examiner]
US 20110258136A1 · Adhiraju · 2011 [cited by examiner]
US 20120010931A1 · Mehra · 2012 [cited by examiner]
US 20130124467A1 · Naidu · 2013 [cited by examiner]
US 20140040182A1 · Gilder · 2014 [cited by examiner]
US 20140187213A1 · Shuster · 2014 [cited by examiner]
US 20150007168A1 · Taylor · 2015 [cited by examiner]
US 20150052187A1 · Schultz · 2015 [cited by examiner]
US 20150199415A1 · Bourbonnais · 2015 [cited by examiner]
US 20180225345A1 · Gilder · 2018 [cited by examiner]
US 20190266277A1 · Lautenschlaeger · 2019 [cited by examiner]
US 20190354376A1 · Delprat · 2019 [cited by examiner]
US 20200192911A1 · Hoffman · 2020 [cited by examiner]
US 20200349580A1 · Gerling-Ospina · 2020 [cited by examiner]
US 20200364185A1 · Beier · 2020 [cited by examiner]
US 20200364241A1 · Stolze · 2020 [cited by examiner]
US 20210056120A1 · Willoughby · 2021 [cited by examiner]
US 20210334246A1 · Seelemann · 2021 [cited by examiner]
US 20230401183A1 · Chan · 2023 [cited by examiner]
US 20240012834A1 · Terborg · 2024 [cited by examiner]
US 20240045884A1 · Lilko · 2024 [cited by examiner]
US 20240176799A1 · Gunda · 2024 [cited by examiner]
US 20240311259A1 · Karthik · 2024 [cited by examiner]
US 20240330318A1 · Gulledge · 2024 [cited by examiner]
EP 1450518A1 · 2004 [cited by applicant]
JP 2000056996A · 1998 [cited by applicant]
KR 20240032389A · 2024 [cited by applicant]
Moiz, Salman Abdul, et al. “Database replication: A survey of open source and commercial tools.” International Journal of Computer Applications 13.6 (2011): 1-8. [cited by applicant]
Sapate, Suchit, and Minakshi Ramteke. “Survey on comparative analysis of database replication techniques.” Int. J. IT, Eng. Appl. Sci. Res 2.3 (2013): 2319-4413. [cited by applicant]