Rostering
Rostering is the process of assigning employees to shifts in order to fulfill the required demand for workforce.
The Automatic Rostering API supports two types of schedules, CALENDAR
and RECURRING
. CALENDAR
is for planning specific calendar periods with a start and end date, whereas RECURRING
is for planning for a recurring period where the end of the last day wraps around to the start of the first day. This is applicable when you want to plan for a certain number of weeks that can be reused in several planning periods. The schedule type and planning horizon are defined in the jobInfo
object in the request payload.
Job info in the request payload
id required | string (rosterId) Identifier for this roster. |
organisationId required | string (organisationId) Identifier for the organisation/user that has requested this roster. |
scheduleType required | string Enum: "CALENDAR" "RECURRING" Type of schedule that the solver should create. Can be either "RECURRING" or "CALENDAR". See documentation for more information. |
demandType required | string (demandType) Enum: "SHIFT_DEMAND" "TIME_DEMAND" Type of demand that will be used in this job. Can be either "SHIFT_DEMAND" or "TIME_DEMAND". See documentation for more information. |
required | object (planningHorizon) Specifies the planning horizon for which a roster will be created. The required properties depend on the scheduleType, which can be either "RECURRING" or "CALENDAR". See documentation for more information. |
{- "id": "string",
- "organisationId": "string",
- "scheduleType": "CALENDAR",
- "demandType": "SHIFT_DEMAND",
- "planningHorizon": {
- "startDate": {
- "example_1": {
- "value": "2023-12-24",
- "summary": "The 24th of December 2023."
}
}, - "endDate": {
- "example_1": {
- "value": "2023-12-24",
- "summary": "The 24th of December 2023."
}
}, - "nrOfWeeks": 1,
- "fteStartDay": {
- "dayIndex": {
- "example_1": {
- "value": 9,
- "summary": "The 10th day of the planning horizon."
}
}
}, - "fteEndDay": {
- "dayIndex": {
- "example_1": {
- "value": 9,
- "summary": "The 10th day of the planning horizon."
}
}
}
}
}
There are three core entities in every rostering problem; employees, shifts and demands. In some use cases, the shifts and demand overlap, e.g. when the demand is defined as the demand for particular shifts rather than a demand for people needed over time. In the Automatic Rostering, both use cases can be configured, through ShiftDemand and TimeDemand - see the Demand section for more information.
📄️ Shifts
Shifts specify the different kinds of working hour assignments that employees may receive. In any solution produced by the solver, employees will only receive working hours by being assigned to any of the possible Shifts. This page will give some pointers on how to define Shifts in your payload.
📄️ Employees
Employees form the foundation for all schedules produced by the solver. The primary objective for all produced schedules is to assign employees to shifts in such a way that they can optimally cover all demand for labour.
📄️ Demands
Demand is the need for workforce and defines how many employees you need at work at any given time in the planning period. Specifying demands in the payload is done using the Demands property.
📄️ Tasks
Demands can have an associated Task, which can be used to specify the type of work that should be done during a demand.