# Programs Overview

**LMS Program** groups multiple **LMS Course** documents into a curated learning path with optional **Enforce Course Order**. Members enrolled in a program see unified progress across courses—ideal for role-based academies, leadership tracks, and multi-course certifications beyond single cohort events.

> **Help URL:** [smoothhiring.com/help/lms/programs/overview](https://smoothhiring.com/help/lms/programs/overview)

---

## Table of Contents

1. [Programs vs cohorts vs courses](/#programs-vs-cohorts-vs-courses)
2. [LMS Program structure](/#lms-program-structure)
3. [Program courses table](/#program-courses-table)
4. [Program members](/#program-members)
5. [Enforce course order](/#enforce-course-order)
6. [Publishing and portal](/#publishing-and-portal)
7. [Permissions](/#permissions)
8. [Desk paths](/#desk-paths)
9. [Step-by-step](/#step-by-step)
10. [Tips](/#tips)
11. [Troubleshooting](/#troubleshooting)
12. [Related guides](/#related-guides)
13. [HRMS integration](/#hrms-integration)

---

## Programs vs cohorts vs courses

| Construct | record | Best for |
|-----------|---------|----------|
| Course | LMS Course | Single subject, self-paced |
| Cohort | LMS Batch | Scheduled group experience |
| Program | LMS Program | Multi-course path spanning weeks/months |

Programs do not include live timetable—pair with cohorts when you need facilitators plus structured path.

---

## LMS Program structure

Fields on `/app/lms-program`:

- **Title** (unique, autoname)
- **Published** — visible on `/lms/programs`
- **Enforce Course Order** — sequential unlock
- **Program Courses** child (**LMS Program Course**)
- **Program Members** child (**LMS Program Member**)
- Read-only **Course Count** / **Member Count**

Custom `has_permission` ensures members see only programs they belong to (plus moderators).

---

## Program courses table

Each row links a published **LMS Course** with ordering index. When **Enforce Course Order** is enabled, portal prevents starting course N+1 until course N completion criteria met (progress 100% / certificate).

Include prerequisite skills early in sequence—e.g., "Data Privacy Basics" before "Advanced PHI Handling".

---

## Program members

**Program Members** lists Users enrolled in the path. Adding member should create underlying **LMS Enrollment** rows per course—verify after bulk add.

Members hold **LMS Student** role; program admins need **Moderator**.

Removal from program does not auto-delete completed course history—archive thoughtfully.

---

## Enforce course order

Checkbox **Enforce Course Order** (default off):

- On: sequential gating for compliance paths.
- Off: buffet-style libraries where motivated learners skip ahead.

Communicate policy to employees when enforcement is on to reduce support tickets.

---

## Publishing and portal

Published programs surface on portal when LMS Settings sidebar includes programs. Marketing fields are minimal—rely on course cards inside program detail view.

Statistics counters update on save—use desk list filters for reporting.

---

## Permissions

| Role | Access |
|------|--------|
| System Manager | Full |
| Moderator | Create/edit/publish |
| Course Creator | Create/edit own programs (import enabled) |
| LMS Student | Read published programs where member |

API checks program membership before showing course content bundle.

---

## Desk paths

| Item | Path |
|------|------|
| Program list | `/app/lms-program` |
| New program | `/app/lms-program/new` |
| Portal programs | `/lms/programs` |
| Underlying courses | `/app/lms-course` |
| Learning workspace | `/desk/learning` |

---

## Step-by-step

### Build a leadership program

1. Publish courses: Communication, Coaching, Finance for Managers.
2. New program "First-Line Leader Academy".
3. Add courses in order; enable enforce order.
4. Publish program.
5. Add program members (User emails) for promoted supervisors.
6. Learners open `/lms/programs` → start first course.
7. Monitor enrollments until all courses 100%.

### Combine with HR compliance

1. Map program completion to manual [Employee Compliance](https://smoothhiring.com/help/hrms/documents-compliance/employee-compliance) update.
2. Attach consolidated certificate PDFs to employee file.

---

## Tips

- Keep programs under six courses for completion rates.
- Refresh program yearly by duplicating record and swapping course links.
- Use programs for role changes, cohorts for time-bound events.
- Display program progress in 1:1 meetings alongside HR appraisals.

---

## Troubleshooting

| Issue | What to do |
|-------|------------|
| Member cannot start course 2 | Enforce order on—complete course 1 |
| Program not on portal | Publish program; enable sidebar |
| Course count zero | Add Program Courses rows |
| Permission denied | Add user to Program Members |
| Enrollment missing | Re-save member row; check API logs |

---

## Related guides

- [Courses overview](https://smoothhiring.com/help/lms/courses/overview)
- [Cohorts overview](https://smoothhiring.com/help/lms/cohorts/overview)
- [Create a course](https://smoothhiring.com/help/lms/courses/create-a-course)

---

## HRMS integration

Programs operationalize career paths tied to [Employee records](https://smoothhiring.com/help/hrms/people/employee-records) job changes. Align program completion with [Employee Onboarding](https://smoothhiring.com/help/hrms/onboarding/overview) for manager tracks. Store regulated program certificates in [Employee Compliance](https://smoothhiring.com/help/hrms/documents-compliance/employee-compliance) when required by law—not only LMS progress widgets.

## Program analytics

Track **Member Count** vs active learners completing course 1—large drop-off indicates length or ordering issues. For enforced order programs, report average days between course completions to leadership. Integrate program completion into performance conversations—not automatic in HR appraisal unless configured separately.

Publish programs to `/lms/programs` only after all child courses tested on mobile portal.

## Governance, auditing, and data retention

Training data in Smooth LMS is standard Frappe JSON in MariaDB plus files in `public/files` and `public/scorm`. HR audits typically require evidence of **who** completed **what** by **when**. Export desk lists (**LMS Enrollment**, **LMS Quiz Submission**, **LMS Training Assignment**, **LMS Certificate**) to CSV for sampling. Quiz submission print formats provide question-level detail suitable for safety investigations or harassment prevention audits.

Retention policy should align with HR document retention: keep LMS submissions at least as long as related [Employee Compliance](https://smoothhiring.com/help/hrms/documents-compliance/employee-compliance) records. When employees depart, disable User accounts but retain enrollment history unless legal counsel approves purging. Version course content via amended records or annual duplicated courses so historical completions still reference the correct curriculum year.

System Managers should restrict **Moderator** role membership and enable login activity review on sensitive cohorts (executive leadership programs). Pair LMS reports with HR onboarding status from [Employee Onboarding overview](https://smoothhiring.com/help/hrms/onboarding/overview) to prove training preceded start date when required.

## Frequently asked questions

**Do employees need desk access?** No. **LMS Student** is portal-only by default; send `{site}/lms/courses` links.

**Can one user be both Course Creator and Moderator?** Yes on small teams; larger orgs should separate author vs publish duties.

**How do we handle contractors?** Create User + optional HR employee record; assign training like employees via [Employee records](https://smoothhiring.com/help/hrms/people/employee-records) linkage or direct enrollment.

**What breaks if HRMS is down?** LMS continues serving published content; new hire auto-enrollment pauses until Employee/Onboarding APIs succeed.

**Are certificates legally equivalent to HR compliance rows?** Not automatically—store PDFs on compliance or document types when statute requires.

## Performance and scale notes

Large enrollments (5,000+ users) should batch assign overnight via `assign_mandatory_training` rather than manual enrollment rows. Rebuild website cache after bulk publish. Monitor background workers if email notifications queue heavily. SCORM packages should be optimized zip exports to reduce disk usage during large uploads.

## Additional troubleshooting

| Issue | What to do |
|-------|------------|
| Slow portal after publish | Hard-refresh browser; contact Smooth support if portal styling is broken |
| Wrong user on certificate | Certificate issued to enrollment member—fix User linkage in HR |
| Bulk import partial failure | Check error log; validate Course Instructor rows exist |
| Cohort vs course progress mismatch | Learner must open each course inside cohort; enrollments are per course |
| Timezone confusion on due dates | Training assignment due dates are date-only—communicate timezone in email |

## Operations calendar (recommended)

| Cadence | Action | Where |
|---------|--------|-------|
| Weekly | Review overdue **LMS Training Assignment** | `/app/lms-training-assignment` |
| Monthly | Publish content changelog to employees | Email + `/lms/courses` |
| Quarterly | Role audit (Moderator/Creator) | `/app/user` |
| Annually | Recertify mandatory courses | Re-assign with new due dates |
| After upgrade | Sign out/in; smoke-test `/lms` portal | `/desk/learning` |

## Integration smoke tests with HRMS

1. Create test **Employee** with user — confirm **LMS Student** role.
2. Submit test **Employee Onboarding** — confirm enrollments when courses mandatory.
3. Complete course — attach quiz PDF to test **Employee Compliance** row.
4. Archive evidence in document compliance SOP.

## Support runbook (L1)

Collect: user email, course/cohort name, screenshot of error, timestamp. Check enrollment exists, course published, role present. Escalate to System Manager if SCORM extract failed or permission hooks deny batch access. Reference [Employee records](https://smoothhiring.com/help/hrms/people/employee-records) to fix missing `user_id` before reassigning training.

## Document history and change control

When updating this process, record the Smooth LMS app version, platform update date, and whether HRMS onboarding templates changed. Authors should note breaking changes in course release notes (quiz question changes may require reattempts). For regulated customers, maintain a binder linking LMS course ID to compliance control ID in [Employee Compliance](https://smoothhiring.com/help/hrms/documents-compliance/employee-compliance).

Desk administrators use `/desk/learning` for cross-course metrics; portal users rely on `/lms/courses` for consumption—both URLs should appear in internal SOP PDFs so auditors can reproduce learner steps without admin credentials.

## Quick reference card

| Item | Value |
|------|-------|
| Admin workspace | `/desk/learning` |
| Employee catalog | `/lms/courses` |
| HR employee link | [Employee records](https://smoothhiring.com/help/hrms/people/employee-records) |
| Onboarding hook | [Employee Onboarding overview](https://smoothhiring.com/help/hrms/onboarding/overview) |
| Compliance ledger | [Employee Compliance](https://smoothhiring.com/help/hrms/documents-compliance/employee-compliance) |

Keep this table in your L&D onboarding packet for new coordinators.

## Closing notes for administrators

Schedule annual review of this guide with HR compliance and L&D. Confirm your organization's backups include `public/scorm` and file attachments for quiz uploads. After major HR reorgs, rebuild cohort rosters from [Employee records](https://smoothhiring.com/help/hrms/people/employee-records) exports rather than stale distribution lists.

---

_Last updated: May 2026_
