Course Enrollments
This guide explains how to manage who is enrolled in a course in EmbayLMS — from the course editor’s Enrollments tab and from an individual user’s profile. It covers manual enrollment (single and bulk), unenrollment (dropping a learner), upgrading an in-progress learner to the latest course version, and automatic enrollment rules.
Prerequisites
- Role: Admin or Manager (manager scope is limited to their own team)
- The
enrollment:createpermission to enroll, andenrollment:deleteto unenroll - For enrollment, the target course must be Published (you cannot enroll learners into a Draft course)
Where enrollments are managed
There are two entry points, and they share the same underlying rules:
| Entry point | Where | Best for |
|---|---|---|
| Course → Enrollments tab | Course editor (Admin → Courses → [course]) | Managing the full roster of one course |
| User profile → Enrollment history | Admin → Users → [user] | Managing one learner across several courses |
Every enroll, unenroll, and upgrade action is permission-checked and written to the audit log.
The course Enrollments tab
Open a course from Admin → Courses, then click the Enrollments tab. The tab lists every enrollment for the course with:
- Search by learner name or email
- Filter by status (active / in-progress, completed, dropped) and by course version
- Pagination — the roster is paginated (default 50 per page)
From here you can enroll users, unenroll a learner, and run version upgrades.
Manually enroll users
Enroll a single user
- Open the course’s Enrollments tab.
- Click Enroll users.
- In the user-search modal, search by name or email and select the learner.
- Click Enroll.
The learner is enrolled immediately and appears in the roster with an active status.
Enroll many users at once (bulk)
- On the Enrollments tab, click Enroll users.
- In the user-search modal, select multiple learners (search, tick each one).
- Click Enroll.
Bulk enrollment runs the same guards as a single enrollment, per user — see Enrollment guards below. If one user cannot be enrolled (for example they are already enrolled), that user is reported and skipped, and the rest of the selection proceeds. After the run you see a summary of how many were enrolled and which were skipped, with the reason for each skip.
Enrollment guards applied on every enroll
Both single and bulk enrollment apply these checks for each user:
| Guard | Behaviour |
|---|---|
| Enrollment window | Enrollment is blocked outside the course’s configured open/close dates |
| Duplicate guard | A user already actively enrolled is skipped (not enrolled twice) |
| Seat cap | If the course has a seat cap and it is full, the user is waitlisted when the waitlist is enabled; otherwise the enroll is blocked |
| Manager-approval workflow | If the course requires manager approval, the enrollment enters the approval workflow |
| Prerequisites | If the course has prerequisites the user has not met, the enroll is blocked |
Unenroll (drop) a learner
- Open the course’s Enrollments tab (or the user’s Enrollment history).
- Find the learner’s row.
- Click Unenroll (drop) and confirm.
Unenrolling removes the learner’s active enrollment in the course. This requires the
enrollment:delete permission and is audit-logged.
Dropping a learner does not delete historical completion records or certificates the learner already earned — those are preserved.
Upgrade an in-progress learner to the latest version
When you publish a new version of a course, learners who are mid-course stay on the version they started on. The Upgrade action moves an in-progress learner onto the latest published version so they continue on the current content. This is the per-user / per-course manual counterpart to the course-wide “force re-enrollment on version change” toggle.
Upgrade one learner
- Open the course’s Enrollments tab (or the user’s Enrollment history).
- Find an active (in-progress) learner whose enrollment is on an older version. An upgrade button showing the exact version transition (for example v3 → v4) appears on that row — it only renders when the learner is behind the latest published version.
- Click the transition button and confirm.
Upgrade everyone outdated at once
- On the course’s Enrollments tab, click Upgrade outdated (bulk).
- Confirm. Every in-progress enrollment on an older version is moved to the latest published version in one operation.
What upgrade does — and what it never touches
| Behaviour | Detail |
|---|---|
| Eligible enrollments | Active (in-progress) only. Completed enrollments are never upgraded. |
| Certificates | Never disturbed. Existing completions and their certificates are preserved. |
| Progress | Recomputed against the new version’s modules — effectively a fresh start on the new content. |
| History | Historical completions on prior versions are preserved; the upgrade does not erase the learner’s record. |
Why only active enrollments? Upgrading recomputes progress against the new module set. Doing that to a completed enrollment would put a finished learner back into “in progress” and is never desirable, so completed enrollments (and their certificates) are deliberately excluded.
Automatic enrollment rules
Auto-enrollment rules enroll learners into the course automatically when they meet a condition — so you don’t have to enroll each person by hand. Rules are managed from the course’s Enrollments tab.
Add an auto-enrollment rule
- Open the course’s Enrollments tab.
- Open Automatic enrollment rules and click Add rule.
- Choose a rule type and its target (see the reference below).
- Click Save. Users who match the rule are enrolled automatically; the same enrollment guards apply.
Rule types
| Rule type | Trigger | Configuration |
|---|---|---|
Group membership (group_membership) | A user joins the chosen group | groupId — the group |
Course completion (course_completion) | A user completes another course | completedCourseId — the prerequisite/source course |
User attribute (attribute) | A user matches an attribute value | attribute (field) + value (target value) |
Auto-enrollment rules apply going forward — when a user becomes a group member, completes the source course, or matches the attribute. Remove a rule from the same panel to stop future auto-enrollments; it does not unenroll learners already enrolled by the rule.
Managing enrollments from a user’s profile
The same actions are available on a single learner’s record at Admin → Users → [user], in the Enrollment history table. The table is actionable when you hold the right permissions:
| Action | Permission | Notes |
|---|---|---|
| Enroll in course | enrollment:create | Opens the course-structure tree picker (see below); the same enrollment guards apply per course |
| Unenroll | enrollment:delete | Drops the user’s active enrollment in that course |
| Upgrade (version-transition button, e.g. v3 → v4) | enrollment:create | Moves an in-progress enrollment to the latest version (same caveats as above); shown only when the enrollment is behind the latest published version |
If the user lacks the permission, these actions are hidden.
Enroll a user from their profile — the course-structure tree picker
Clicking + Enroll in course opens a picker that shows your course folder structure with the published courses nested inside — not a flat search box.
- On Admin → Users → [user], click + Enroll in course.
- Browse the folder tree. Courses that are not in any folder appear under Unfiled.
- Tick one or more course checkboxes, or tick a folder checkbox to select every course inside that folder (including its subfolders). A folder with only some of its courses selected shows an indeterminate (partial) state.
- Courses the learner is already enrolled in are disabled and tagged Enrolled — they cannot be selected again.
- The footer shows how many courses are selected. Click Enroll {count} to confirm.
Each selected course runs the same enrollment guards as a single enrollment. The run is partial-failure tolerant: if a course cannot be enrolled (for example a prerequisite is missing), it is skipped and the rest proceed. The confirmation message reports how many courses were enrolled and how many were skipped.
Configuration / field reference
| Field / control | Location | Description |
|---|---|---|
| Search | Enrollments tab | Filter the roster by learner name or email |
| Status filter | Enrollments tab | Active (in-progress), completed, dropped |
| Version filter | Enrollments tab | Show enrollments on a specific course version |
| Enroll users | Enrollments tab | Opens the user-search modal (single or multi-select) |
| Enroll in course | User profile | Opens the course-structure tree picker (folders + published courses, multi-select; already-enrolled courses tagged Enrolled and disabled) |
| Upgrade (e.g. v3 → v4) | Enrollments tab / user profile | Moves one in-progress enrollment to the latest version; the button shows the version transition and only appears when the enrollment is outdated |
| Unenroll | Enrollments tab / user profile | Drops a learner’s active enrollment (enrollment:delete) |
| Upgrade outdated | Enrollments tab | Bulk-moves all outdated in-progress enrollments to the latest version |
| Automatic enrollment rules | Enrollments tab | Add/remove group_membership, course_completion, attribute rules |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| ”User already enrolled” on enroll | The learner already has an active enrollment | This is expected — the duplicate guard skips them. In a bulk run the rest still proceed. |
| ”Course is full” / learner was waitlisted | The course’s seat cap is reached | The user is waitlisted if the waitlist is enabled; otherwise raise the seat cap or wait for a seat to free up. |
| Upgrade button not showing | The version-transition button (e.g. v3 → v4) only appears for active (in-progress) enrollments that are on an outdated version | Completed enrollments are never upgraded; an enrollment already on the latest version has nothing to upgrade. |
| Course greyed out in the tree picker | The learner already has a non-dropped enrollment in that course — it is tagged Enrolled | This is expected; the duplicate guard prevents enrolling twice. |
| Course missing from the tree picker | Only published courses appear in the picker | Publish the course first. |
| Can’t enroll in this course | The course is unpublished (Draft) | Publish the course first — learners can only be enrolled into a published course. |
| Enroll blocked — prerequisites | The learner has not completed a prerequisite course | The learner must complete the prerequisite, or remove the prerequisite from the course settings. |
| Enroll blocked — outside enrollment window | The course’s enrollment open/close dates exclude today | Adjust the enrollment window in the course settings. |
| Enroll/Unenroll action missing on user profile | You lack enrollment:create / enrollment:delete | Ask a tenant admin to grant the permission (or the appropriate role). |
| Some users skipped in a bulk enroll | Per-user guard failed (already enrolled, prerequisites, seat cap) | Review the post-run summary — each skipped user shows its reason; the rest were enrolled. |
Related guides
- Course Management — create, version, and publish courses
- User Management — roles, groups, and the permissions that gate enrollment actions
- Recurring Assignments — schedule repeat enrollments for compliance courses
Need help? Contact your EmbayLMS onboarding team or open a support ticket.