---
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-06-17'
---

> 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 needs exactly one active default assignment at any time. Without it, the employee appears to have no expected hours and overtime is computed wrong. A non-default assignment is essentially documentation.

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 most recent overlapping default wins.

> [!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.
