This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Schedules

Understand how the core scheduling functionality of On-Call Optimizer works.

An effective on-call schedule must be flexible and ensure that on-call shifts fit around other commitments in each team members life.

On-Call Optimizer takes the hassle out of maintaining flexible on-call schedules and provides a foundation for teams to experience an on-call environment that delivers growth in expertise.

1 - 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 linked to integrations to synchronize their configuration and assignments 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.

Linked Schedules

On-Call Optimizer supports linking schedules to external systems (e.g. On-Call Products such as PagerDuty or Ops Genie). Schedules that have been linked to an external system can be identified by looking for a badge next to the schedule’s name.

The badge(s) shown next to the schedule name describe the external system(s) that the schedule has been linked to and the type of link that has been established.

Example System
The configuration and shifts for this schedule are linked with Example System.
Example System
The configuration for this schedule is imported from Example System.
Example System
The shifts of this schedule are exported to Example System.

Refer to the detailed documentation relating to a schedule’s basic configuration, synchronized members and destinations for further details, or following the link a schedule guide for a walk-through of how to link a schedule to an external system.

Horizon

The horizon of a schedule is counted in days and describes the level of visibiltiy into future assignments that is or should be provided by the schedule.

  • As one of the configuration parameters for a schedule, the desired horizon, it describes how far in advance shifts should be assigned, and therefore the minimum number of days of notice that members should receive prior to a shift they are assigned to.
  • As a reported property of an existing schedule, the current horizon, it describes how many days exist between a point in time (typically the current date) and the end of the final shift that has been assigned in the schedule

The schedule lifecycle documentation describes how On-Call Optimizer triggers assignment of new shifts when the current horizon is about to fall below the desired horizon.

Horizon is a property of a schedule, not any particular member, and is calculated based on calendar days in the configured time zone of the schedule itself. A current horizon of zero indicates that the schedule’s assigned shifts will end (or already ended before) today, while a current horizon of 1 day indicates that the final shift in the currently assigned schedule ends tomorrow and so on.

Schedule Window

The schedule window describes how many days of future shifts should be assigned at once when assigning new shifts during the lifecycle of the schedule. The configured window is also used as the default size for a new custom assignment.

By default the schedule window extends on from the final shift in the current schedule, but can be changed to start from a different date (so long as it is not in the future) when generating a custom assignment.

History Window

The history window describes how many past shifts are included when calculating the balance of the schedule.

On-Call Optimizer uses a 6-month history window, counting backwards from the start of the first shift in the new assignment.

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.

2 - Assignments

Assignments record individual shifts in the schedule

A schedule is composed of one or more assignments, which allocate members to shifts covering specific time periods.

Viewing Assignments

Shifts assigned to you can be seen on the On-Call Optimizer home page, or by selecting “Swap Shifts” in the main menu.

Within a schedule assignment details are shown on the Overview and Assignments tabs.

Overview Tab

The Overview tab shows the member is who currently assigned to be on-call for the schedule and the next 3 upcoming shifts.

Assignments Tab

The assignments tab provides a summmary of the upcoming shifts for the schedule and a list of historical assigmnents for the schedule.

Assignment Quality

The quality of an individual assignment describes how close to optimal the assignment algorithm was able to reach given the constraints of the schedule configuration and availability of the members.

The quality of an assignment is reported at the top of the assignment page where you will find a summary line containing details on the balance of the schedule and the quality of the assignment. The following icons and colours are used to provide a quick visual overview of the quality of the assignment:

Green thumbs up:
The assignment is optimal or very close to optimal.
Orange thumbs down:
The assignment is OK, but has some penalties.
Red thumbs down:
The assignment has significant problems.

Assignment penalties

When an optimal assignment cannot be found, a set of penalties are reported to describe each of the compromises that On-Call Optimizer had to make to find an viable assignment. These penalties are listed in the “Assignment Penalties” section of the assignment details page found either to the right of the assignment itself, or below the assignment when the screen is narrow.

For details on the types of penalties that can be reported, refer to the algorithm reference page.

Auto Assignment Settings

The auto assignment settings controls how On-Call Optimizer will maintain and extend the schedule throughout the lifecycle of the schedule.

To access these settings, click the wrench icon beside the Next Shift Assignment heading found on the Overview or Assignments tabs of the schedule.

The following settings are available:

  • Start Date: The date from which assignments will be created. Refer to the lifecycle docs for details on behaviour before the start date.
    • Valid values when changing this are between the present date and 90 days in the future.
  • Horizon Days: Defines how many days of horizon (minimum 1, maximum 90) are desired for the schedule: a new assignment will be created when the horizon created by the end of the last existing shift reaches this value.
  • Schedule Window Days: Controls how many days of shifts (minimum 1, maximum 90) will be assigned in each new assignment.
  • Require manual confirmation?: When set requires each new automatic assignment to be approved before the new shifts are confirmed in the schedule.

Disabling manual confirmation

New schedules are created with manual confirmation enabled, but it is recommended to disable manual confirmation once the schedule has reached steady state and members are comfortable with how On-Call Optimizer is operating.

The rationale for this choice is that when first adopting dynamic scheduling it is not uncommon for members to need a few iterations of assignments to establish the patterns and habits of providing availability information, and therefore the ability to review (and potentially re-generate) each automatic assignment before it is confirmed can be useful.

However, once team members are comfortable with the generated assignments and a pattern of usage with On-Call Optimizer has been established, the effort of reviewing each new assignment is harder to justify and delayed, or forgotten approval of an assignment risks reducing the horizon of the schedule below the desired value, or in the worst case causing the schedule to run out of assigned shifts!

Horizon and window sizing considerations

The schedule window should usally be kept above 20 days to ensure sufficient shifts to optimize over are present in each assignment.

It is also important not set the schedule window too large either to ensure availability information is available for all members for the time period covered by the window. Large schedule windows risk scheduling shifts beyond the date where where members are comfortable maintaining their calendar availability details in advance.

The default values for the horizon and schedule window are both 30 days which has been found to work well for many schedules in practice. This provides at lesat 1 month notice for each new shift that is assigned to a member and results in the available horizon for the schedule following a sawtooth pattern between 60 days immediately following each new assignment, and then gradually reducing to 30 days over time until the configured horizon is reached and the next assignment is triggered.

The horizon can be lowered as far as the team members are comfortable with without any adverse impact on the quality of assignments - the only impact of a low horizon is less notification for each member before a shift.

Assignment Types

The assignment concept is used throughout the lifecycle of a schedule leading to several different types of assignments.

Current Assignment

The current assignment for a schedule is synonymous with the schedule itself and represents the canonical list of shifts describing which member is assigned at each point in time. There only ever exists a single current assignment per schedule and the current assignment is only ever modified through the assignment confirmation process.

On-Call Optimizer regularly generates new assignments to ensure the current assignment is extended into the future according to configuration of the schedule.

Pending Assignment

A pending assignment represents a list of shifts that are not yet confirmed but are being considered for addition to the schedule using one of the supported actions.

Pending assignments (if present, often there will not be any) are listed in the right-hand side bar of the schedule view underneath the details of the next planned assignment.

Pending assignments originate from several sources.

Automatic Assignment

An automatic assignment is regularly generated by On-Call Optimizer during the lifecycle of the schedule to extend the current assignment based on the configured assignment parameters.

Automatic assignments are only able to use the Add Shifts action to confirm new shifts onto the end of the current assignment.

Custom Assignment

A custom assignment is created directly by a user. The starting date, number of shifts and the action that is used to confirm the custom assignment into the current assignment for the schedule are all able to be customized by the user.

Imported Assignment

An imported assignment holds shifts that originated and were assigned in an external system such as the on-call product linked to a schedule. When a link is created, On-Call Optimizer will import the history of prior shifts from the on-call product so they are available to help the assignment algorithm create assignments that balance across all members of the schedule.

Saved Assignment

Saved assignments record the history of how the schedule was built and has evolved over time. In simple cases each historical assignment can be matched directly to a subset of the schedule (more specifically to a subset of the current assignment of the schedule), however in more complex cases where the schedule has been re-assigned or individual shift swaps have occurred it is possible that none of the shifts from a saved assignment remain in the current schedule.

Assignment Actions

A pending assignment must select one of the following actions to determine how the current assignment is updated when the assignment is confirmed.

Add Shifts

The pending shifts are added directly to the existing list of shifts in the current assignment. The combined list is sorted by start time. This action will fail if any of pending shifts overlap with or attempt to re-assign any of the existing shifts in the schedule.

The Add Shifts action is the only action used for any assignment initiated by On-Call Optimizer, such as extending the schedule with new shifts or importing shifts from an external source. Authorized users may also use the Add Shifts action when confirming a Custom Assignment.

Replace Shifts After First Start

  1. Any shifts in the current assignment which end after the starting time of the earliest shift in the pending assignment are removed.
  2. The shifts from the pending assignment are appended to the remaining current assignment.

The action will not modify the end time of any existing shifts and will therefore create a gap in the schedule if the start time of the earliest pending shift does not exactly match the end time of an existing shift.

This action is useful when the desire is to re-assigning all shifts after a particular date/time. This action will not be used by any assignment created by On-Call Optimizer, but may be specified by authorized users when confirming a Custom Assignment.

Replace Conflicting Shifts

  1. Any shifts in the current assignment which contain any time between the start of the earliest and the end of the latest shifts in the pending assignment are removed.
  2. The shifts from the pending assignment are added to the gap created in the current assignment by the previous step.

The action will not modify the start or end time of any existing shifts and will therefore create a gap in the schedule if the start and/or end times of the pending shifts do not exactly match the start/end times of any surrounding existing shifts.

This action is useful when the desire is to re-assign a small set of shifts (including just a single shift), such as in the case of taking-over or swapping shifts. This action will not be used by any assignment created by On-Call Optimizer, but may be specified by authorized users when confirming a Custom Assignment.

Assignment Confirmation

The process of confirming an assignment involves the following steps, which are guaranteed to occur transactionally:

  • The current assignment will be updated to include the pending shifts using the configured action as described above.
  • The new current assignment will be fully checked and validated and the process aborted unless all checks pass.
  • The pending assignment will become a saved assignment and become a permenant historical record of when and by which action the current assignment was updated.
  • Schedule events associated with new or changed shifts (e.g. notifications, export to destinations) will execute.

3 - Operating Lifecycle

Learn about the common operations and events that regularly occur for each schedule.

Time and tide wait for no one - On-Call Optimizer continuously monitors and assigns upcoming shifts to the best available members and ensures that any external destinations configured for the schedule remain synchronized with the assigned shifts.

How this occurs is easily understood as two processes that operate continuously, each checking the current state and taking any necessary actions to move towards the desired state at any time where a difference between two two states (current and desired) is detected.

Automatic Assignment

The automatic assignment process is responsible for ensuring the number of future shifts assigned for the schedule always remains above the desired horizon.

Steady-state Operation

During typical conditions, the current horizon (the end time of the final shift assigned in the schedule) is compared to the desired horizon and a new assignment is triggered whenever the current horizon is about to fall below the desired value.

The date the next automated assignment will fall due and the shifts that will be assigned at that time are visible in the Schedule Details side-bar on the right-hand side of each schedule.

The action taken once a new automatic assignment has been generated depend on the configuration of the Require manual confirmation? configuration setting for the schedule:

  • When enabled (default), the owner of the schedule will be notified of the new assignment, and required to review and manually confirm the shifts. No further actions will be taken by the automatic assignment process until this occurs.
  • When disabled, an attempt to automatically confirm the new assignment into the current assignment for the schedule will occur immediately after the assignment is generated.

Special Cases

First assignment for new schedules

A newly created schedule may not have any existing shifts from which the current horizon and therefore the due date for the next assignment can be calculated! To address this, all schedules are created with a configured start date in the future.

Prior to the start date no shifts are eligble for auto-assignment, and the start date itself is used instead of the the end time of the latest assigned shift when calculating the current horizon of the schedule.

This means that the first assignment for new schedules will occur N days prior to the configured start date, where N matches the desired horizon configuration of the schedule.

Unconfirmed automatic assignment

No further automatic assignment actions are undertaken while a previous automatic assignment is awaiting review. If this review does not happen promptly the schedule becomes at risk of members not receiving the desired horizon window of notification before their newly assigned shifts, or in the worst case, the schedule could run out of shifts entirely.

Pausing auto assignment or skipping time

Setting the start date to a future date at any time after the schedule has been created will result in the first assignment logic described above being triggered again - while the start date is in the future, it will be used as the basis for calculating the horizon when no other shifts exists. This can be used to cause On-Call Optimizer to skip assignment of shifts for a period of time if desired.

External Synchronization

The external synchronization process is responsible for importing and exporting information about a schedule from configured external systems.

Linked Schedule Configuration

For schedules configured with a link to an external On-Call Product, the following configuration details for the schedule will be regularly updated with the external values:

  • Name
  • Time zone
  • Members

All other configuration details including the shift configuration, cross-schedule availability, destinations and automatic assignment configuration are not changed by this process.

Destination Exports

Each configured destination is provided with new information whenever a new assignment is confirmed. Refer to the destinations documentation for further details.

Availability Information

The availability information for each member of the schedule is refreshed every hour and cached ready for use in any future assignments.

4 - Schedule Balance

Understand how On-Call Optimizer balances shifts across members

The 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 a share of the total number of shifts that is proportional to the time at which they were added to the schedule.

This means that the target number of shifts for each member in the schedule will often differ - members who joined the schedule around the same time will have similar targets, but the target will vary between members who have joined the schedule at a later date.

Statistics describing the balance of the schedule are available for the current assignment - showing the live state of the schedule, and can also be viewed when creating new custom assignments or examining the history of a particular assignment - showing a snapshot view of how that assignment altered, or will alter the balance of the schedule when it is or was confirmed.

Summary

At the top of each assignment page you will find a summary line containing details on the balance of the schedule and the quality of the assignment. The following icons and colours are used to provide a quick visual overview of the status of the schedule balance:

Green thumbs up:
The schedule is balanced.
Orange thumbs down:
The schedule is slightly unbalanced.
Red thumbs down:
The schedule is significantly unbalanced.
Red upwards arrow:
The schedule is significantly unbalanced, but improving in this assignment.

Live Balance

The live balance of a schedule will be displayed when viewing the current assignment for a schedule using a table similar to the one shown here. For each member the following information is shown:

  • Completed - the number of shifts already completed by the member (any shift currently in progress is counted as completed in this table).
  • Upcoming - the number of shifts that have been confirmed for the member in future assignments.
  • Total - the total number of completed and upcoming shifts assigned to the member.
  • Target - the number of shifts that the member should be assigned, based on the the number of assignable members in the schedule and when they joined.
  • Excess - the number of shifts that the member’s total is in excess of their target.

Assignment Snapshot Balance

The impact of an individual assignment on the balance of a schedule can be seen on the assignment details page both before the assignment is confirmed and afterwards. The balance table shown for an individual assignment is very similar to the example for the live balance above, except that the the Completed and Upcoming columns are replaced with Previous and New columns instead:

  • Previous - the number of shifts already assigned to the member (may be completed or upcoming) which are not changing in the assignment.
  • New - the number of additional shifts that will be assigned to the member when the assignment is confirmed.
  • Total - the total number of previous and new shifts that will be assigned to the member when the assignment is confirmed.
  • Target - the number of shifts that the member should be assigned at the time when the assignment is confirmed.
  • Excess - the number of shifts that the member’s total is in excess of their target.

Unlike the live balance shown for the current assignment, the balance statistics shown for an individual assignment are a snapshot of the balance of the schedule at the point in time when the assignment was generated or confirmed.

Shift Types

The balance for a schedule is calculated and tracked individually for each type of shift in the schedule. Shift types follow directly from the Shift Configuration of the schedule and are described by the day and time at which the shift starts, combined with its duration. The role (primary, secondary, etc) assigned forms the final component of a shift type, to ensure members are assigned a proportionate number of shifts for each role.

Shift accounting

The numbers reported in the balance tables count the number of shifts of each type assigned to a member and will therefore represent different lengths of time. In the balance table for a daily shift, a value of 1.0 would represent 24 hours, while in the table for a weekly shift a value of 1.0 would represent 168 hours.

Fractional shift numbers will arise in a number of situations, commonly including:

  • When the total number of shifts in the schedule is not evenly divisible by the number of members.
  • When swaps or other changes have resulted in the member only performing part of a shift.

Window Size

The balance for a schedule is calculated from the earliest shift contained within the history window (6 months in the past) until the final future shift that has been assigned.

Even when displayed in the context of an individual assignment that may only be covering a few days of time, the balance reported is for the schedule over the entire window.

5 - Members

Schedule members can have differing roles, configuration and permissions governing their interaction with the schedule.

Each schedule in On-Call Optimizer has one or more members who can be assigned to shifts. Additional members not eligible for assignment in the schedule can also be added in order to grant them permissions to view or administer the schedule.

The “Members” tab within a Schedule shows the list of members for the schedule along with their current role and properties.

Auto-send invitation emails

By default, On-Call Optimizer will automatically email invitations to new members when they are added to the schedule. This can be disabled by toggling the setting at the top of the “Members” tab to off.

When auto-send of invitations is disabled, invitation emails will only be sent to members when explicitly triggered using the button below the member list.

Adding and Removing Members

To add a member to a schedule, enter their email address in the text box at the bottom of the member list and click the “Add” button. If the email address entered does not yet have an On-Call Optimizer account, the user will be invited to created one (subject to the the auto-send invitations setting).

To remove a member from a schedule, click the trash-can icon to the right of the member’s name in the member list. When removing members you must ensure that the schedule still has at least one assignable member and at least one member with the Admin role. If these conditions cannot be met, the remove icon will not be visible.

Member synchronization for schedules linked to an on-call product

When an On-Call Optimizer schedule is linked to a schedule in an external on-call product the member list is synchronized from the linked schedule and On-Call Optimizer’s behaviour for member addition and removal differs from above as follows:

  • Additional members can be added to On-Call Optimizer with any of the supported roles (e.g. for administration or schedule visibility), but cannot be marked assignable and will not be synchronized back to the linked schedule. To add a member eligible for assignments to the schedule they must be added to the linked schedule directly.
  • Members added to the linked schedule will be synchronized into On-Call Optimizer within an hour of their addition.
    • By default the added member will be marked assignable when they are added to the On-Call Optimizer schedule.
    • The exception is when the member was added directly in On-Call Optimizer prior to being added to the linked schedule, in which case they remain un-assignable until the setting is explicitly changed.
    • If the added member does not match an On-Call Optimizer account an invitation will be generated and handled according to the state of the auto-send invitation emails setting.
  • Members synchronized from the linked schedule cannot be removed from the On-Call Optimizer schedule.
    • To prevent a member present in the linked schedule from being assigned future shifts, mark the member as un-assignable.
  • Removal of a member from the linked schedule will cause the member to be removed from the On-Call Optimizer schedule as well, even if the member was originally added via On-Call Optimizer directly.

Member List

The first and second columns of the members list show the invitation and calendar availability state for each member of the schedule. A description of each state can be shown by hovering over the icon(s) for any particular member.

The third column shows the member’s name or email address.

The fourth and fith columns allow configuration of the member’s assignment state and role in the schedule as described below.

The final column in the list contains actions (such as the remove icon) that may be available related to the member.

Properties

Invited

On-Call Optimizer supports adding members to a schedule without inviting them to share their calendars which can be useful when testing configuration and assignments of a new schedule type. To use this functionality, ensure the auto-send invitations setting is disabled and then clear the checkbox to the left of the member’s name in the member list.

Assignable

The boolean assignable property is configurable on each member of a schedule, regardless of role, and determines whether the member will be included in the assignment of future shifts for the schedule. Members default to being assignable when added to the schedule, but this can be changed using the toggle next to the member’s name in the member list. A typical use case for marking a member unassignable is to allow a user to view or manage a schedule without participating in the schedule themselves.

Roles

Schedule Admin

Schedule admins have full access to the schedule and can perform all actions available to members. The user who creates the schedule becomes the first schedule admin and can add further members as required. It is recommended to configure at least 2 admins per schedule.

Organization owned schedules are only deletable by a schedule admin when the Manage Schedules permission has been granted to organization members. If this permission is not granted, the schedule will only be deleteable by organization admins.

Schedule Member

Member is the default role for newly added members of a schedule. Members are able to make changes to the configuration and assignments of the schedule, but cannot remove or delete the schedule.

Schedule Viewer

Members in the viewer role can participate fully in the schedule (including being assigned shifts), but are not able to make any changes to the schedule’s configuration or assignments.

6 - Configuration

Understand the configuration options for a schedule and their effects.

The configuration of a schedule controls how On-Call Optimizer will generate shifts to assign for the schedule, and any availability information sourced from other schedules that should be taken into account when generating assignments.

In addition to the schedule configuration described on this page, other aspects of the how the schedule behaves throughout its lifecycle are controlled via:

  • The list of members and their roles and properties on the Members tab
  • The assignment settings accessible by clicking the wrench icon beside the “Next Shift Assignment” heading on the “Overview” or “Assignments” tabs of the schedule.
  • Any destinations that are configured for the schedule.

Basic Configuration

The basic configuration for a schedule includes its Name and the Time Zone in which it operates.

For schedules linked to an external On-Call Product the basic configuration is not editable and will be automatically synchronized from the external schedule.

Shift Configuration

The shift configuration describes how On-Call Optimizer will generate future shifts for the schedule. Up to 10 shifts may be configured on a schedule. The available configuration fields for each shift are:

  • Day: Required. One of the normal days of the week (Mon-Sun) or one of the wildcard values Daily, Weekdays, Weekends.
  • Hour: Required. In 24-hour notation, 00 - 23.
  • Minute: Required. 00 - 59
  • Primary Assignee: Optional (but at least one assignee is required across all shifts).
  • Secondary Assignee: Optional.

Valid values for the assignee fields are either a static member of the schedule or one of the following keywords:

  • BEST_MEMBER to request automatic assignment.
  • LAST_PRIMARY to request assignment of the member who was primary in the last shift.
  • [Not assigned] to request that no member be assigned to this role in the shift.

The Day, Hour and Minute fields describe when each new shift will start. The Primary/Secondary Assignee fields describe who, or how On-Call Optimizer will choose to, assign to each shift.

The [Not assigned] keyword is typically used in the secondary field when only a single assignee is required for the shift, however it can also be used in the primary field when you wish to configure a schedule with non-continuous assignments (e.g. only create shifts for business hours Monday to Friday). The only restriction is that at least one of the shift configurations must contain an assignee - there’s no point asking On-Call Optimizer to manage a schedule to which no-one is ever assigned!

Use the example configs to further understand how shift configurations can be combined to achieve a variety of different schedule types and configurations, or for detailed information consult the extension logic, and assignment algorithm reference.

Cross-Schedule Availability

The cross-schedule availability configuration can be used to automatically generate availability information for a schedule based on the assignments that are present in another schedule.

The availabilty information generated by cross-schedule availability configuration will be used with the same weight and purposes as availability information that has been individually supplied by members from their calendars.

Configuring cross-schedule availability requires 3 pieces of information:

  • Action: The type of availabilty information to create (Block or Prefer).
  • Source Assignee: Which of the assignees from the source schedule to create availability information for.
  • Source Schedule: The schedule from which to source the assignments used to generate the availability information.

Configuring cross-schedule availability creates a dependency on the source schedule which requires that it has been assigned prior to the schedule that is depending on it. Attempts to assign new shifts for a schedule which has a cross-schedule availability dependency on a source schedule which does not yet have assignments covering the dates of the requested assignment will fail as the source shifts needed to generate the availability entries required by the configuration do not exist.

Therefore when configuring cross-schedule availability you need to double-check that the horizon and schedule window settings for the source schedule are appropriately set to ensure it is always assigned before the schedule depending on it.

7 - Destinations

Describes how external integrations are configured and kept up to date with shifts.

Each On-Call Optimizer schedule can be linked to one or more destinations to enable the export of assigned shifts.

Supported Destinations

Additional destination types (e.g. calendars) will be added soon.

Adding and Removing Destinations

Destinations can be added and removed from a schedule via the “Destinations” tab within a Schedule.

Schedules created via linking an existing schedule will have a matching destination pre-populated which can be removed or edited if desired.

The available configuration parameters for a destination are:

  • Source Assignee: Which of the assignees from the schedule will be exported to the destination.
  • Automatic: When enabled, updated shifts are automatically pushed to the destination whenever new assignments are confirmed on the schedule. If disabled, updates to the destination must be manually triggered.

Destination Behaviour

On-Call Optimizer exports a list of shifts, each consisting of a single assignee to each destination. In order to export a schedule containing both primary and secondary assignees, two destinations will need to be configured, one sourced from the primary assignee, the other sourced from the secondary assignee.

For each destination On-Call Optimizer tracks the end time of the most distant shift that was successfully sent to the destination.

During normal operation the end time of the last shift exported to a destination should match the shifts that have been assigned up to the configured horizon of the On-Call Optimizer schedule. This date can always be viewed in the tooltip of the status icon for the destination on the Destinations tab of any On-Call Optimizer schedule.

Destination Export

When configured for automatic export, the destination will be updated with new shifts after each new assignment is confirmed to the schedule. When automatic export is disabled, the destination will only be updated when an export is explicitly triggered via the user interface.

To trigger a destination export, click the “Export Now” button on the right hand side of the destination’s row.

Destination Status

A status is reported for each destination as one of the following states:

  • OK: All assigned shifts are successfully exported and represented in destination.
  • Pending: No shifts are yet assigned for the schedule to export, or an export attempt is currently in process.
  • Warning: Future shifts (beyond 3 days from now) are not yet successfully exported to the destination.
  • Error: The current or imminent shifts (within the next 3 days) have not been successfully exported to the destination.

Any destination reporting an Error or Warning status will cause the schedule to be reported in the corresponding state also.

8 - Shift Swaps

Simple, automated assistance to resolve unexpected changes in availability

Unexpected changes in member availability are an inevitable fact of life. On-Call Optimizer assists schedule members to handle these events by co-ordinating the process of reassigning a future shift that the requesting member is no longer able to perform.

Members simply specify the shift they are unable to perform and then get back to other work.

In the background On-Call Optimizer takes care of notifying and checking with each other member of the schedule to determine whether they are willing and able to take the shift, and then when a willing member is found the schedule is automatically updated.

Benefits

  • Eliminates significant time that would previously have been needed to manually arrange and configure the swap.

  • The members most likely to be able to accept the swap request are notified first as On-Call Optimizer is able to integrate the information already held for each member, including their blocks, preferences and the overall balance of the schedule, into the planning of the swap request.

  • Members can choose to simply take the requested shift without needing to swap one of their existing shifts in return, providing greater choice and flexibilty in how requests are resolved.

    On-Call Optimizer ensures balance across the schedule is maintained by assigning fewer shifts to any member who has performed more than the expected share of shifts in future assignments.

The end result is simple, straightforward shift swaps with minimal time or hassle required from any member.

Requesting a Shift Swap

To initiate a request to swap a future shift, click the swap icon shown to the right of the shift when viewing the assignments for a schedule.

Before confirming the request you will have the opportunity to supply a short note which you can use to describe any information or details that will help other members determine whether they are able to accept the request as well as a deadline by which you would like to receive an answer to the swap request by.

Request Processing Details

Once you confirm the details of your swap request On-Call Optimizer will begin assembling an ordered list of members who are candidates for the swap.

When determining the ordering of members, On-Call Optimizer considers the same set of factors and weights as used in the automatic assignment algorithm including member availability, schedule balance and the distance between shifts for a member.

Members will be given a time window within which they can respond to the request. The length of time given to each member defaults to 8 working hours, but will be reduced as necessary in order to ensure that all remaining candidates can be given an opportunity to respond prior to the specified deadline.

When reducing the available response time window, On-Call Optimizer will not reduce the window below 4 working hours, but will instead increase the number of members allowed to have outstanding notifications to achieve the goal of giving all members an opportunity to respond prior to the specified deadline.

If no response has been received at the end of the time window allocated to a member, On-Call Optimizer will move on and notify further members of the schedule to request their response. Members who did not respond within their original time window are still able to respond at any point up until the request has been completed.

Once a response that causes the request to enter the accepted state is received (e.g. a Swap or Take action) no further members are notified. In cases where all members defer their response, or no response has been received and the deadline is approaching the request will enter a last chance state (described further below) in which all members are re-notified.

Responding to a Swap Request

To respond to a swap request, the responding member must choose one of four available actions:

  1. Take the shift, without swapping an existing shift. The requested shift will be reassigned to the member accepting the request. If this results in any imbalance between members in the schedule, it will be addressed by On-Call Optimizer assigning more/fewer shifts to the appropriate members in subsequent assignments.

  2. Swap an existing shift. The responding member will be able to choose from a subset of their assigned future shifts that match the availability information of the requesting member (e.g. any assigned shifts that fall within a blocked time period will be unavailable as a swap target).

    This option may be unavailable when the responding member has no assigned future shifts, all their assigned future shifts conflict with the requesting members availability, or none of their assigned shifts are considered equivalent to the partial shift being swapped.

  3. Defer their response until all other members have responded. Indicating that they may consider taking the shift as a last resort, but would prefer another solution to be found if possible. On-Call Optimizer will re-notify members who deferred their response when the request enters into the last chance state. This option cannot be selected once the last chance state itself has been reached.

    On-Call Optimizer will automatically select this option for any member whose availability information contains a block matching the requested shift. In this case, the member will not be notified of the request until it enters the last chance state in the case that all other members respond with a decline or defer response.

  4. Decline the request. Indicating that they are unable to take the requested shift.

After selecting the desired action, an optional note to explain the response can also be provided.

Once you are happy with your selection and any note, click the Confirm Response button.

The first member to respond with a “Take” or “Swap” action will cause the request to be marked as accepted.

Partial Shifts

On-Call Optimizer supports swapping part of a larger shift. To use this functionality click on the Edit start/end time button to the right of the Shift to Swap line when creating or editing a swap request and select the desired start/end time (which must be within the original shift selected) for the swap request.

Responders will Other than the selection of candidate shifts for responders to swap described below, all other processing of partial swap requests is unchanged.

Response options for a partial swap request

When responding to a swap request for a partial shift members will be presented with a list of equivalent partial shifts assigned to them that could be swapped with the requesting member. Depending on the details of the partial swap requested only a subset of the shifts assigned to the responding member may be considered equivalent and able to be swapped based on the criteria below.

If none of the member’s assigned shifts are considered equivalent to the the partial swap request the Swap response will be unavailable, however the responding member can still choose to Take the shift without a swap.

Identifying equivalent shifts

An assigned shift for a member is considered to be equivalent for a partial swap if it starts at the same shift configuration day and time and has the same duration as the base shift which the partial swap request originates from.

If the duration of the partial swap is less than 24 hours, weekdays are considered equivalent to each other when matching the start day between the requested partial swap and each potential equivalent shift assigned to the responder.

Examples

  • An assigned shift for Wednesday 9am to Thursday 9am, would match a partial swap request for Monday 9am-5pm period of a base shift covering 9am Monday to 9am Tuesday.
  • An assigned shift for Wednesday 9am to Thursday 9am, would not match a partial swap request for Monday 9am-5pm period of a base shift covering 9am Monday to 9am the following Monday (e.g. one week).

Swapping the current shift

On-Call Optimizer supports swap requests that change the shift that is currently occuring which can arise in two ways:

  1. The current on-caller initiates the swap request after the start time of the shift.
  2. A prior swap request does not receive a response prior to the start time of the shift being swapped.

When swapping the current shift On-Call Optimizer will immediately enter the last chance mode of processing and request an immediate response from all members of the schedule. When a member accepts the request the swap will begin from the next minute to allow time for synchronization with any configured destinations.

Swap Request State Reference

Each swap request passes through the following states

Pending

The request has been received and is being processed by On-Call Optimizer. Notifications to each candidate member will be sent in turn and all response actions are available to be chosen by any candidate member (including those who have not yet been notified, who may notice the request in the UI, etc).

Accepted

Either a swap or an agreement to take the shift has been found and On-Call Optimizer is currently processing the required update(s) to the assignments of the schedule. Once a request has moved into the accepted state it cannot be changed. Other members are unable to respond in any way and the action cannot be reversed unless a subsequent swap request for the same shift is made after the current request reaches the completed state.

Completed

The requested shift (and the shift being swapped to if present) have been successfully reassigned in the current assignment of the schedule. The request and the swap are final. If future changes to the shift are required they must be made via further swap requests or custom assignments of the schedule.

Last Chance

The last chance state is entered when any of the following conditions are met:

  • All candidate members have provided a response without any member acceepting the request, but at least one member has deferred their response.
  • The deadline for the request is in 4 working hours or less (in the time zone of the schedule) and one or more candidate members has yet to respond, or has deferred their response.
  • The shift being swapped is the currently active shift!

When the last chance state is entered all members who have not explicitly declined the shift will be re-notified with the information that no-one has yet accepted the shift and their further response is now required.

Overdue

If no responses are received during the last chance state, the request will become overdue once the deadline has passed. In this state, all members will have received at least one prior notification, but no member has accepted the request, and at least one member has not yet provided a response.

The request will remain in this state until it expires with On-Call Optimizer periodically reminding any members have not yet responded (including those that initially deferred their response) that the requesting member is still awaiting an answer.

Infeasible / Expired

These terminal states indicate that the request was unable to be completed, either because all candidate members explicitly declined the shift (Infeasible), or the start time of the shift was reached before any member accepted the shift (Expired).