Creating an assignment is trivial. Dating it is not, and getting the dates wrong is how a training system becomes a permanent list of overdue items that everybody learns to ignore within a month.
Key takeaways
Three causes: somebody joined, a role changed, or a completion expired.
The grace period belongs to the requirement, not to a global setting.
A new starter’s assignments are staggered, because nine due on day one is nine ignored.
An expiry assignment is created before the expiry, not after it.
An assignment is never created for training with a valid completion, which sounds obvious and is where duplicates come from.
Three causes
Fig 1. The three ways an assignment comes into existence. The expiry path is the one that makes the system worth keeping after the first year, when everybody has done everything once.
Database
App integration
Machine learning
Management
Front-end & mobile
Grace periods belong to the requirement
Requirement
Grace
Why
Site induction
Day one
Nobody works on site without it
Fire safety briefing
3 days
Delivered in house, no scheduling constraint
Manual handling
14 days
Delivered in house but needs a group
Abrasive wheels
30 days
External course, runs monthly
First aid at work
90 days
External course, sparse dates
Annual refresher
30 days before expiry
Assigned early so it can be booked
A single global grace period — “all training due within 30 days” — is wrong in both directions simultaneously. It lets somebody work on site for a month without an induction, and it marks a first-aid course overdue when the next available date is six weeks away. Both errors teach people to disregard the due date.
Staggering a new starter
A new warehouse operative with nine requirements and no completions would, naively, receive nine assignments on their first morning. Seven of them will be overdue by Friday, the list will be red, and the new starter’s first impression of the system is that it is decorative.
Fig 2. How a new starter’s requirements are spread out. The ordering comes from each requirement’s own grace period, so nothing needs a separate onboarding schedule.
Machine learning
Security & identity
Analytics
Front-end & mobile
The staggering is not a separate feature; it falls out of the grace periods already being per requirement. That is worth noticing, because it means there is no onboarding schedule to maintain separately from the requirements themselves.
The duplicate that catches everybody
The one implementation bug worth naming: creating an assignment for a requirement that already has a valid completion. It happens when the completion check uses the completion date rather than the validity end, or when a role change recomputes the whole list rather than the difference. The symptom is somebody being asked to redo training they did last month, and it destroys confidence in the system faster than anything else it could do.