Skip to content

Shift Planning

This content is for v1.0. Switch to the latest version for up-to-date documentation.

Shift planning lets admins and managers build weekly rosters from reusable shift templates, publish them to employees, and handle day-to-day changes through shift swaps — with German working-time law (ArbZG) checks built in. It is opt-in: a tenant must have it enabled, and only users on the shift-based work-time model draw their target hours from the roster.

A super-admin turns the feature on per company under Admin → Companies:

  • Shift planning Beta — enables shift templates and rosters for the company.
  • Roster notice period (days) — advance notice required before a roster may be published (e.g. from a collective or works agreement). 0 = none. The planner sees a “publish by” hint and a warning once the period has passed.

Once enabled, a Shifts entry appears for admins and managers, and a My shifts entry for every employee.

Each user’s daily target hours come from their work-time model:

  • Weekly — fixed/flexible weekly hours from the work schedule (the default).
  • Shift-based — target hours are derived from the published roster instead of weekly hours.
  • Inherit — use the department default, then fall back to weekly.

Set it per user under Admin → Users, or as a department default under Admin → Departments. Only shift-based users are affected by the roster; weekly users keep their schedule.

Templates are reusable shift definitions (e.g. “Früh 06:00–14:00”) created under Shifts. Each has a name, start and end time (if the end is not after the start, the shift crosses midnight, e.g. 22:00–06:00), a break in minutes (subtracted from the gross to give paid net time), a colour for the grid, and an active flag. Shifts in the statutory night window (23:00–06:00) are detected automatically for the ArbZG checks.

The roster is a weekly grid of employees × days. Assign a template per cell, add an optional note, and use Copy previous week to carry a recurring plan forward. Drafts are invisible to employees and do not affect target hours. When ready, choose Publish & notify: assignments become visible in My shifts, feed shift-based target hours, notify affected employees (email and/or push, per their preferences), and show each employee a precise change diff versus the last published version.

Absences. Each roster cell shows the employee’s vacation and sickness for that day — approved or still requested, including half days and sick leave without a known end. Other leave types appear as Absent; home office and business travel do not. A shift assigned on a day of approved whole-day absence is flagged as a conflict.

  • Request. From My shifts an employee picks one of their published shifts and the colleague who should take it over, optionally with a reason.
  • Colleague consents. The colleague sees the request under Requests and agrees or declines.
  • Manager approves. After consent a manager/admin approves or rejects it — a rejection can include a reason, which the requester sees. On approval the shift moves to the colleague; if the colleague has a shift that day, it moves to the requester in exchange.
  • Statuses: awaiting colleague's consent → awaiting manager approval → approved, or declined, rejected or withdrawn. Until approval the requester can withdraw the request.

My shifts shows the employee’s own published roster as a week or month; they can acknowledge the plan (“I have seen my shifts”) and request a shift swap from here.

Calendar subscription. Employees can enable a calendar feed and subscribe to the generated iCalendar URL (/shifts/feed/<token>) from any calendar app; it auto-updates. Renew link replaces the URL (the old one stops working), disabling revokes it. The database stores only half of the link — the other half is derived from SESSION_SECRET — and Klokk’s access log shows the feed path without the token.

Pre-shift reminders. Set SHIFT_REMINDER_HOURS (see Shift Planning under environment variables) to push a reminder that many hours before a shift starts — once per shift, to employees who enabled the “Shift plan published or changed” push notification.

ArbZG audit. Klokk checks rosters against the German Working Time Act — daily/weekly maximums, the 11-hour rest period, and night-work rules — and the Yearly ArbZG audit view gives a per-employee, full-year compliance overview.