Scheduling Employee Preferences - Aggregated

Scheduling employee preferences affect schedule generation for each employee.

Preferences include:

  • Preferred Availability
  • Preferred Job
  • Preferred Hours Per Week
  • Preferred Day Off
  • Most Hours Per Week
  • Earliest Shift
  • Longest Shift

Prerequisites

A person ID is the same identifier as personKey and employee ID, and is not the same as a person number.

Example

In this example, we assign, verify, delete, and pass a request that makes no change to multiple people's scheduling employee preference assignments.

Create or update assignments

The create or update request:

  • uses personIdentity to identify the person using their person number
  • uses scheduleEmployeePreference inside personAssignments to define the scheduling employee preferences to assign

Example request

Call POST /v1/commons/persons/assignments/multi_upsert with the following request payload.

   [
    {
        "personIdentity": {
            "personNumber": "90105"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 101,
                    "qualifier": "ZoneCat1"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1001,
                        "qualifier": "ZoneSet11"
                    },
                    "zone": {
                        "id": 1001,
                        "qualifier": "ScheduleZone11"
                    }
                }
            }
        }
    },
    {
        "personIdentity": {
            "personNumber": "20335"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 1002,
                    "qualifier": "ZoneCat12"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1002,
                        "qualifier": "ZoneSet12"
                    },
                    "zone": {
                        "id": 1002,
                        "qualifier": "ScheduleZone12"
                    }
                }
            }
        }
    }
]

Example response

A success response returns HTTP status code 200 and a response body similar to the following example.

[
    {
        "personIdentity": {
            "personNumber": "90105"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 101,
                    "qualifier": "ZoneCat1"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1001,
                        "qualifier": "ZoneSet11"
                    },
                    "zone": {
                        "id": 1001,
                        "qualifier": "ScheduleZone11"
                    }
                }
            }
        }
    },
    {
        "personIdentity": {
            "personNumber": "20335"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 1002,
                    "qualifier": "ZoneCat12"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1002,
                        "qualifier": "ZoneSet12"
                    },
                    "zone": {
                        "id": 1002,
                        "qualifier": "ScheduleZone12"
                    }
                }
            }
        }
    }
]

Verify assignments

You can use the bulk multi-read operation to verify assignments for multiple people at once.

Example request

To verify, call POST /v1/commons/persons/assignments/multi_read with the following request payload.

{
  "where": {
    "employees": {
      "key": "personNumber",
      "values": [
        "90105","20335"
      ]
    },
    "personAssignments": [
         "scheduleEmployeePreference"
    ]
  }
}

Example response

A success response returns HTTP status code 200 and a response body similar to the following example.

[
    {
        "personIdentity": {
            "personNumber": "90105"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 101,
                    "qualifier": "ZoneCat1"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1001,
                        "qualifier": "ZoneSet11"
                    },
                    "zone": {
                        "id": 1001,
                        "qualifier": "ScheduleZone11"
                    }
                }
            }
        }
    },
    {
        "personIdentity": {
            "personNumber": "20335"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "zoneCategory": {
                    "id": 1002,
                    "qualifier": "ZoneCat12"
                },
                "zone": {
                    "zoneSet": {
                        "id": 1002,
                        "qualifier": "ZoneSet12"
                    },
                    "zone": {
                        "id": 1002,
                        "qualifier": "ScheduleZone12"
                    }
                }
            }
        }
    }
]

Make no change to assignments

When working with large numbers of people, you may wish to pass a request payload that makes no changes to a person's scheduling employee preference assignments.

In the following example, the system makes no changes. Setting a null assignmentProfile and passing the unAssignExisting Boolean as false both result in no changes to a person's assignments.

Example request

Call POST /v1/commons/persons/assignments/multi_upsert with the following request payload.

[
    {
        "personIdentity": {
            "personNumber": "10020"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "assignmentProfile":null
            }
        }
    },
    {
        "personIdentity": {
            "personNumber": "10030"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "unAssignExisting":false
            }
        }
    }
]

Example response

A success response returns HTTP status code 200 and a response body similar to the following example.

[
    {
        "personIdentity": {
            "personNumber": "10020"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {}
        }
    },
    {
        "personIdentity": {
            "personNumber": "10030"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {}
        }
    }
]

Delete assignments

You can delete, or unassign, scheduling employee preference assignments. To delete our example's scheduling employee preference assignments, call POST /v1/commons/persons/assignments/multi_upsert using the unAssignExisting property.

Example request

Call POST /v1/commons/persons/assignments/multi_upsert with the following request payload.

[
    {
        "personIdentity": {
            "personNumber": "90105"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "unAssignExisting":true
                 
                 
            }
        }
    },
    {
        "personIdentity": {
            "personNumber": "20335"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {
                "unAssignExisting":true
            }
        }
    }
]

Example response

A success response returns HTTP status code 200 and a response body similar to the following example.

[
    {
        "personIdentity": {
            "personNumber": "90105"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {}
        }
    },
    {
        "personIdentity": {
            "personNumber": "20335"
        },
        "personAssignments": {
            "scheduleEmployeePreference": {}
        }
    }
]
   

Note: You can verify that the assignments were deleted by calling POST /v1/commons/persons/assignments/multi_read with a request payload specifying all of the affected person identities.