Try it interactively: the Swap Check tool →
Platform · Shift swaps
Two people agree to swap a shift. The engine re-checks everything the roster was built to respect.
A swap changes a published roster, so it has to pass the same qualification, rest and overtime rules the roster itself was solved against. That is the reason self-service swapping is safe to allow at all without a supervisor manually re-checking each one by hand.
Try it
Every check, reported at once
A swap is a change to a published roster, so it is re-checked against everything the roster was built to respect. Pick a case and watch.
Try a swap
verifiedIt doesn't stop at the first broken rule.
Two controllers propose to trade shifts. SkyRoster runs 24 automated checks against the trade: qualifications, rest, overtime, allowances, team and unit membership. It does not stop at the first one that fails; it reports every broken rule at once. Pick a scenario below, or set the qualifications, shifts and duty pattern yourself and press Check this swap.
Turn on JavaScript to change these controllers, dates and duty patterns. The worked example below already shows every check.
Allowed: all 24 checks passed.
Roster integrity
The two sides of the swap have to be a coherent, exchangeable pair in the first place.
3 passed
- PassBlocks aligned
Both blocks are the same length and cover the same dates.
- PassSame roster
All shifts belong to the same published roster.
- PassShifts must differ
The two sides differ in date, shift type or qualification.
Eligibility and qualifications
Both employees must actually be allowed to work the shift they are about to receive.
2 passed · 2 not applicable
- Not applicableNo suspension overlap
This demo has no suspension flag, assume neither controller is currently suspended.
- Not applicableRest day is protected
Neither shift here is a protected rest day, so there is nothing for this check to flag.
- PassOperational shift types only
Both shifts use operational shift types.
- PassQualifications held
Both employees hold the qualification required by the shift they receive.
Organisation and team
A swap cannot move work across an organisational boundary the employee does not belong to.
1 passed · 2 not applicable
- Not applicableSame employee category
Both fictional controllers are modelled as the same employee category.
- Not applicableTeam membership
Neither shift here is bound to a specific team.
- PassUnit membership
Both employees hold membership in the unit of every shift they receive.
Fatigue and rest
The resulting schedule still has to be safe to work.
2 passed
- PassConsecutive working days
Neither employee exceeds the maximum consecutive working days.
- PassMinimum rest time
Minimum rest time still holds on both sides of each received block.
Absence and conflicting requests
The shifts must not already be spoken for by leave, duty, or another pending request.
4 passed
- PassNo competing swap
None of the shifts is already part of another pending swap.
- PassNo pending work request
No shift in the swap carries a pending work request.
- PassNo leave or duty clash
No approved leave or duty overlaps the received shifts.
- PassNo pending extension
No shift in the swap carries a pending shift extension.
Pay, allowance and limits
A swap must not quietly move money, banked hours, or monthly quotas between two people.
1 passed · 7 not applicable
- Not applicableWork-request allowance already spent
Neither shift came from a Work Request in this demo, so there is no allowance to check.
- Not applicableGranted allowance already spent
Neither shift has consumed allowance in this simplified demo.
- Not applicableExtension allowance already spent
Neither shift came from a Shift Extension in this demo, so there is no allowance to check.
- Not applicableInstructor allowance already spent
Neither controller is assigned as an instructor on these shifts in this demo.
- PassOvertime limits
Both employees stay within their overtime limits after the swap.
- Not applicableMonthly extension cap
This is a direct shift-for-shift trade, no Shift Extension is being transferred.
- Not applicableMonthly work-request cap
This is a direct shift swap, not a Work Request, in this demo.
- Not applicableBank of Working Hours covers it
Neither shift was obtained by spending Bank of Working Hours in this demo.
Both controllers here are fictional, and so are their shifts and duty patterns. No customer data appears anywhere on this site.
The lifecycle
Five stages, from picking a shift to the roster actually changing
1 · Selection
From the Team Scheduler, an employee enables swap mode, taps their own shift, then a colleague's. A team lead browsing the wider crew grid can select across two different people's rows and propose the swap on their behalf.
2 · Eligibility check
Every rule below runs against the exact shifts selected, live, before the request can be submitted.
3 · Creation
The request goes Pending and both shifts are locked in the roster, nobody else can touch them while the swap is under review.
4 · Approval
Multi-step, configured per the unit that owns the roster the swapped shifts belong to, not either employee's home unit.configured
5 · Exchange
On approval, the two shifts are physically exchanged in the published roster. Any work request or shift extension tied to either shift transfers to its new owner, along with its Bank of Working Hours and overtime accounting.
Reversible up to approval
A Pending or Rejected swap can be reverted, which unwinds the lock and returns both shifts to their previous state.
Every rule, at once
24 automated checks, and a refusal always names which one failed
The engine does not stop at the first broken rule. It accumulates every violation and reports all of them together, so a refused swap can show a qualification mismatch and a rest-time violation in the same answer, instead of forcing someone to fix one problem, try again, and discover the next.verified
| Concern | What is checked |
|---|---|
| Structural & roster integrity | Both blocks belong to the same roster; not identical shifts; blocks are aligned in size and start/end dates; neither shift is already in another pending swap; no pending shift extension on either side (a temporary limitation, not yet supported); neither side is an office/admin shift, only operational shifts are swappable. |
| Qualification, team & competency | Each receiving employee is qualified for the shift they would receive, is a member of that shift's team, and holds membership for the unit the shift belongs to. |
| Rest & safety | Each receiver's minimum rest time against the shifts adjacent to the swap date is respected. |
| Conflicts with other approved activity | No active suspension overlaps the received shift; no conflict with already-approved leave or duty; no pending work request attached; a day-off shift explicitly flagged non-replaceable cannot be swapped. |
| Bank of Working Hours, overtime & allowance protection | A shift originally obtained via Bank of Working Hours can only move if the receiver's remaining balance covers the net change; a shift, work request, shift extension or instructor allowance already consumed cannot be swapped away; net overtime change stays within the employee's monthly cap; both employees must share the same controller/non-controller classification, checked before any of the above so the accounting can assume matching regimes. |
| Monthly volume caps | Work/off request count and shift extension count both stay within their configured monthly limits per employee. |
A further structural check, run separately at request creation and not counted among the 23, requires both blocks to be consecutive calendar days, start on the same day, and be equal length, together with the 23, 24 checks whenever a swap is created.
Against races
The same rules run three times, because the roster can change between clicks
Suggestion
While browsing candidates in the roster, the engine pre-filters who could realistically be offered as a swap partner.
Pre-create
A final check the instant the request is submitted, in case the roster changed between browsing and submitting.
Accept-time
Re-validated again when an approver clicks Accept, in case anything changed during approval. A swap that looked valid at suggestion time can still fail here.
Hours follow the shift
Bank of Working Hours and overtime transfer with a swap, not with a person
If a swapped-away shift was itself obtained through a Work Request, its Bank of Working Hours or overtime accounting does not stay with the person who is leaving it, it moves to whoever receives it.
Re-validated on receipt
The engine checks that the receiving employee has enough remaining balance, or enough overtime headroom, to accept the transfer before it lets the swap go through.
Net across the whole swap
For a multi-shift swap, the change is computed net across every shift in the exchange, a swap that balances overall can pass even if one leg of it looks unbalanced on its own.
Air traffic controllers carry distinct Bank of Working Hours and overtime rules from other 24/7 staff, a controller picking up a Work Request on what would otherwise be a normal working day is not charged for it at all, avoiding double-counting. Two employees of different classification can never be paired in the same swap, specifically so this accounting can assume both sides play by the same rules.
Your swap rules are not these swap rules.
Every organisation restricts who may swap with whom differently. Bring yours to a working session and we will show you which of these 24 checks map onto them and which would need a new rule.
Who else will ask, and what they will want
- HR and payrollWhether a swap's overtime transfer reaches the payroll export correctly at month end.
- Controllers and unionsWhether a refused swap always tells the person exactly which rule stopped it.
- Roster officerWhether a swap that changes a published roster still respects the rules the month was solved against.