Contents:
- Overview
- How it works
- Assignment Scenarios
- Members Returning from Unavailability
- All Members are Unavailable Simultaneously
- How to Reset Pointers
- Scenario
Overview
LeanData’s Round Robin feature includes distribution of records to a group of Users or Queues within a given pool. This guide will provide an overview on how LeanData’s Round Robin functionality works to assign records and how the product determines assignment order for different scenarios.
Note: This guide only describes the behavior of LeanData's Round Robin distribution for weighted pools. Unweighted pools will assign records to the next available User in sequence..
How it works
LeanData’s weighted Round Robin assignment does not necessarily distribute in the chronological order of the pool, but is configured to prioritize predictability while subject to weightings or other restrictions on the distribution of records (schedules, capping, pausing, etc) .
LeanData’s Round Robin distribution functionality utilizes pointer values to determine which member is up next for assignment in the Round Robin pool. A pointer value is a numerical value that is associated with each round robin member, to help keep track of who should receive the next record. Whichever available User has the lowest pointer value at the time of assignment will receive the record. While these pointer values are not visible on the Round Robin page itself, LeanData will keep track of them implicitly.
After a record is assigned to a Round Robin member, their pointer value will increase to reflect that assignment. The amount that a pointer value increases will depend on that member's weighting within the pool. A higher weight would correspond to a smaller increase in their pointer value, such that they will receive records more frequently over time.
When multiple available pool members have the lowest pointer value, LeanData will select the pool member who appears first in the pool (from top to bottom).
When a new pool is created, all members in a given pool will have no pointer value. In this case, LeanData will start the Round Robin distribution from the top of the list and work its way down the list of members in the given pool, as all members start with an equal pointer value.
If a new User is added into an existing pool, LeanData will continue normal distribution until their turn arrives, at which point, their pointer value will be set equal to the lowest pointer value available in the pool.
Assignment scenarios
Members Returning from Unavailability
Since we use the pointers method, when a User becomes unavailable (Working Hours, Vacations, etc) and then returns to availability, certain reset behavior needs to occur to ensure that subsequent assignments are not skewed disproportionately.
When a User returns to availability in the pool, LeanData will continue to assign records normally until the returning User’s turn arrives in the pool. They will receive the record when their turn arrives, and then their pointer value will reset.
If their turn occurs before the member with the lowest pointer value, their pointer value will reset to the lowest pointer value and also increment up for the latest assignment.
If their turn occurs after the member with the lowest pointer value, their pointer value will be reset to match the lowest pointer value.
Note: A User’s pointer value will only be considered as the lowest pointer value if they are available and their pointer value has already been reset after their latest return to the pool.
Example
There are 3 Round Robin pool members: Alex, Christina, and Stephen.
Alex goes on vacation and is skipped in the Round Robin distribution for a week. When he returns, assignments will continue sequentially in the pool until his next turn arrives in the pool, upon which his pointer value will be reset based on the lowest pointer value in the pool.
Member |
Pointer Values when Alex goes on Vacation |
Alex returns but will wait until his turn arrives in the pool | After Alex receives his first Lead after returning |
Alex | 3 | 3 | 11 (Min PV +1) |
Christina | 3 | 9 (Next Up) | 10 (Next Up) |
Stephen | 3 | 9 | 10 |
PV=Pointer Value. Please note that pointer values are simplified for the purpose of illustration.
All Members are Unavailable Simultaneously
If all members of the Round Robin pools are unavailable simultaneously, such as a company holiday where everyone is unavailable, once everyone returns, the pool will assign the next record to whomever was due to receive the next record before the unavailability. Subsequent assignments will then reset based on the pointer value of the first pool member to get an assignment.
How to Reset Pointers
Resetting the weighting within the pool will result in resetting the pointer values as well.
Scenario
In the following example, we have a RR Pool with four members. We will move progressively through each scene to explain how events like assignment or becoming unavailable through some mechanism (like Working Hours, Vacation, or Pausing)
Scene 1 | Member | Status |
Pointer Value |
Notes |
A | Unavailable | 2 | ← User A becomes unavailable | |
B | Available | 3 | ||
C | Available | 8 | ||
D | Available | 2 |
Scene 2 | Member | Status |
Pointer Value |
Notes |
A |
Available (PV Pending Reset) |
2 | ← User A becomes available (PV not reset yet) | |
B | Available | 3 | ||
C | Unavailable | 8 | ← User C becomes unavailable | |
D | Unavailable | 2 | ← User D becomes unavailable |
Scene 3* | Member | Status |
Pointer Value |
Notes |
A | Available | 3+1 = 4 | ← Lead gets assigned to User A as the next up. PV is reset to Min PV + 1 | |
B | Available | 3 | ← 3 is the Min PV (User D is not available) | |
C | Unavailable | 8 | ||
D | Unavailable | 2 |
Scene 4 | Member | Status |
Pointer Value |
Notes |
A | Available | 4 | ||
B | Available | 3 | ← since A was assigned the previous Lead, B is up next | |
C | Unavailable | 8 | ||
D | Unavailable | 2 |
Scene 5** | Member | Status |
Pointer Value |
Notes |
A | Available | 4 | ||
B | Available | 3 + 1 = 4 | ← B is assigned next Lead, and PV increases by 1 | |
C |
Available (PV Pending Reset) |
8 | ← User A becomes available (PV not reset yet) | |
D |
Available (PV Pending Reset) |
2 | ← User D becomes available (PV not reset yet) |
Scene 6*** | Member | Status |
Pointer Value |
Notes |
A | Available | 4 | ||
B | Available | 4 | ||
C | Available | +1 Lead → PV reset to 4 | ← Lead gets assigned to User C as the next up. PV is reset to Min PV (min PV is 4 as User D's PV has not yet been reset) | |
D |
Available (PV Pending Reset) |
2 |
Scene 7*** | Member | Status |
Pointer Value |
Notes |
A | Available | 4 | ||
B | Available | 4 | ||
C | Available | 4 | ||
D | Available | +1 Lead → PV reset to 4 | ← Lead gets assigned to User D as the next up. PV is reset to Min PV |
* We take the minimum pointer value of available Pool Members and add 1 to it
** We did not skip to D even though he has the lowest pointer. We respect the order of the Pool.
*** We reset to the Min Pointer Value (PV) if the User is after the minimum PV member of the Pool. If before, we reset to the Min PV + 1. Users that just became available are not eligible for consideration as min PV.