3 Ways to Run Annual Compliance Training in Moodle
Annual compliance training is one of the most common reasons organisations use Moodle. Fire safety, data protection, anti-harassment, health and safety, information security: these courses have to be completed by every employee, renewed every year, and backed by records an auditor will accept.
Moodle is a strong platform for mandatory training, but it does not include a ready-made “renew every 12 months” feature in its standard version. Instead, L&D teams and Moodle administrators combine core features and a few well-known plugins. This guide explains the three most common ways to run annual compliance training in Moodle, how each one works, where each one falls short, and how to set up renewal reminders so learners do not miss their deadlines.
Table of Contents
Why annual compliance training is tricky in Moodle
A standard Moodle course is designed to be completed once. When a learner finishes it, their completion is recorded and stays there. That works well for a one-time induction course, but compliance training needs the opposite: completion should expire after a set period, and the learner should be asked to take the course again.
There are three further complications. New employees join throughout the year, so a single company-wide deadline rarely suits everyone. Course content changes when regulations change, so you may need to know which version each person completed. And when an auditor asks for records, you need to show every past cycle, not just the latest one. Any approach to recurring training in Moodle has to handle all of these.
What a compliance setup must do
Before comparing options, be clear about the job. A workable setup does five things:
The right people, including new joiners.
Ideally a personal 12-month clock per person.
Make the course retakeable when validity lapses.
Warn before expiry, chase after it.
Keep evidence of every past cycle for auditors.
Each model below covers some of these well. None covers all five on its own.
The three ways to run annual compliance training in Moodle
In practice, most Moodle sites use one of three models, or a combination of them: creating a new version of the course each year, resetting one permanent course with the Course Recompletion plugin, or relying on certificates with an expiry date. Each is explained below, with a setup checklist you can follow.
| 1. Annual cloning | 2. Recompletion | 3. Certificate expiry | |
|---|---|---|---|
| Idea | New course every year | One course that resets itself | Certificate shows the expiry date |
| Personal clock | Calendar year | Yes | Displayed only |
| Resets training | New course | Automatic | Needs Way 1 or 2 |
| Plugins | None | Course Recompletion | Custom Certificate |
| Audit clarity | High, one course per year | Good, if archiving is on | Strong verification per certificate |
| Admin effort | High, grows every year | Low after setup | Low |
| Best for | Fixed annual deadlines, few topics | Rolling hires, many topics | Proof layer on top of 1 or 2 |
Annual course versioning
How it works: each year you copy the course (“Fire Safety 2025” becomes “Fire Safety 2026”), enrol everyone in the new copy, and hide the old one. No plugins needed.
Why teams like it
- Auditors ask “show me 2025 completions” and you open one course.
- Easy to explain to anyone.
- Reminders are simple because everyone shares one deadline.
Where it breaks
- Hidden is not locked. Admins can still edit or delete last year’s records. Export completion reports each year.
- One clock for all. Someone who joins in November redoes the course in January.
- Course sprawl. 10 topics over 5 years means 50 courses.
- Quiz copy limit. Course copy does not work for teachers or managers when the course has a quiz, so an admin has to do it.
When to use it
Annual course versioning suits organisations where compliance runs on a fixed calendar, for example “all staff must complete data protection training by 31 March”. It is also a sensible starting point for small teams with only a few mandatory courses, because it needs no extra plugins and is easy to explain to managers and auditors.
Reminders
Easy here. Use Re-engagement with the final quiz as its target, so people who finish stop getting chasers. Or use free Pulse with a date restriction for a “one month left” notice.
Setup checklist
- Create a category per topic, plus an Archive category.
- Use a naming convention such as
FIRESAFETY-2026. - Copy the course without user data (admin, or backup and restore).
- Enrol with Cohort sync so new joiners are added automatically.
- Add a Re-engagement or Pulse reminder.
- At year end, export the completion report, disable (not delete) enrolments, hide and archive the course.
Rolling compliance with Course Recompletion
How it works: one permanent course. The free Course Recompletion plugin resets each learner’s progress a set time after they completed, for example 12 months. Everyone gets their own clock.
It has three modes: Period (personal clock), Schedule (everyone resets on a fixed date, like Way 1 without the extra courses) and On demand (reset individuals manually).
Why it scales
- New joiners get a full 12 months from their own completion date.
- One course per topic, forever.
- Resets quiz, SCORM, assignment, H5P, certificate data and more.
- Adds Report builder sources for past cycles.
What to watch
- Turn on archiving before the first reset. If it is off, past completions are deleted permanently.
- No pre-expiry warning. It sends one email at the moment of reset. You need a reminder plugin.
- Old certificates. Deleting them at reset stops their verification codes working, even if archived.
- Runs once a day via cron. Check the scheduled task time.
When to use it
Course Recompletion is the best fit when training is valid for a fixed period from the date each person completed it, which is common in regulated industries such as healthcare, manufacturing, finance and aviation. It also suits organisations that hire throughout the year or have many compliance topics, because the number of courses never grows.
Reminders: this is where it gets tricky
Re-engagement (free):
- Suppression trap: if its target activity is already complete, no email is sent. In Way 2 the learner stays complete for 12 months, so a pre-expiry reminder must have no target.
- Start the timer from the final activity using an access restriction, with a delay of about 11 months.
- Keep its duration shorter than the reset period. A timer still running at reset can wrongly mark the activity complete in the new cycle.
- Cannot email line managers on standard Moodle, and no Moodle 5.x branch was found. Test on 5.x first.
Pulse Pro (paid, from €229/year):
- Can send reminders a set time after course completion, repeat them, and copy managers.
- Do not enable “suppress by course completion”, or every reminder is blocked.
- Recompletion’s “reset Pulse notifications” does not reset Pro automations, so test a full cycle.
Setup checklist
- Enable completion tracking and confirm cron runs every minute.
- Install the Recompletion branch for your Moodle version.
- Force archiving on at site level.
- Choose Period or Schedule mode and set the period.
- Set quiz and SCORM attempts to delete (with archive). Allow assignment reopening.
- Decide the certificate policy and write it down.
- Add the reminder (Re-engagement or Pulse Pro).
- Build one report combining current and archived completions.
- On staging, set the period to one day and run two full cycles.
Certificate-driven compliance
How it works: on completion, Custom Certificate issues a certificate showing the issue date and an expiry date. Managers and auditors check the certificate to see who is valid today.
Why it matters
- Learners and managers understand certificates better than course settings.
- Public verification by code or QR code, with the expiry shown.
- Fits client-facing and contractual compliance.
The catch
- The expiry date triggers nothing. No email, no reset, no re-enrolment. It is only displayed.
- Years only: 1 to 5 years. No 6-month or quarterly validity.
- Not stored in the database, so you cannot filter “expired” in standard reports.
- Needs version 4.4.3 or later (earlier versions broke verification).
When to use it
Certificate-driven compliance suits training providers, contractors and any organisation whose clients or regulators ask for proof of valid training. A certificate with a clear expiry date answers the question “is this person compliant today?” in seconds, which is often what external audits and client contracts require.
Reminders
Time the reminder from the same date the certificate uses (completion or issue date), using Re-engagement or Pulse Pro as in Way 2. Keep the certificate validity, the reminder delay and the Recompletion period in one documented setting so they never drift apart.
Setup checklist
- Update Custom Certificate to the latest version.
- Add the expiry element and choose its start date carefully.
- Enable verification and add a QR code.
- Pair with Recompletion (Way 2) or yearly courses (Way 1).
- Add a reminder timed from the same date.
Choosing a reminder plugin: Re-engagement or Pulse
None of the three models sends a proper “your training expires soon” warning on its own, so most Moodle compliance setups add a notification plugin. The two most widely used options are Re-engagement and Pulse.
Re-engagement is a free activity from Catalyst IT. It emails learners a set time after they enrol or complete an activity, and can repeat the reminder. It is a good match for yearly courses (Way 1) and for Recompletion on Moodle 4.5. It cannot email line managers on standard Moodle, and its support for Moodle 5.x should be tested before use.
Pulse has a free version that sends a notification when an activity becomes available, which works well for fixed deadlines. The paid Pulse Pro adds scheduled and repeating reminders, automation rules and the option to copy managers, which makes it the more flexible choice for rolling compliance (Way 2 and Way 3).
Whichever plugin you choose, test it through at least one full renewal cycle on a staging site, because reminder timing depends on cron and on how the plugin interacts with the course reset.
Which one should you pick?
Fixed yearly deadline
“Everyone by 31 March.” Few topics: Way 1. Many topics: Way 2 in Schedule mode.
Valid 12 months from passing
Rolling hires, regulated roles: Way 2 in Period mode.
Clients ask for proof
Add Way 3 on top of Way 1 or 2 for verifiable certificates.
Our recommended setup
Course Recompletion in Period mode, archiving forced on, a Custom Certificate with expiry date as proof, reminders from Re-engagement (Moodle 4.5) or Pulse Pro, and one scheduled report showing current and past completions.
Frequently asked questions
Does Moodle have built-in recertification?
Standard Moodle does not include automatic recertification. Course completion is permanent unless it is reset manually or by a plugin. The free Course Recompletion plugin is the most common way to add annual renewal to standard Moodle.
How do I make a Moodle course expire after 12 months?
Install Course Recompletion, choose the Period mode and set it to 12 months. Each learner’s progress is reset 12 months after their own completion date, and they are asked to complete the course again. Turn on archiving first so past completions are kept for reporting.
Can Moodle certificates show an expiry date?
Yes. The Custom Certificate plugin includes an expiry element that shows a date 1 to 5 years after the issue or completion date. The date is shown on the certificate and its verification page, but it does not trigger reminders or reset the course by itself.
How do I send reminders before compliance training expires?
Use a notification plugin such as Re-engagement or Pulse Pro, timed from the learner’s completion date, for example a reminder at 11 months for a 12-month validity period. Course Recompletion only sends one email at the moment the course resets.
How do I prove compliance to an auditor in Moodle?
Use Moodle’s Report builder to create a report of course completions, including archived completions if you use Course Recompletion. Schedule it to managers, and export a copy at the end of every cycle so you have a record stored outside Moodle.
Five common mistakes
- Leaving Recompletion archiving off before the first reset.
- Treating a hidden course as a locked archive.
- Expecting the certificate expiry date to trigger something.
- Setting a reminder target that is already complete, so no email ever goes out.
- Broken cron. Re-engagement drops emails more than two days late.
Running annual compliance training in Moodle comes down to choosing the right model for how your organisation defines validity, then adding reminders and reporting around it. None of these models is complete on its own. The failures are rarely the big design choices. They are small settings left on their defaults. Pick your model, give it an owner, and test two full cycles on staging before going live.
Based on plugin code and documentation as of September 2026. Plugin behaviour changes between versions, so test on your own Moodle version.
