---
title: 'Employee work shifts'
summary: 'The assignment of a work shift template to one or more employees over a date range. Holds the is_default flag that marks which shift drives time-tracking computations.'
section: features
tags:
  - crud
  - tempus
  - scheduling
  - hr
updated: '2026-09-16'
---

> An **employee work shift** is the assignment of a [work shift template](tempus_work_shifts.md) to one or more employees over a date range, for example "Employees A, B, and C on the Full-Time 40h pattern from 1 January through 30 June". It records who, which shift, when, and whether it is the default.

## Overview

Assignments are managed from the **Assign work shift** page (also the Assign button on the Work shifts list). The form targets one or more employees, a whole department, or a group at once via the assignment type selector. The work-shift dropdown is filtered to shifts whose weekly total matches the targets' contracts.

## What it does

The assignment type decides the target population:

| Type | What it targets |
|---|---|
| **All** | Every active employee in the chosen company. |
| **Departments** | Every active employee whose contract names one of the chosen [departments](tempus_departments.md). |
| **Groups** | Every active employee linked to one of the chosen [Cockpit groups](../telephony/groups.md). |
| **Users** | Specific employees you pick by hand. |

The **is default** flag is what time-tracking consults. An employee has exactly one default assignment — the panel enforces it, whatever the dates. Without one, the employee appears to have no expected hours and overtime is computed wrong. A non-default assignment is essentially documentation.

Marking an assignment as default while the employee already has one asks you to confirm the move, naming the shift losing the flag and the one gaining it. On confirmation the previous default is cleared in the same save, so the flag never sits on two assignments at once.

Only an assignment that is still running can carry the flag: its end date must be today or later, or left open. An assignment whose period has already closed is history, and the fall-back it would describe is in the past — so the panel refuses the flag, and refuses to shorten the current default's end date into the past while it still holds it.

On save, one row is created per matched employee and a compilation job expands the assignment into per-day expected-hours rows. To change a shift mid-employment, end the current assignment the day before the switch and create a new default assignment from the switch date — the confirmation moves the flag for you.

> [!CAUTION]
> Editing an existing assignment's dates retroactively shifts expected hours for already-computed periods. For mid-stream changes, close the old assignment and create a new one instead.

> [!WARNING]
> Assignments do not auto-end when a contract ends. The engine ignores an open-ended assignment once there is no active contract, but cleanup is yours.

## See also

- [Work shifts](tempus_work_shifts.md) - the template this entity assigns.
- [Employees](tempus_employees.md) - the population receiving assignments.
- [Contracts](tempus_contracts.md) - the contract's hours constrain assignability.
- [Employee onboarding](tempus_employee_onboardings.md) - the wizard that creates the initial assignment for a new hire.
- [Time points](tempus_time_points.md) - where the expected hours derived from the assignment are consumed.
