Skip to main content

Roster employee minutes

Employee-minutes-entire-roster-check

The Employee-minutes-entire-roster-check check is useful for determining if the roster is feasible with respect to the required employee minutes in the full roster.

Will determine if it's possible for each employee to get their required minutes. The required minutes are determined either by considering the minimum hours necessary per week, or, if left unspecified, the maximum hours per week/per period.

This check is an upper bound on how many minutes an employee can be allocated. It does not consider if there is enough demand for the employee and shifts to actually be scheduled.

If it is not possible for an employee to get their required minutes in the roster, this is returned as a warning in the feasibility response.

Warning Response Schema
title
required
string
Enum: "Employee-availability-check" "Demand-weekend-covered-by-employees-check" "Employee-minutes-weekly-check" "Employee-minutes-entire-roster-check" "Demand-covered-by-shift-templates-check" "Shift-is-covered-by-demand-check" "Employee-assigned-to-shift-covers-demand-check" "Shift-Templates-are-demand-relevant-check" "Shift-utilization-minimum-occurrence-check" "Locked-shift-task-requirements-check"
category
required
string

This category is always set to WARNING

description
required
string
required
Array of objects (violation)
{
  • "title": "Employee-availability-check",
  • "category": "string",
  • "description": "string",
  • "violations": [
    ]
}

The following fields are used in the "violation" object:

  • employeeNumber
  • requiredMinutes
  • achievableMinutes

The following payload illustrates how the response looks for a payload with 2 employees that cannot have their required hours met.

Example

In this example, we illustrate a payload that will cause a warning in the feasibility check. The first employee has a min/max capacity of 7 hours a week. The second employee has a max capacity of 21 hours over the entire schedule.

FTE fullfilment

In this payload, we make the check a bit more complex by specifying the FTE fullfilment from working the "WORK" type. In this case, we set it at 0.5.

"workTypes": [
{
"id": "1",
"name": "WORK",
"factor": 0.5
}
]

Given the worktype factor of 0.5, that means the two shifts effectively count as 6 and 7 hours, respectively.

For employee 1, who has a minimum requirement of 7 hours, can only work a single 6 hour shift per week, as that accumulates over time, the employee reaches at most 18 out of the 21 hours necessary, and so a warning of 3 missing hours appear.

For employee 2, who has a maximum requirement of 21 hours, can work 2x 14 hours, and 1x 12 hours, which is 40 hours, but fte is only 0.5, so 20 hours, which results in a warning of missing 1 hour.

Payload example
{
"jobInfo": {
"id": "xxx",
"organisationId": "xxx",
"scheduleType": "RECURRING",
"demandType": "TIME_DEMAND",
"planningHorizon": {
"startDate": "2022-01-01",
"nrOfWeeks": 3,
}
},
"shifts":[
{
"id":"Shift1",
"shiftTypes":[
"Day"
],
"intervals":[
{
"startTime":"07:00",
"endTime":"20:00",
"dayIndicator":0,
"workTypeId":"1",
"breakMinutes":60
}
]
},
{
"id":"Shift2",
"shiftTypes":[
"Day"
],
"intervals":[
{
"startTime":"06:00",
"endTime":"22:00",
"dayIndicator":0,
"workTypeId":"1"
}
]
}
],
"employees":[
{
"id":"1",
"workTime":{
"weekHoursRules":{
"minWeekHours":36,
"maxWeekHours":36
}
},
"attributes": [
{
"id": "personnel-group",
"values": ["group-1"],
}
]
},
// This employee can work 1x 12 hours, which is 6 hours, because fte is only 0.5
// which results in a warning of missing 1 hour
{
"id":"2",
"workTime":{
"weekHoursRules":{
"minWeekHours":7,
"maxWeekHours":7
}
},
"attributes": [
{
"id": "personnel-group",
"values": ["group-2"],
}
]
},
// This employee can work 2x 14 hours, and 1x12 hours, which is 40 hours, but fte is only 0.5, so 20 hours
// which results in a warning of missing 1 hour
{
"id":"3",
"attributes": [
{
"id": "personnel-group",
"values": ["group-2"],
}
]
"workTime":{
"maxHoursInFTECountPeriod":21
}
}
],
"timeSlots":[
{
"id":"all_day",
"startTime":"00:00",
"endTime":"23:59",
"workTypeId":"1",
"attributeRequirements": [
{
"id": "personnel-group",
"values": ["group-1"]
}
]
}
],
"demands":[
{
"days":{
"dayIndexes":[
0,
1,
2,
3,
4,
5,
6
]
},
"timeDemands":[
{
"timeSlotId": "all_day",
"ideal": 1
}
]
}
],
"configuration":{
"workTypes":[
{
"id":"1",
"name":"WORK",
"factor":0.5
}
]
}
}