Create a Course
This guide explains how to build a complete LMS Course from empty to published, using the portal course editor (recommended) with desk form alternatives. You will configure trainers, modules, lessons, quizzes, category, and publishing flags consistent with Smooth LMS validation rules.
Table of Contents
- Before you start
- Open the course editor
- Course header fields
- Add modules (chapters)
- Add lessons
- Attach quizzes and assignments
- Certification and pricing tab
- Publish
- Desk form alternative
- Desk paths
- Step-by-step walkthrough
- Tips
- Troubleshooting
- Related guides
- HRMS integration
Before you start
- Account with Course Creator or Moderator (or System Manager).
- At least one User to list as Trainer in Course Instructor table.
- LMS Category created for catalog grouping.
- Content outline (modules, learning objectives, assessment plan).
- Optional: SCORM zip, YouTube URLs, PDF handouts.
Open the course editor
Primary entry points:
- Learning workspace → Create a Course →
/lms/courses/new/edit - Portal navigation → New Course (when exposed)
- Desk →
/app/lms-course/new(advanced)
The portal editor saves LMS Course documents via whitelisted APIs and provides drag-and-drop module ordering.
Course header fields
| Field | Guidance |
|---|---|
| Title | Unique, employee-friendly name |
| Trainers | Required multi-select; at least one instructor row |
| Short Introduction | Required; appears on cards |
| Description | Required rich text; learning outcomes |
| Video Embed Link | Optional promo video |
| Preview Image | Card thumbnail |
| Category | LMS Category link |
| Tags | Free-text discovery |
| Color | Card gradient on catalog |
Course settings section:
- Published / Upcoming / Featured
- Disable Self Learning for assignment-only training
- Mandatory Training + Validity Period (Days) for compliance
Add modules (chapters)
Modules are Course Chapter documents linked to the course.
- In editor, click Add Module (Add Chapter API).
- Enter module title (e.g., "Module 1 — Hazard Communication").
- Reorder modules to match instructional design.
- For SCORM, choose upload package option (see SCORM guide).
Desk path for manual module: /app/course-chapter/new with Course link set.
Add lessons
Within each module, add Course Lesson rows:
- Click Add Lesson.
- Set lesson title.
- Choose content type combination (markdown body, video, quiz, assignment).
- Optionally enable Include In Preview for marketing.
Lessons inherit Course from chapter via fetch; do not orphan lessons without chapter.
Attach quizzes and assignments
Quiz
- Create LMS Quiz on desk (
/app/lms-quiz) with questions. - Copy quiz name into lesson Quiz ID field.
- Quiz renders at bottom of lesson; passing rules per quiz settings.
Assignment
- Enter Question text on lesson.
- Select File Type (Image / Document / PDF) when uploads required.
- Learner submissions create LMS Assignment Submission rows for grading.
Certification and pricing tab
Internal corporate training typically:
- Enables Completion Certificate (free).
- Leaves Paid Course off.
Customer-facing academies may enable paid course/certificate with Currency and Amount fields.
Paid certificate adds Evaluator (Course Evaluator) and Timezone for evaluations.
Publish
- Review all modules have at least one lesson.
- Confirm trainers assigned.
- Set Published On date.
- Check Published.
- Save—verify course on
/lms/coursesas learner.
Optional: enable LMS Settings notification for published courses to email members.
Desk form alternative
Power users may use /app/lms-course/{name}:
- Edit Chapters child table to link existing Course Chapter records.
- Use import templates for bulk course creation.
- Access Statistics tab after enrollments exist.
Desk is ideal for fixing broken links when portal editor errors.
Desk paths
| Action | Path |
|---|---|
| Portal editor | /lms/courses/new/edit |
| Course list | /app/lms-course |
| Module list | /app/course-chapter |
| Lesson list | /app/course-lesson |
| Quiz list | /app/lms-quiz |
| Learning home | /desk/learning |
Step-by-step walkthrough
Example: Anti-Harassment Training
- Create category Compliance if missing.
- New course title "Anti-Harassment 2026".
- Trainer = HR Director user.
- Module 1 "Policy Overview" — lesson with markdown body from handbook.
- Module 2 "Scenarios" — lesson with embedded YouTube debrief.
- Module 3 "Knowledge Check" — lesson with Quiz ID linked to 10-question quiz.
- Enable mandatory + 365 validity for annual refresh.
- Publish; assign to all employees via Moderator mandatory assign tool.
- Verify portal progress and desk enrollment list after test completion.
Tips
- Draft content in markdown files, paste into lesson body for consistency.
- Use AI summary fields only after content stabilizes (collapsible AI section on lesson).
- Duplicate last year's course, update validity, deprecate old published version.
- Keep quiz question count reasonable for mobile learners.
Troubleshooting
| Issue | What to do |
|---|---|
| Cannot save course | Trainers required; fill short intro + description |
| Module not visible | Save course; refresh editor; check chapter link |
| Quiz not showing | Verify Quiz ID matches existing LMS Quiz name |
| Publish toggle missing | Gain Moderator role or ask moderator to publish |
| Lesson 404 | Chapter mismatch; confirm lesson.course fetch |
Related guides
HRMS integration
New hire courses should mirror tasks on Employee Onboarding. When a course satisfies a regulatory requirement, mirror completion into Employee Compliance with evidence attachments. Authors should confirm target employees exist in Employee records before assigning mandatory training.
Content review workflow
Recommended approvals: instructional designer drafts in portal → SME reviews markdown → compliance signs off → Moderator publishes. Maintain draft courses with Published off until legal review completes for regulated industries. Archive prior year by duplicating course name with year suffix to preserve historical quiz submissions tied to old record names.
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 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 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 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
- Create test Employee with user — confirm LMS Student role.
- Submit test Employee Onboarding — confirm enrollments when courses mandatory.
- Complete course — attach quiz PDF to test Employee Compliance row.
- 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 to fix missing user_id before reassigning training.
Last updated: May 2026