← StafFixHR home

Shifts & rostering

Build weekly rosters, publish to employees, and approve swap requests.

What's a roster?

A roster period is a calendar window (typically a week) where you assign one shift to each employee on each day. Each cell can be a defined shift code (Morning, Evening, Night, …) or marked off (weekly off, leave). Once you're happy with the grid, you publish — employees then see their shifts on /me/shifts and can request swaps with colleagues.

Setting up shift definitions

Before you can roster, define the shifts your business uses. Go to Admin → Attendance ops and create one Shift per unique pattern (e.g. MORN 09:00–17:00, EVE 14:00–22:00, NIGHT 22:00–06:00). Optionally set a hex colour on each shift — the roster grid uses it to make patterns easier to spot.

Creating a roster

  1. Go to Admin → Shift rosters.
  2. Click New roster. The default window is next Monday → Sunday. Adjust dates as needed (max 31 days).
  3. On the grid, each row is an employee, each column a day. Use the dropdown in each cell to pick a shift or "off".
  4. Hit Save after each batch of changes. The button shows how many cells will be persisted.
  5. When the whole grid looks right, hit Publish. Every rostered employee gets an inbox notification.

Statuses

  • DRAFT — editable, invisible to employees. Default for new rosters.
  • PUBLISHED — visible on /me/shifts. Cells locked. Swap requests allowed.
  • ARCHIVED — read-only history. Use once the window is past.

Swap requests

On a published roster, an employee can request to swap their shift with a colleague's shift on a specific date. The flow is two-step approval:

  1. Initiator picks their cell, names the counterparty + their date, and submits.
  2. Counterparty sees the request on their /me/shifts page and accepts or declines.
  3. If accepted, the request moves to the HR queue. HR can approve (atomically swaps the two cells in the roster) or decline.

HR sees the queue at Admin → Shift rosters → Swap queue.

What gets atomically swapped on approval

Only the shiftId on the two RosterAssignment rows. Employees and dates stay put. This means downstream payroll/attendance computation against those dates uses the new shifts immediately.

Tips

  • For rotating-shift teams, build one DRAFT roster as a template, save it, then duplicate later by copying cells (a future feature; today re-create).
  • Use shift hex colours liberally — patterns jump out when night-shift cells are all the same dark colour.
  • If you publish too early and need to fix a mistake, un-publish takes you back to DRAFT.
  • Archived rosters remain queryable for audit / payroll lookups.

Found a bug or missing feature? Ping us at hr@staffixhr.com.