Search the documentation

Find a page by title or section.

Drivers and shifts

Licences and compliance

Hours-of-service limits, the compliance log, the driver compliance score, and keeping licences and medicals in date.

Updated

Two different things sit under the word compliance in Cooriroo. One is hours of service — rules about how long a driver may work, computed from their shifts. The other is documents — licences, medicals and background checks that expire on a date. The first is automatic and continuous; the second is a set of dates you keep current.

Who can do this

Role
Administrators
Permission
shifts:readshifts:writedrivers:write

The rules are tenant-wide and set under Customize. A driver can see their own compliance score in the driver portal, but not the log and not another driver’s score.

The rules and where they live

All of it is one screen: Customize → Compliance & Shifts. The settings apply to the whole tenant, not per driver and not per depot, and every one has a default — a tenant that never opens the screen is still governed by rules rather than by none.

SettingWhat it governsDefault
Daily hours limitWorking hours inside one day11 hours
Weekly hours limitWorking hours since the reset day60 hours
Mandatory rest hoursGap between one shift ending and the next starting10 hours
Max shift durationLength of any single shift, breaks includedSet on the screen
Consecutive days limitDays worked without a day off6 days
Overtime thresholdWorking hours past which time counts as overtime8 hours
Minimum break lengthHow long a break must be to be deducted from hours15 minutes
Alert thresholdShare of a limit that raises a near-miss instead80 per cent
Weekly reset dayDay the weekly counter restartsMonday
No-show grace periodLateness allowed before a shift is marked missed15 minutes
The hours-of-service settings, all under Customize → Compliance & Shifts.

Where the rules are checked

The limits are evaluated at two distinct moments, and they behave differently.

Before the fact, when you assign a driver to a trip. The conflict check asks whether this driver, taking this trip, would breach the daily limit, the weekly limit, the rest requirement, the consecutive-days limit or the maximum shift duration. Anything it finds appears alongside the other scheduling conflicts, with the driver’s current figure and the limit it would cross. A check that cannot run is reported too, not treated as a clean result.

After the fact, when a shift is clocked out. The finished shift is measured against the daily limit, the weekly total, the rest gap since the previous shift and the maximum duration, and each breach becomes an entry in the compliance log. Coming close counts too: crossing your alert threshold — 80 per cent of a limit by default — records a near-miss, so a team creeping towards the ceiling is visible before anyone breaks it.

The compliance log

The log is the second tab on the Shifts screen. Each row is one event about one driver, with the time it was recorded, the shift it came from where there was one, and the numbers behind it — the hours worked, the limit crossed, the rest taken. Filter it by event type and date range; the driver record carries the same log narrowed to that one person.

Nine event types are written, at two severities:

  • Violationsno_show, daily_exceeded, weekly_exceeded, rest_violated, max_shift_exceeded.
  • Near misses, informational — daily_near_miss, weekly_near_miss, rest_near_miss, max_shift_near_miss.

The event filter matches the stored type exactly, so a near-miss is found under the limit it belongs to rather than under one combined heading. Consecutive days is checked before a trip assignment but never written to the log.

Overriding an event

An event can be overridden once, and an override needs a reason. The row then carries who accepted it and why, which is the point: the reason a breach was allowed to stand belongs next to the breach rather than in somebody’s inbox. An event that has already been overridden cannot be overridden again.

The compliance score

Each driver carries a single percentage, shown on the Compliance tab of their record and on their own shift page in the driver portal. Start at 100, subtract the share of their completed shifts that produced a violation, floor at zero: four violations across forty completed shifts scores 90. Three consequences follow:

  • It is all-time, not a rolling window. A violation from a year ago still counts, and the score recovers only as clean shifts accumulate.
  • A driver with no completed shifts scores 100. A perfect score on a new starter means no data, not a good record.
  • Only violations count. Near misses never move the score, which is what makes them safe to leave switched on at a sensitive threshold.

Licences and other expiring documents

These live on the driver record, not under Customize: licence number, class and expiry; medical exam expiry; background check date and its status of cleared, pending or failed; and a free list of training certifications. All are optional, and a driver with no licence expiry recorded is treated as valid rather than expired — a blank field hides them from every expiry report rather than flagging them.

Once a licence expiry is set, it shows up in three places:

  • The drivers list — the date on each row, marked as expired or expiring soon.
  • The driver’s Compliance tab — the date, a valid, expiring or expired badge, the days remaining, and the medical exam expiry beside it.
  • The dashboard’s compliance alerts — a count of licences expiring within 30 days, and a separate count of those already past it.

Thirty days is the window the product treats as expiring soon throughout, and it is fixed rather than configurable.

When the numbers look wrong

A driver’s score is 100 but the log shows violations against them
Cause

The score divides violations by completed shifts. Missed shifts are not completed shifts, so a driver whose only events are no-shows has a zero denominator.

Read the log rather than the score for a driver with few or no completed shifts. The score becomes meaningful once they have a body of finished work behind them.

No hours-of-service warnings appear when assigning an obviously overloaded driver
Cause

Enforcement is switched off, which skips the check entirely rather than merely downgrading it.

Set enforcement to Warn Only or Block under Customize → Compliance & Shifts. Neither prevents the assignment — both report it.

Overtime is logged on shifts that ran exactly as rostered
Cause

Overtime is measured against the tenant-wide overtime threshold, not against each shift’s own planned length.

Raise the threshold to the point at which overtime is genuinely paid. Clock in, clock out, no-shows covers how the figure is computed.

A driver with no licence expiry recorded never appears in the expiry reports
Cause

A blank expiry date is treated as valid, not as missing, so the driver is excluded from both the expiring and the expired counts.

Scan the drivers list for rows with no expiry date and fill them in. There is no separate alert for missing documents.

Terminology

Your organisation can rename these. If your screens say something else, this is what they mean here.

Driver
The person the rules and documents apply to. Some tenants call these operators, couriers or crew.Rename it in Customize → Terminology
Shift
The block of working time every hours-of-service figure is computed from. Some tenants call these duties or tours.Rename it in Customize → Terminology