Scheduled tasks
Nine tasks, all listed under Site administration → Server → Scheduled tasks and all editable there like any Moodle task. The default schedule spreads the nightly work so that no two tasks work on the same rows at once.

| Task | Default schedule | What it does |
|---|---|---|
| Sync certification editions | 00:00 daily | Rebuilds the editions linked by course ID number or custom field from the current courses |
| Rebuild derived certification data | 00:30 daily | Works out every status and every date again from the configuration in force — the validity window of each certificate included — and issues a certificate for every completion that does not have one yet |
| Check certification expiries | 01:00 daily | Queues an expiry warning for each day in each certification's days before expiry list |
| Check overdue certifications | 02:00 daily | Queues an overdue reminder for each day in each certification's days after due list |
| Check expired certifications | 03:00 daily | Queues an expiry notice for each day in each certification's days after expiry list, and skips anybody covered by another certificate today |
| Send monthly manager compliance reports | 05:00 on the 1st | Sends the monthly summary to each certification's manager addresses |
| Purge anonymised audit rows past retention | 05:30 daily | Deletes anonymised certification history rows past the retention window |
| Process LOOP mail queue | every minute | Sends what is due in the queue and applies the retry policy |
| Validate LOOP license | hourly | Re-validates the licence. The licensing server can ask for a slower cadence, which caps how often it really calls out |
The rebuild runs before the three checks, because those select who to notify by date and the dates they read have to be the ones today's facts imply.
The rebuild can move an expiry date
A validity window is the completion date plus the certification's validity period, so a period that has been corrected reaches the certificates already issued at the next rebuild, and the expiry dates of the people holding them move with it. The count is written to the cron output. To see it before the night does it, run Recalculate and read the preview.
Statuses and notices are separate jobs
Only the rebuild writes a status. The three checks read dates and queue mail; they change nobody's state. So switching every notice off stops no status from moving, and a day list set to the wrong number sends on a day nothing changed. See Compliance statuses.
Tasks queued as needed
Two tasks are not on a schedule. They are queued when something happens that would otherwise mean recomputing the whole site inside a page request.
| Task | Queued when |
|---|---|
| Sync the editions of one certification | A course that is an edition of a certification is deleted — one task per affected certification |
| Sync the editions of one course | A course is created or updated, to pick it up as an edition where the pattern matches |
What stops when cron stops
Nothing errors, and nothing is lost. Statuses stop moving: nobody becomes Expiring or Overdue, no certificate is issued for a completion, no reminder is queued, no queued email is sent, and new courses are not picked up as editions.
Every LOOP page carrying a worked-out figure says when it was last worked out, and warns when that was a while ago. One run brings everything up to date, however long it has been.
One case does not simply catch up: an expiry warning still in the queue when the expiry arrives is discarded when the queue finally drains, rather than telling somebody to prepare for something that has already happened. Those people are still reached by the expiry notice, if the certification sends it.
To bring a status up to date immediately, run the relevant task by hand — see Command line.