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.
The configuration and shifts for this schedule are linked with Example System.
The configuration for this schedule is imported from 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.
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
- Any shifts in the current assignment which end after the starting time of the earliest shift in the pending assignment are removed.
- 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
- 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.
- 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:
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.
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.
NOTE
On-Call Optimizer does not yet perform any ongoing synchronization or monitoring of previously exported shifts unless they are directly
changed in On-Call Optimizer (e.g. by replacing an earlier assignment or using On-Call Optimizer’s swap
functionality).
This allows last-minute and short-term changes to shifts (e.g. to cover a commute window from home to the office) to be made directly in
the destination without conflicting with On-Call Optimizer, however if you make a planned change to the schedule in On-Call Optimizer, the
destination will also be updated.
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:
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.
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.
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.
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:
- The current on-caller initiates the swap request after the start time of the shift.
- 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).