Skip to content

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.

The LOOP scheduled tasks

TaskDefault scheduleWhat it does
Sync certification editions00:00 dailyRebuilds the editions linked by course ID number or custom field from the current courses
Rebuild derived certification data00:30 dailyWorks 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 expiries01:00 dailyQueues an expiry warning for each day in each certification's days before expiry list
Check overdue certifications02:00 dailyQueues an overdue reminder for each day in each certification's days after due list
Check expired certifications03:00 dailyQueues 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 reports05:00 on the 1stSends the monthly summary to each certification's manager addresses
Purge anonymised audit rows past retention05:30 dailyDeletes anonymised certification history rows past the retention window
Process LOOP mail queueevery minuteSends what is due in the queue and applies the retry policy
Validate LOOP licensehourlyRe-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.

TaskQueued when
Sync the editions of one certificationA course that is an edition of a certification is deleted — one task per affected certification
Sync the editions of one courseA 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.