Your first certification
In this tutorial you build a complete renewal cycle for a Fire Safety Awareness certificate: the rules it follows, the course that earns it, and the warning that goes out before it expires.
Everything happens under Site administration → Plugins → Local plugins → LOOP.
What you need
A Moodle course to attach. This tutorial uses one called Fire Safety Awareness — Edition 1, with completion tracking switched on. Any course will do; substitute its name as you go.
1. Open the form
Go to Manage certifications and choose Add certification. An empty form appears.

2. Describe the renewal cycle
Three values define the cycle, and a fourth says who hears about it:
| Field | Value | What it means |
|---|---|---|
| Certification name | Fire Safety Awareness | The name shown everywhere in LOOP |
| Certification validity period (days) | 365 | A certificate stays valid one year after completion |
| Certification completion timeframe (days) | 30 | Somebody enrolled has 30 days to finish, or they are marked Overdue |
| Certification expiration warning (days) | 45 | A person's status turns to Expiring 45 days before the certificate runs out |
| Manager emails | safety.manager@example.com | Where notices addressed to the manager go, and where the monthly report goes. One address per line. |

Leave Hard deadline switched off. It is for programmes where everybody must have finished the course by a fixed calendar date; see Certification settings.
Below the main fields there is a Notifications section. Leave it as it is for now — all five notices are switched on when a certification is created, and you will set the warning days in step 4.
Save. The new certification appears in the list.

3. Attach the course
A certification with no course cannot certify anybody. Open the Editions tab: it is empty, and says so.

Choose Add edition, pick your course, and give it order 10.

Why 10 and not 1
1 works just as well. An order is only ever compared with the other editions of the same certification, so the numbers do not have to be consecutive or start anywhere in particular.
Counting in tens leaves room to slot a course between two existing ones later without renumbering them. That matters most if you go on to link courses by their ID number, where the order is part of the course's ID number and renumbering means editing courses.
Save. The edition is listed with Manual as its chaining method, because you picked the course by hand. Two other methods let LOOP find courses on its own — see Link courses as editions.

4. Set when the warning goes out
Go back to the Details tab and scroll to Notifications. In Expiry warnings (days before) enter:
45That queues one warning 45 days before each certificate expires. Entering 60, 30, 7 instead would send three warnings about the same expiry.
Two numbers on this form both mention 45 days, and they do different jobs:
- Certification expiration warning (days) decides when the person's status turns to Expiring on the dashboards.
- Expiry warnings (days before) decides when the email is queued.
Keeping them equal means the email arrives on the day the dashboard changes colour. They are separate settings, so the form warns you when the first warning day does not match the status threshold — either can be the one you meant.
The wording of the warning is set once for the whole site, not per certification. Open LOOP → All messages to read or edit it; see Set up notifications.
5. See where people stand
Open the User status tab. It is empty, and correctly so: nobody is enrolled on the course yet.

From here LOOP works on its own. When somebody is enrolled on the course, a row appears as Pending. When they complete it, the row turns Valid with an expiry date 365 days out. Forty-five days before that date, the warning is queued.
Attach the course before enrolling anybody
LOOP starts tracking a person when Moodle records an enrolment on a course that is already an edition of a certification. If you enrol people first and attach the course afterwards, those people get no status row and no enrolment notice, and nothing revisits them later.
On a site where people are already enrolled, Recalculate reads Moodle's existing enrolments and completions and brings everybody in.
Nothing moves without cron
Expiring and Overdue statuses are worked out by scheduled tasks, and queued email is sent by another one. On a site where Moodle cron does not run, the figures freeze — every page says when they were last worked out. See Scheduled tasks.
Where to go next
- Reading the compliance picture — the same system once it has real people in it.
- Link courses as editions — so next year's course is picked up automatically instead of added by hand.