# US 8,787,367 B2 · User partitioning in a communication system

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

- Number: US 8,787,367 B2
- Document ID: US8787367B2
- Status: Granted
- Kind: B2
- Application number: 12/957,125
- Filed: 2010-11-30
- Published: 2012-05-31
- Granted: 2014-07-22
- Earliest claimed: 2010-11-30
- Assignees: RingCentral, Inc.
- Applicants: Vlad Vendrow; Vladimir Shmunis; Vadim Zhuk; Dmitriy Alexandrovich Solovey
- Inventors: Vlad Vendrow; Vladimir Shmunis; Vadim Zhuk; Dmitriy Alexandrovich Solovey
- Web page: https://patentgrep.com/patent/US8787367B2

## CPC

- H04Q 3/005: {Personal communication services, e.g. provisions for portability of subscriber numbers}
- G06F 11/2048: {where the redundant components share neither address space nor persistent storage}
- H04L 61/45: Network directories; Name-to-address mapping
- H04M 3/42314: {in private branch exchanges}
- G06F 11/2028: {eliminating a faulty processor or activating a spare}
- G06F 11/2041: {with more than one idle spare processing component}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- H04Q: SELECTING (switches, relays, selectors H01H; wireless communication networks H04W)
- 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)
- H04M: TELEPHONIC COMMUNICATION (circuits for controlling other apparatus via a telephone cable and not involving telephone switching apparatus G08)

## Abstract

Systems and methods for routing an incoming service request to one of a plurality of pod units are described. A communication system can be provided that includes a plurality of pods each having a first pod serving a first subset of user accounts associated with a hosted PBX system. The first pod can include a first pod unit in a first data center and a second pod unit in a second data center. A global user directory (GUD) can be used to store a plurality of user keys that are mapped to the plurality of pods. A router can be provided to identify a user key from an incoming service request, query the GUD to identify the first pod as being associated with the user key, and route the incoming service request to one of the first and second pod units.

## Claims

### Claim 1

A communication system, comprising:
a plurality of pods each serving a respective subset of user accounts associated with a hosted private branch exchange (PBX) system;
a global user directory to store a plurality of user keys that are mapped to the plurality of pods; and
one or more processors configured to:
receive a first service request,
determine that the first service request is associated with a first user associated with a first user account in a first subset of user accounts served by a first pod of the plurality of pods, comprising identifying a user key from the first service request and querying the global user directory to identify the first pod as being associated with the identified user key,
based on the determining, route the first service request the first pod,
select the first user account for migration from being served by the first pod to being served by a second pod of the plurality of pods and transitioning the first user account into standby mode,
while the first user account is in standby mode, copy user account data for the first user account from the first pod to the second pod, and
transition the first user account to active mode in the second pod.

### Claim 2 (depends on 1)

The communication system of claim 1, wherein the
second pod includes a third pod unit having a third communication server in a first data center and a fourth pod unit having a fourth communication server in a second data center, each of the third communication server and the fourth communication server configured to serve a second subset of user accounts.

### Claim 3 (depends on 2)

The communication system of claim 2, wherein
the third pod unit is in active mode and configured to receive incoming calls;
the fourth pod unit is in standby mode; and
after migration, the processor is configured to route service requests associated with the first user account to the third pod unit in active mode.

### Claim 4 (depends on 3)

The communication system of claim 3, wherein
the fourth pod unit transitions from standby mode to active mode when the third pod unit is unavailable.

### Claim 5 (depends on 2)

The communication system of claim 2, wherein the third pod unit and the fourth pod unit are in active mode, and the processor is configured to distribute service requests between the third pod unit and the fourth pod unit based on routing instructions corresponding to the user key stored in the global user directory.

### Claim 6 (depends on 1)

The communication system of claim 1, wherein the processor is configured to routes the first service request to a first pod unit in the first pod or a second pod unit in the first pod based on a load associated with the first pod unit or the second pod unit.

### Claim 7 (depends on 1)

The communication system of claim 1, wherein the processor is configured to route the first service request to a second pod unit in the first pod when a first pod unit in the first pod is unavailable.

### Claim 8 (depends on 1)

The communication system of claim 1, wherein the first pod includes first and second communication servers that are configured to provide voice over internet protocol (VOIP) based services, or facsimile over internet protocol (FOIP) based services, or VOIP and FOIP services.

### Claim 9 (depends on 1)

The communication system of claim 1, wherein a first pod unit of the first pod includes a first account database and a second pod unit of the first pod includes a second account database, each of the first account database and the second account database configured to store configuration details associated with the first subset of user accounts.

### Claim 10 (depends on 9)

The communication system of claim 9, wherein the first account database and the second account database are synchronized.

### Claim 11 (depends on 1)

The communication system of claim 1, the first pod including a first pod unit having a first communication server in a first data center and a second pod unit having a second communication server in a second data center, and the system further comprising:
a first common database in the first data center configured to consolidate account information from all pod units and propagate account information to all pod units; and
a second common database in the second data center configured to consolidate account information from all pod units and propagate account information to all pod units,
wherein the first common database and the second common database are synchronized.

### Claim 12 (depends on 11)

The communication system of claim 11, further comprising:
a first message storage system in the first data center configured to store one or more files for all pod units associated with the first data center; and
a second message storage system in the second data center configured to store one or more files for all pod units associated with the second data center,
wherein the first message storage system and the second message storage system are synchronized.

### Claim 13 (depends on 1)

The system of claim 1, wherein the first pod comprises first communication servers running a first version of an application, the first pod operating in active mode, and wherein the second pod comprises second communication servers running a second version of the application in test mode.

### Claim 14 (depends on 13)

The system of claim 13, wherein the processor is configured to select the first account for migration in response to verifying operation of the second version of the application.

### Claim 15

A method comprising:
storing, in a global user directory (GUD), a plurality of user keys that are mapped to a plurality of pods, each pod serving a subset of user accounts associated with a hosted private branch exchange (PBX) system;
receiving an incoming call from a source communication device;
determining that the call is intended for a first user associated with a first user account in a first subset of user accounts associated with a first pod, comprising:
identifying a user key from the incoming call; and
querying the GUD to identify a pod mapped to the identified user key;
routing the incoming call to the first pod based on the determining;
selecting the first user account for migration from being served by the first pod to being served by a second pod of the plurality of pods and transitioning the first user account into standby mode;
while the first user account is in standby mode, copying user account data for the first user account from the first pod to the second pod; and
transitioning the first user account to active mode in the second pod.

### Claim 16 (depends on 15)

The method of claim 15, wherein routing the incoming call includes:
identifying a pod unit running in active mode from among a plurality of pod units in the first pod; and
routing the incoming call to the pod unit running in active mode.

### Claim 17 (depends on 15)

The method of claim 15, further comprising:
replicating a first account database from a first pod unit in the first pod to a second account database in a second pod unit in the first pod, wherein the first pod unit is running in active mode and the second pod unit is running in standby mode;
transitioning the first pod unit from active mode into standby mode;
completing replication of the first account database;
transitioning the second pod unit from standby mode to active mode;
updating the GUD to indicate that the second pod unit is running in active mode, and the first pod unit is no longer running in active mode; and
routing a new incoming service request to the second pod unit.

### Claim 18 (depends on 15)

The method of claim 15, wherein routing the incoming call includes:
determining a load carried by a first pod unit in the first pod; and
routing the incoming call to a second pod unit in the first pod when the load carried by the first pod unit exceeds a predetermined threshold.

### Claim 19 (depends on 15)

The method of claim 15, further comprising:
replicating the user key across a plurality of GUDs in a plurality of data centers, including replicating the user key over one or more replication paths between each of the plurality of GUDs, and wherein a relay replication path including at least one intermediate GUD between a pair of GUDs can be used when one of the replication paths is unavailable.

### Claim 20 (depends on 15)

The method of claim 15, wherein the first pod comprises first communication servers running a first version of an application, the first pod operating in active mode, and wherein the second pod comprises second communication servers running a second version of the application in test mode.

### Claim 21 (depends on 20)

The method of claim 20, further comprising selecting the first account for migration in response to verifying operation of the second version of the application.
