Schedule Overview
The Two Ways to Build a Schedule
1. Generated Schedule (the normal flow)
The manager picks which positions (roles) to generate for, and the system automatically creates shifts based on recurring templates, employee availability, and company rules. The manager can then review, tweak, and publish.
2. Manual Schedule (skip generation)
The manager skips generation entirely and builds the schedule by hand — dragging, clicking, assigning shifts one by one. Useful for small teams or weeks that don't follow the usual pattern.
Schedule States
A week's schedule goes through these stages:
| State | What it means |
|---|---|
| Empty | No schedule exists for this week yet. |
| Pre-publish | The manager skipped generation and is building shifts by hand. Pre-published shifts are visible in the assigned employee's schedule, but other employees are not aware and no notification is sent. |
| Draft | The system generated shifts, but they haven't been shared with employees yet. |
| Posted | The schedule has been published — employees can see their shifts. |
State Transition Diagram
How the state is determined
The system checks what has been done for the week, in this order:
- If any positions have been published → the week is Posted
- Otherwise, if any positions have been generated → the week is a Draft
- Otherwise, if the manager skipped generation and scheduled manually → the week is Pre-publish
- Otherwise → the week is Empty
Note: A Posted or Draft schedule can also contain manually-added shifts alongside generated ones. The week is only considered "Pre-publish" when generation was skipped entirely.
How states affect employee requests
| State | Effect on vacation / availability requests | Open shifts |
|---|---|---|
| Pre-publish | Employees cannot take vacation on a scheduled day, but vacation and availability change requests are not blocked for the position. | Position is open — requests are not blocked. |
| Draft | Position is blocked for vacation requests and availability change requests. | Open shifts do not block requests. |
| Posted | Published shifts block vacation and availability change requests. | Open shifts do not block requests. |
The Five Actions
1. Pre-publish / Publish
What it does: Shares the schedule with employees so they can see their shifts.
In pre-publish mode (Pre-publish):
- Persists and publishes all manual shifts at once (no position selection needed) — manual shifts are not saved until Pre-publish is clicked; navigating away from the week before doing so discards them
- The shift appears in the assigned employee's schedule immediately — no push notification is sent
In generated mode (Publish):
- The manager picks which positions to publish (not all at once if they prefer)
- Before publishing, the system checks for shift time conflicts — if any employee has overlapping shifts in the selected positions, publishing is blocked and conflicting employees are listed
- Only employees whose shifts have changed are notified — if re-publishing a posted position after modifications, only the affected employees receive a push notification
- The schedule moves from Draft to Posted
When it is disabled:
- The schedule is empty (nothing to publish)
- Everything is already published and nothing has changed
2. Create (Generate)
What it does: Runs the automatic scheduling algorithm for selected positions.
From an empty week:
- The manager picks positions to generate for
- The system creates shifts based on recurring templates and employee rules
- The week becomes a Draft
From pre-publish mode:
- The manager picks which positions to generate
- Existing manual shifts are kept — the algorithm works around them
- The week transitions from Pre-publish to Draft; manual shifts coexist with generated shifts
From an existing draft/posted schedule:
- Only positions that have not been generated yet are available
- Adds new generated shifts alongside existing ones
When it is disabled: All positions have already been generated.
When it is blocked: The company has no employees.
3. Recreate
What it does: Re-runs the generation algorithm for positions that were already generated but not yet published. Useful when the manager wants a fresh start on certain positions without affecting what employees already see.
Common reasons to recreate:
- Employees have been hired or fired since the last generation
- Employee or company settings have changed (e.g. availability, roles, constraints) and need to be reflected in the schedule
- Shift structures or recurrencies have been updated and the schedule should be regenerated against the new rules
How it works:
- The manager picks which generated (unpublished) positions to regenerate
- The old generated shifts for those positions are thrown away
- Manual shifts for those positions are preserved — they are not wiped
- The algorithm generates new shifts, working around published and manual shifts
When it is available:
- Only in Draft or Posted mode (not in Pre-publish mode — there is nothing to regenerate)
- Only for positions that are generated but not yet published
When it is hidden/disabled:
- In pre-publish mode (no generated positions exist)
- When the schedule is fully posted (all generated positions are published)
- When the schedule is empty
4. Unpublish
What it does: Removes selected positions from the published schedule. Employees will no longer see shifts for those positions. The shifts are NOT deleted — they go back to being a draft.
How it works:
- The manager picks which published positions to unpublish
- Those positions' shifts are removed from what employees see
- The shifts still exist as a draft — the manager can re-publish later
- If all positions are unpublished, the week goes from Posted to Draft
When it is available: Only when the schedule is Posted (at least one position is published).
When it is hidden: In pre-publish mode or draft mode (nothing is published yet).
5. Delete
What it does: Permanently removes shifts for selected positions from the working schedule.
In pre-publish mode:
- Deletes all manual shifts for the selected positions
- If the schedule becomes completely empty, the week goes back to Empty
In generated mode (Draft/Posted):
- Only non-published positions can be deleted (to delete a published position, unpublish it first)
- Manual shifts are preserved by default — only the generated shifts are removed
- If all generated positions are deleted but manual shifts remain, the week falls back to Pre-publish mode
- If everything is deleted, the week goes back to Empty
When it is disabled:
- The schedule is already empty
- All positions are published (must unpublish first)
Shifts
A shift is a single work assignment: one employee, one position, one time range, on one day. Shifts are the building blocks of the schedule.
How shifts are created
- Generated by the algorithm — the Create action produces shifts automatically based on recurring templates, availability, and company rules.
- Added manually by the manager — the manager clicks on a day cell, picks an employee, sets the time and position. This works in any state (Pre-publish, Draft, or Posted). Important: manual shifts are not persisted until the manager clicks Pre-publish. Navigating away from the week before doing so will discard them.
Editing shifts
While in editing mode, the manager can:
- Change the time (start/end) of a shift
- Add a note to a shift
- Put a shift on hold (marks it but keeps it in the schedule)
- Forward (move) a shift to a different employee — useful for last-minute substitutions
- Trade shifts between two employees (drag and drop) — both employees must have the other's position assigned
- Delete a shift entirely
Each operation on generated or published schedules is saved individually to the database in real-time. Auto-save also runs as a safety net. Note: this does not apply to manual shifts in pre-publish mode — those are only persisted when Pre-publish is clicked.
Validation
The system prevents invalid shifts:
- A shift must have a start time, a position, and a sub-position
- Start and end time cannot be the same
- An employee cannot have overlapping shifts on the same day — the backend rejects the operation if a new or moved shift would overlap with an existing one
Open Shifts
An open shift represents an unfilled need — the position needs coverage at a certain time, but no employee is assigned yet.
Open Shift Lifecycle
How open shifts are created
- By the generation algorithm — when the algorithm cannot find a suitable employee for a slot, it creates an open shift instead.
- Manually by the manager — adding a shift without selecting an employee creates an open shift.
- By unassigning a shift — the manager can convert an assigned shift into an open shift (convert to open shift), freeing the employee while keeping the position's need visible.
What you can do with open shifts
- Assign to an employee — pick an employee to fill the open shift. The open shift counter decreases by one, and the employee gets a regular shift.
- Delete — remove the open shift entirely (the need no longer exists).
- Edit — change the time or sub-position of an open shift.
Open shift counters
Each open shift tracks how many employees are still needed via a counter (numberOfEmployees). When an employee is assigned, the counter decreases. When it reaches zero, the open shift is removed. On-hold open shifts have a separate counter (numberOfEmployeesHold).
How Shifts and Open Shifts Fit Into the Lifecycle
| Lifecycle action | Effect on shifts | Effect on open shifts |
|---|---|---|
| Create (Generate) | Algorithm creates shifts for employees. | Algorithm creates open shifts for unfilled slots. |
| Pre-publish / Publish | Shifts become visible to employees. | Open shifts are not directly visible to employees. |
| Recreate | Generated shifts for selected positions are wiped and regenerated; manual shifts preserved. | Open shifts for selected positions are wiped and regenerated. |
| Unpublish | Shifts are removed from published schedule but kept as draft. | No effect on open shifts. |
| Delete | Shifts for selected positions are removed. | Open shifts for selected positions are removed. |
| Delete All Open Shifts | No effect on regular shifts. | All open shifts for the week are removed. |
What Employees See
Visibility depends on the schedule state:
- Pre-publish mode: the shift appears in the assigned employee's schedule, but other employees cannot see it and no notification is sent
- Draft mode: shifts exist but are completely invisible to all employees
- Posted: all employees can see the published shifts; a push notification is sent to employees whose shifts are new or have changed
Auto-Save
Every change the manager makes to shifts or open shifts — such as changing a start or end time, moving a shift to a different employee, or editing an open slot — is automatically saved to the database as a draft. There is no need to manually save: the manager can switch to a different week and come back later without losing any changes.
Auto-save only persists changes as a draft. The schedule must be published manually for employees to see it. Publishing is always an explicit action by the manager.
Exception: manual shifts in pre-publish mode are not auto-saved. They are only persisted when the manager clicks Pre-publish. Navigating away before doing so will discard them.
Quick Reference: What's Available When
| Action | Empty | Pre-publish | Draft | Posted |
|---|---|---|---|---|
| Pre-publish | — | Yes | — | — |
| Publish | — | — | Yes | If changes |
| Create | Yes | Yes | Remaining | Remaining |
| Recreate | — | — | Unpublished | Unpublished |
| Unpublish | — | — | — | Yes |
| Delete | — | Yes | Unpublished | Unpublished |
Conditional values indicate the action is available with restrictions — see the relevant action section for details.