Tracking Statutory Deadlines
An obligation is anything with a deadline: a statutory response window, a contractual milestone, an undertaking, a court direction, a review date, a licence renewal.
Where to find it
Architect Panel → Automation:
- Obligations — the live obligations and their state
- Obligation Types — the kinds you track, and their defaults
- Schedule Templates — how a due date is derived rather than typed
- Schedule Milestones — the checkpoints within a template
- Escalation Steps — what happens, to whom, and when
Architect Panel → Data:
- Business Hours Calendars — the working-hours calendar deadlines are counted against
One module, because it is one measurement
An SLA target, a statutory deadline, an undertaking, a court direction, a project milestone and "how long did this sit in triage" are all the same thing: elapsed working time between two events on one record, measured over one calendar.
Split into separate features, each would carry its own copy of the working-hours arithmetic and the copies would drift — which is how an organisation ends up with two reports that disagree about whether the same case was late. One definition of overdue, one walk of the calendar, one report.
Why not just a date field
A date column tells you when something is due. It does not know about weekends or bank holidays, it does not escalate, it does not distinguish a deadline met from one missed, and reporting on it means somebody writing a query and remembering to run it. An obligation carries the deadline plus what should happen around it.
Working hours are not optional
Statutory windows are almost always working days. A twenty-working-day deadline calculated as twenty calendar days is wrong by about a week, and wrong in the direction that breaches.
Configure a business hours calendar before you rely on derived dates. Two behaviours are worth knowing:
- Calendar 0 means plain elapsed time — a 24/7 wall clock. That is the right choice for something genuinely continuous, and it is what an installation that has not configured business hours gets.
- A calendar that exists but has no working hours is treated as a configuration error, not as zero-length days. The obligation opens with no due date and the problem is logged, rather than opening with a deadline that has already passed. Wrong-but-obvious beats wrong-but-invisible.
Schedule templates
Rather than typing a due date, derive it. A template says "a complaint response is due twenty working days from receipt", and every obligation created from it gets the right date because the rule is recorded once rather than remembered each time. When legislation changes the window, you change the template.
Schedule Milestones add checkpoints within a template — acknowledge within three days, first response within ten, final response within twenty — each tracked in its own right.
Holds move the due date
When a clock is paused — you are waiting on the complainant, the court, a third party — the pause moves the due date rather than being subtracted later at comparison time.
That is a deliberate design decision with a practical benefit: everyone downstream sees one number that is already correct. A list sorted by due date, a reminder, an escalation and a person looking at a screen all agree, instead of each having to remember to subtract the paused time. The original due date is kept separately, so attainment reporting can still say "we agreed five days and took nine, of which three were on hold".
Escalation
Escalation is the point of the whole feature. A deadline that notifies somebody on the day it breaches has reported a failure. One that escalates at 75% elapsed has given you time to prevent it.
Configure escalation steps where somebody can still act — and escalate to a person who can do something about it. Escalating to the caseworker who is already overloaded achieves nothing; escalating to their team leader might.
The sweep
The Obligations Sweep task re-derives dates, fires escalations and marks breaches. It ships disabled and should run every few minutes — an escalation that arrives hours late is not an escalation.
Worked example — a council FOI team
An FOI request creates an obligation from the "FOI standard" template: twenty working days from receipt, over the council's calendar including bank holidays. Milestones at day 3 (acknowledged) and day 15 (draft response). If a clarification is requested the clock is held, and the due date moves. At 80% elapsed the case escalates to the information governance lead. The quarterly return showing responses within statutory timescales is generated from these records rather than assembled from a spreadsheet.
Recommendations
- Set the calendar up first. Everything else depends on it, including the bank holidays.
- Derive, never type. A typed due date is a date somebody can get wrong.
- Escalate early and to someone with authority. Late escalation is reporting, not prevention.
- Use holds honestly. A hold applied to protect a performance figure rather than because you were genuinely waiting is visible in the data, and it will be found.