Course Versioning & Forced Re-enrollment
Who this guide is for: Admins and instructors who publish updated versions of a course and need to decide what happens to the people who already completed the old one.
Editing a published course creates a draft version. Publishing that draft makes it the live version. What that publish does to your learners depends on where each of them stands.
What happens on publish, by default
| Learner state | What the publish does |
|---|---|
In progress (active) | Moved onto the new version. Their progress is carried across module-for-module, so nobody restarts the course. When the new version keeps the same SCORM package, a learner who was partway through it resumes where they left off. Only a package you uploaded again in the new version starts from the beginning, because a saved position belongs to the package that saved it (a SCORM module they already completed stays completed). |
| Completed | Nothing. Their completion and certificate stand, and they are not asked to do anything. |
| Not enrolled | Nothing — they get the new version when they enroll. |
That default is right for most edits: a typo fix, a clearer diagram, a new optional module. It is wrong for one specific case, which is what the rest of this guide is about.
The Versions tab
Open the course in Courses and go to the Versions tab. Every version of the course is listed, newest first:
| Column | What it shows |
|---|---|
| Version | v1, v2, … with a Current marker on the one learners are served right now. |
| Status | Published (current), Superseded (a past version), or Draft (the version being edited, not yet published). |
| Published / By | When the version went live, and who published it. System means EmbayLMS created it (the automatic draft opened by Start new version). |
| Modules | How many modules the version has, and the change against the version before it — 5 (+2) means two modules were added. |
| Languages | For a course with additional languages, how many of the version’s modules have content in each language, green when complete. This is what tells you that v3 has no French before you restore it. |
Anyone who can view the course can read the tab. Restoring needs edit rights.
Restore an older version
- On the version you want back, click Restore this version.
- Read the confirmation. It states the two things that matter:
- existing completions and certificates are preserved — they stay tied to the version they were earned on;
- whether forced re-enrollment (below) is on for this course, and so whether publishing the restored content will re-enroll everyone who had completed it.
- Click Restore as draft.
Restoring never rewrites history and moves nobody. It copies the old version’s content — modules, files, quizzes, lesson blocks, session series — into a new draft with the next version number. Learners keep seeing the current version until you publish that draft, exactly as if you had started a new version and rebuilt the old content by hand. Review the draft under Modules, then Publish new version; or Discard draft if you change your mind.
Restore is unavailable while a draft is already open (publish or discard it first), on a course that has never been published, and on the version that is already current. A course with an additional language cannot publish a restored version that lacks content for that language — the publish refuses and names the modules, so either add the missing content to the draft or deactivate the language first.
Every restore writes an audit entry (version_restored_as_draft) recording
which version was restored and which draft it produced.
When to force re-enrollment
Turn this on when a new version differs enough that the old completion no longer evidences anything — a rewritten safety policy, a changed regulation, a procedure that now works differently. In that situation, letting last year’s completions stand is a compliance gap: your records say everyone is trained on a document they never read.
Leave it off for everything else. Resetting a whole cohort is disruptive, and doing it for a typo fix will teach your learners to ignore the notification.
Turn it on
- Open the course in Courses.
- If the course is published, click Start new version. The Version changes panel is shown only while the course can be edited: a course that has never been published, or one with a draft version open.
- Go to the Settings tab and find the Version changes panel.
- Switch on Require everyone to retake this course when a new version is published.
- Optionally set Days to complete after an update.
Nothing happens when you save. The setting changes what the next publish does. Turning it on does not reset anyone by itself.
Configuration reference
| Field | Values | Meaning |
|---|---|---|
| Require everyone to retake this course when a new version is published | On / Off (default Off) | When on, publishing a new version resets everyone who had completed an earlier version to active. |
| Days to complete after an update | Blank, or 1–365 (default blank) | Blank leaves each learner’s existing due date exactly as it was. A number makes the reset cohort due that many days after the publish. |
What the reset does to a learner
When you publish a new version with this on, every learner whose enrollment was
completed:
- returns to active, pinned to the version you just published;
- has their module progress cleared and their course progress returned to 0, so they genuinely retake it;
- gets a due date per the Days to complete setting above;
- receives a notification (in-app, push if they enabled it, and email) telling them the course changed and they need to take it again — in their own language.
What the reset does not do
It never touches an issued certificate. The certificate from their earlier completion keeps its original certificate number and issue date, stays in their credential wallet, and stays valid at its public verification URL. This starts a new cycle; it does not revoke anything.
This matters because it is the first thing a learner will ask. The notification says so explicitly, and so should you if someone escalates.
Interaction with other features
| Feature | Interaction |
|---|---|
| Recertification / CE renewals | The reset clears the enrollment’s expiry date, because the completion that earned it no longer counts. When the learner completes the new version, a fresh expiry is stamped from the course’s validity period as usual. |
| Recurring assignments | No conflict. The recurring sweep re-assigns on its own schedule and simply re-stamps the due date on its next run. You do not need to pause one to use the other. |
| Manual version upgrade | Unchanged. You can still move a single in-progress learner (or all of them) onto the latest version from the course Enrollments tab — that is for in-progress learners and is independent of this setting. |
| Scheduled publish | Works together. If the course has a scheduled publish, the reset fires when that scheduled publish runs. |
Auditing a reset
Every reset writes to the audit log:
- one
reenrollment.forcedentry per affected enrollment, recording the before/after status, the version, and the due date applied; - one
reenrollment.forcedentry on the course, recording how many learners were reset.
Filter the Settings → Audit log by action reenrollment.forced to reconstruct exactly who
was reset and when.
Troubleshooting
| Symptom | Likely cause / fix |
|---|---|
| Restore this version is greyed out | The line above the table says why: a draft is already open, the course is not published yet, or you lack edit rights on it. |
| I restored a version and learners still see the old content | Restoring opens a draft. Nothing changes for learners until you publish it — check the Modules tab, then Publish new version. |
| Publishing the restored draft is refused for a language | That version predates the language. Add the missing content to the draft, or deactivate the language, then publish. |
I turned it on but nobody was reset
Saving the setting is not a publish. Publish a new version — and check there actually is a new version: republishing the same live version resets nobody by design.
A learner says their certificate disappeared
It did not. Open Users, select the learner, and click View or revoke certificates (shown to roles that can revoke certificates); the earlier certificate is still listed with its original issue date. If they cannot see it in their own wallet, that is a separate bug — report it rather than re-issuing.
The reset cohort has no due date
Days to complete after an update is blank, so each learner kept whatever due date they already had — and a completed enrollment often has none. Set a number if you need a deadline.
Some learners were not reset
Only completed enrollments are reset. Learners who were in progress were
migrated to the new version instead (with their progress intact), and dropped or
expired enrollments are left alone.
I reset a cohort by mistake
There is no undo. The audit log tells you exactly who was affected; their certificates are intact, so the recovery is to turn the setting off and, if the retake is genuinely not needed, mark those learners complete again or unenroll them per your own policy.