Operating lifecycle
Learn about the common operations and events that regularly occur for each schedule.
On-Call Optimizer keeps assigning upcoming shifts to the best available members, and keeps any external destinations configured for the schedule up to date with the assigned shifts.
You can think of this as two processes that run all the time. Each one compares the current state with the desired state, and acts whenever the two differ.
Scheduled assignments
The schedule runs scheduled assignments to make sure the schedule’s future shifts are always assigned at least as far ahead as the desired horizon.
Steady-state operation
Normally, the current horizon (the end of the last assigned shift) is compared with the desired horizon, and the next scheduled assignment runs when the current horizon is about to fall below the desired value. In practice it runs one day more than the horizon before its first shift, close to the hour that shift starts.
When it runs it produces a draft, which is confirmed automatically as soon as it has been generated. Members are notified of their new shifts, and the schedule’s destinations are synchronized.
Seeing what’s next
You can see when the next scheduled assignment runs, and which shifts it will assign, in several places:
- The schedule calendar: a calendar icon with sparkles marks the day it runs. Hover over it to see the Scheduled assignment popup with the number of shifts and the dates they cover. Editors can click the Assign now button to assign those shifts now.
- Planned shifts: the shifts waiting to be assigned are drawn with a dashed outline and labelled “Assigned on date” on the schedule calendar, when the Planned shifts layer is on (it is by default). Their popup says “Scheduled assignment on date”.
- The Timeline tab: the Next assignment card at the top gives the date it runs, the number of shifts and their dates.
- The on-call card in the schedule header: before a new schedule’s first assignment, it shows “First assignment on date”.
- The template’s Settings tab: a sentence such as “Next scheduled assignment on Wed 14 Oct, 30 shifts (…), then 30 shifts every 30 days”. See template settings.

Once it has run and been confirmed, it appears on the schedule’s Timeline tab as a confirmed “Scheduled assignment”, and its shifts are Assigned shifts on the schedule calendar.
Special cases
First assignment for new schedules
A new schedule has no assigned shifts yet, so there is nothing to measure the current horizon from. Instead, you choose the First shift in the Final settings step when you create the schedule.
No shifts before the first shift are assigned. The First assignment date shows when the first scheduled assignment will run: by default, the horizon plus one day before the first shift. You can change this date when creating the schedule, and the horizon is set to match.
If the first shift is too soon for the horizon, the first assignment runs immediately. Setup shows this in orange.
Drafts that can’t be confirmed
Occasionally a scheduled assignment can’t be confirmed automatically, for example when it fails. Its draft then stays at the top of the Timeline tab with a red Failed badge (or Draft / Overdue), and the Timeline tab shows a dot. Open it to Regenerate, Confirm or Abandon it. While it is there, no further scheduled assignments run: if nobody acts promptly, members may get less notice of their new shifts than the desired horizon, or in the worst case the schedule could run out of shifts.
On-Call Optimizer never assigns shifts that have already ended. If a draft waits so long that all its shifts are in the past, those shifts are dropped and the next scheduled assignment is planned again from now.
Pausing scheduled assignments or skipping time
The first shift can only be set when a schedule is created. You can’t currently pause scheduled assignments, or skip a period of time, by moving it to a later date.
External synchronization
On-Call Optimizer exchanges shifts with the on-call products a schedule exports to.
Schedules copied from an on-call product
When you create a schedule by copying one from an on-call product, its name, time zone, shifts and members are copied once, when the schedule is created. From then on they are managed only in On-Call Optimizer: later changes to the schedule in the on-call product (for example a new member or a renamed schedule) aren’t copied across, and nothing in On-Call Optimizer’s configuration is sent back to the product.
The copied schedule is also set up as a destination of the new schedule, unless another On-Call Optimizer schedule already exports to it.
Destination exports
Each configured destination receives the new shifts whenever an assignment is confirmed, and is checked at least hourly, when On-Call Optimizer corrects or reports any differences according to its synchronization mode.
Shifts are also imported from a destination in certain situations:
- History before the schedule’s first shift. Shifts the on-call product assigned prior to its settings being copied are imported once when it is copied so the balance of the first assignments takes them into account. Once On-Call Optimizer’s first shift has started, no more history is imported.
- Changes to exported shifts, only for destinations in bidirectional mode.
Availability information
The availability information of each member of the schedule is refreshed every hour and stored, ready for future assignments.