Ask AwraIQ about features, pricing, onboarding, login, integrations, security, demos, mobile apps, automation, reports, or support.
Roster the week that is different. Let the rest look after itself.
Most of your people work the same shift most weeks. AWRA OpsHub takes that seriously: set a default shift once per person, then use the weekly grid only for the days that break the pattern. Empty cell means "as usual", so a roster is a list of exceptions rather than a wall of repetition.
Default shift + per-date override · Copy last week · Department filter · Grace periods · Expected hours derived
| Employee | Mon 24 | Tue 25 | Wed 26 | Thu 27 | Fri 28 | Sat 29 | Sun 30 |
|---|---|---|---|---|---|---|---|
| A. Otieno | Day | Day | Day | Night | Night | Off | Off |
| J. Mwangi | Night | Night | Off | Day | Day | Day | Off |
| L. Wanjiru | Early | Early | Early | Early | Day | Off | Off |
| P. Kimani | Day | Day | Day | Day | Day | Day | Off |
Two layers, and the top one is usually almost empty.
This is the whole design, and it is worth thirty seconds because everything else follows from it.
Each employee gets a single standing shift, set on one screen that lists your whole active workforce with a dropdown beside each name. Save the lot in one action.
The screen tells you who is missing one. A count of active employees with no default shift sits at the top — because an employee with no shift has no expected hours, and that is the quiet gap that makes overtime detection and timesheet totals wrong later.
The weekly grid holds one shift per employee per date, and only where that date differs. An empty cell is not "no shift" — it means fall back to the default.
Because the grid stores exceptions, the timesheet can also tell you something useful for free: an employee with any overrides in a month is shown as Rotating rather than being labelled with a single shift name that would be a lie for half their days.
The reason this matters is what it does to the amount of work. A roster that requires every cell to be filled is a roster that gets filled once, enthusiastically, and then stops being maintained around week five — after which it is worse than no roster, because people trust it. A roster that only wants the exceptions stays accurate, because the effort of keeping it accurate is proportional to how much actually changed.
Five fields, and one number derived from them.
Shift definitions are deliberately small. Everything downstream — lateness, expected hours, overtime detection, the availability board — reads these five fields, so they carry a lot of weight for their size.
start_time · end_time The span. An end time earlier than the start is a valid night shift, not an error — see below.
0 – 480 Unpaid, subtracted from the span. Up to eight hours, for the genuinely long shifts.
0 – 240 · default 5 How late is still on time. Past it, a clock-in is marked late automatically rather than by somebody's judgement.
is_active Retired shifts stop appearing in pickers without breaking the history that references them.
A night shift is declared, not deduced.
This is a small design decision that decides whether your night workers get paid correctly, and almost every system gets it wrong in the same way.
Somebody clocks in at 22:00 and out at 06:00. A system now has to decide what happened, and it has two pieces of evidence: the two times, and the shift the roster says that person was working.
"The end is before the start, so it must be a night shift — add a day." Reasonable, and wrong, because an inference cannot tell a night shift from a transposed pair of times.
Somebody typing 06:00 and 22:00 the wrong way round at the end of a long night silently becomes sixteen hours of recorded work, on a record payroll will later read.
AWRA asks the roster instead: which shift governed this person on this date, and is that shift defined as ending before it begins?
A shift definition is a declaration somebody made once and reviewed. That is a completely different quality of evidence from two times typed at 6am, and it is the one the platform trusts.
The correction screen is where this pays off most. Attendance regularisation exists precisely because clock times arrive wrong, so it is the single place a transposed pair is most likely to turn up. Inferring the crossing there would turn the screen that exists to fix bad records into one that legitimises them. Instead, an approved correction takes its midnight crossing from the roster too — the same source, in the flow most likely to be carrying a typo.
The alternative failure is worth naming because it is the one this replaced. Where the crossing is not handled at all, a 22:00–06:00 day stores perfectly — both clock times present, status recorded — and every hours figure derived from it comes back empty. Not zero, which somebody would query, but nothing, which sums to nothing and leaves no gap behind it. A monthly total short by every night worked, with nothing anywhere reporting it.
Copy last week, filter to one team, save just this week.
Three things that sound mundane and are the difference between a roster somebody maintains and a roster somebody abandons.
One action rolls the previous week forward, weekday onto weekday, so a stable four-week pattern is three clicks a month rather than a re-entry exercise.
It respects the department filter you have applied, so you can roll one team forward without touching another. And it tells you how many shifts it copied — or says plainly that the source week was empty, rather than reporting a cheerful success over nothing.
A grid of four hundred people is not a planning tool. Narrowing to one department turns the roster into something a departmental supervisor can own for their own team.
The filter carries through to the copy action and back onto the URL, so a supervisor's bookmark lands on their own team's week rather than the whole organisation's.
A roster save accepts only dates inside the week actually on screen, and only shifts that belong to your own workspace.
That sounds like paranoia until you consider what a roster is: the thing that decides expected hours, and therefore overtime, and therefore pay. A screen that writes pay-affecting data gets to be careful about what it accepts.
The availability board answers the question rosters cannot.
A roster tells you who was scheduled. It does not tell you who is on leave, or that Thursday is a public holiday. The availability board resolves all three into one weekly view.
Every person resolves to exactly one of four states per day, from three sources: their approved leave, your holiday calendar, and the shift the roster gave them for that specific date. It is roster-aware, so somebody whose Thursday override says Off shows as off on Thursday rather than as working because their default shift said so.
It creates no new data at all — which is exactly why it can be trusted. There is no availability record for anyone to forget to update; the board is a reading of leave, holidays and the roster you already keep. And it carries per-day totals across the workforce shown, so "can we cover Friday" is a number rather than a headcount exercise.
The same resolution is used when assigning operational work, so the answer to "is this person available on Thursday" is the same answer everywhere in the platform rather than two systems disagreeing politely.
Public holidays are your own list, not a guessed calendar. Each holiday carries a name, a date and a recurring flag for the ones that fall on the same date every year — so the fixed ones are entered once and the moveable ones are entered when they are announced, which is the only honest way to handle a calendar that a government changes.
What rostering does today — and what we can add to yours.
Rosters decide pay, so here is precisely what this does, and the work we would take on for a more demanding operation.
What AWRA OpsHub does today
- A default shift per employee plus per-date overrides on a weekly grid, so a roster records exceptions rather than repetition
- A count of active employees with no default shift, surfaced where you assign them, because an employee without one has no expected hours
- Shift definitions with start and end time, unpaid break minutes up to eight hours, and a grace period up to four hours before a clock-in counts as late
- Expected paid hours derived from the span minus the break, so changing a shift's times can never leave a stale number behind it
- Night shifts handled by declaration — the midnight crossing is read from the shift on the roster, never inferred from a pair of clock times
- The same declared crossing used by the attendance correction flow, which is where a transposed pair of times is most likely to arrive
- Copy last week onto this week, weekday to weekday, respecting the department filter and reporting how many shifts it moved
- A department filter that carries through the grid, the copy action and the URL, so a supervisor can own their own team's week
- Roster saves that accept only dates inside the week on screen and only shifts belonging to your workspace
- A read-only weekly availability board resolving every person to working, on leave, public holiday or off — roster-aware, with per-day workforce totals
- Availability resolved from one shared source, so operational work assignment and HR agree about who is free
- Your own public holiday calendar, with a recurring flag for the fixed dates
- Retired shifts kept out of pickers without breaking the roster history that references them
- Automatic lateness marking against the grace period rather than by somebody's judgement
More we can add to your workspace
- Generated rotation patterns — four-on-four-off, a rolling three-shift cycle — projected forward across months from a pattern you define once
- Coverage rules with minimum staffing per shift and per skill, warning while you roster rather than after
- Shift swap requests between employees, with a supervisor approval step and an audit trail
- A conflict warning when a roster cell falls on approved leave or a public holiday, shown in the grid as you place it
- An employee-facing roster view in the app and browser, with a notification when a published week changes
- Multi-week roster copy — rolling a pattern forward four or twelve weeks in one action
- Split shifts and multiple shifts per day, for operations that break the day into two attendances
- Shift differentials — a premium rate carried by the night or weekend shift itself and applied in payroll
- Skill and certification matching, so only qualified people can be placed on a shift that requires a certificate
- Drag-and-drop rostering with keyboard fill, bulk paint across a row, and an undo
- A roster cost preview, showing the wage cost of a week as you build it
- Time-and-attendance rounding rules — to the nearest five or fifteen minutes — configured per shift
- Roster publication with a locked, versioned week and a record of who published it
Where we point you to a specialist
- Working-time limits, rest-period rules and night-work protections are law in most places and vary by jurisdiction. We will build the rule your labour counsel specifies; we will not ship a default that implies we have assessed your compliance.
- Whether a particular pattern is lawful for a particular employee is an employment-law question, so it stays with the people accountable for it. Tell us the constraint and we will enforce it in the grid.
- We will not decide your overtime multiples or your night premium for you. Overtime pay ships switched off, its default multiples are a starting point rather than any country’s law, and the figures you enter come from your contracts and your local law.
- A roster is a management decision. We will warn, block and record — we will not build something that decides who works nights on your behalf.
Rotation patterns and coverage rules are what larger operations ask for first, and both build straight onto the two-layer model already here — a pattern is simply a generator for the override layer. Tell us your patterns and your minimum staffing and we will come back with a written spec, a timeline and a price.
Worth knowing when you set up: the grace period defaults to five minutes on a new shift, and expected hours is derived rather than entered — so a shift with no break configured expects its whole span, which is usually what you want and occasionally is not.
Downstream of a shift.
Shift scheduling FAQ.
Do I have to fill in every cell of the roster?
How do night shifts get counted?
Can I set up a four-on-four-off rotation?
Will it stop me rostering somebody who is on leave?
Can employees see their own roster?
What is the grace period for?
What happens if I change a shift's times after people have worked it?
Who can edit the roster?
Roster the exceptions. Get the nights right.
A default shift each, a grid for the days that differ, copy-last-week for the ones that do not — and a night shift that arrives at payroll as eight hours rather than as nothing at all.