Concepts

Understand the key concepts, data and information used in an On-Call Optimizer schedule

Schedule

The core object in On-Call Optimizer.

The main role of the schedule is to contain a list of shifts which describe which member(s) are expected to be on-call at a particular point in time.

To achieve this goal each schedule contains a set of configuration details in addition to the list of shifts. These configuration details are used by On-Call Optimizer to regularly extend the list of shifts into the future to maintain a desired horizon.

Each set of new shifts generated by On-Call Optimizer is referred to as an assignment, described further below. The collection of assignments associated with a schedule collectively describe the history and future shifts for the schedule.

Advanced configurations of On-Call Optimizer make use of inter-schedule relationships to achieve more complex scheduling outcomes than are possible within a single schedule.

Schedules can be configured with source and destination integrations in order to keep their configuration and assignments synchronized with external systems (e.g. On-Call Products such as PagerDuty or Ops Genie).

Schedule Balance

Maintaining a balance of shifts between members of a schedule is one of the primary objectives that On-Call Optimizer targets. On-Call Optimizer considers a schedule to be balanced when each member has fair share of the total number of shifts.

See the Schedule Balance page for detailed information on how balance and fairness is calculated and reported in On-Call Optimizer.

Shift

An on-call shift is a contiguous period with defined start and end times associated with one or more assignees. The start and end time of an on-call shift are measured to the minute only (no seconds component) and must be fully specified including a time zone.

The maximum length of a single on-call shift is one week.

On-Call Optimizer supports up to 2 assignees per shift referred to as the primary and secondary respectively.

Shift Configuration

Each schedule contains a list of shift configurations which describe how future shifts in the schedule are to be assigned. A shift configuration is made up of the time at which a shift in the schedule should start and who the desired assignee(s) for the shift should be.

On-Call Optimizer uses the shift configuration to generate the list of specific shifts with explicit start and end times when extending the schedule.

Basic vs Nested Schedules

On-Call Optimizer can support almost any rotation configuration using a combination of basic and nested schedules:

  • An basic schedule contains shift configurations that do not reference any other shift as an assignee - each shift is either assigned to a staticly chosen member, or by placeholder (e.g. BEST_MEMBER) denoting that the constraint optimizing algorithm should be used to dynamically choose the best assignee.
  • To construct more complicated rotation configurations another schedule can be specified as one of the assignees for a shift in the configuration of a schedule. When one schedule refers to another schedule in this manner it is called a nested schedule.

On-Call Optimizer supports up to 3 levels of nesting.

Nesting provides an intuitive and straightforward method to configure rotations whenever there are two or more different groups of people or configurations to manage. Common examples of this would be rotating between two halves of a team on different sides of the world, or having only a subset of a team provide after-hours coverage for a schedule.

The configuration library contains multiple examples demonstrating how these simple combinations enable many diverse schedule structures to be created while remaining simple to undersatnd and configure.

Assignment

A collection of shifts associated in some way with a schedule. The shifts in an assignment may not overlap at any point, and typically would represent a contiguous block of time, but under certain configurations (e.g. business hours only) there may be gaps where no shift or assignment is present.

On-Call Optimizer continually generates new assignments to maintain the schedule according to its configuration.

Assignments can exist in a number of states with defined roles, purposes and processes for moving between states. Please refer to the full assignment documentation for further details.

Assignment quality

The quality of each assignment is evaluated by On-Call Optimizer based on how close to perfectly meeting every goal and constraint it reaches. When a perfect assignment is not able to be made, as set of penalties are reported to help explain the factors that impacted on the quality of the assignment.

Further details of how quality is evaluated and calculated can be found on the Assignments page.

Horizon

The horizon of a schedule describes how many days into the future shifts are assigned for. Horizon is typically measured from the current date, but may also be reported relative to a specific date. A horizon of zero indicates the schedule’s assigned shifts will end (or already ended before) today, while a horizon of 1 day indicates that the final assigned shift in the schedule ends on the following day and so on.

The horizon is associated with a schedule, not any particular memmber, and is calculated based on calendar days in the configured time zone of the schedule itself.

A desired horizon value forms part of the configuration details of a schedule and is used as the trigger for regular creation of updated assignments as described in the schedule lifecycle documentation.

Schedule Window

The schedule window is part of the configuration details of a schedule and describes how many days of future shifts are contained in a new assignment when the schedule is extended. Refer to the schedule lifecycle documentation for further details on how this process work.

Availability Information

The availability information for a schedule consists of the combination of both:

  • The combination of individual availability information from each member that has agreed to share their calendar with the schedule.
  • Any availability entries synthesized due to a schedule availability reference that has been configured on the schedule.

Last updated September 4, 2024