Desk vs Learning Portal
Smooth LMS splits administration and learning across two surfaces: the Frappe desk (Learning workspace and record lists) and the LMS portal (Vue SPA under /lms). Understanding when to use each prevents permission confusion, speeds up course authoring, and sets correct expectations for employees who should never need desk access.
Help URL: smoothhiring.com/help/lms/getting-started/desk-vs-portal
Table of Contents
- Two surfaces, one database
- Learning workspace (desk)
- LMS portal routes
- Who should use which
- Authoring: desk forms vs portal editor
- Enrollment and progress views
- Desk paths reference
- Step-by-step: verify both surfaces
- Tips
- Troubleshooting
- Related guides
- HRMS integration
Two surfaces, one database
Both desk and portal read the same MariaDB tables (tabLMS Course, tabCourse Lesson, tabLMS Enrollment, etc.). Publishing a course in either surface sets published = 1 on LMS Course. An employee completing a lesson in the portal updates the same enrollment progress moderators see on desk lists.
The app icon for Smooth LMS points to /desk/learning (app_icon_route in hooks). The website route prefix defaults to /lms but can be overridden with lms_path in site_config.json. Portal navigation (Courses, Cohorts, Programs, Statistics) is controlled by LMS Settings sidebar toggles.
Learning workspace (desk)
Open Learning from the app switcher or navigate directly to /desk/learning. The workspace includes:
- Get Started links: Visit LMS Portal (
/lms/courses), Create a Course (/lms/courses/new/edit), LMS Settings. - Charts: Signups, Course Enrollments, Certification.
- Shortcuts: Quiz Results, Users, Course (published count), Enrollments, Courses Completed, Certificate, Evaluation.
- Cards: Course Data (Course, Module, Lesson, Quiz, Quiz Results), Course Stats (Interest, Review), Certification.
Desk is optimized for operators: HR admins, L&D managers with System Manager or elevated LMS permissions, and support staff exporting quiz submissions or fixing enrollment rows.
LMS portal routes
| Portal path | Purpose |
|---|---|
/lms/courses |
Course catalog, search, categories, bookmarks |
/lms/courses/{course} |
Course detail and lesson player |
/lms/courses/new/edit |
Course authoring UI for creators |
/lms/batches |
Cohort listing (when enabled in settings) |
/lms/programs |
Program listing |
/lms/statistics |
Admin analytics (Moderator / elevated roles) |
Students land on portal home showing My Courses, Mandatory Training (from LMS Training Assignment), and cohort cards. SCORM lessons launch through the SCORM page renderer without desk chrome.
Who should use which
| Persona | Primary surface | Why |
|---|---|---|
| Employee learner | Portal | Consumes lessons, quizzes, cohort timetable |
| Course author | Portal editor + occasional desk | Rich lesson editor, drag-drop modules |
| L&D moderator | Both | Portal for cohort ops; desk for bulk lists/reports |
| HR compliance | Desk + HR workspaces | Cross-check enrollments; export quiz PDFs |
| System Manager | Desk | Permissions, settings, data repair |
LMS roles (Course Creator, Moderator, Batch Evaluator, LMS Student) ship with desk_access = 0. Only users who also hold HR or System Manager desk roles see /desk/learning without extra role configuration.
Authoring: desk forms vs portal editor
Portal course editor (/lms/courses/new/edit) is the preferred path for building module/lesson trees, uploading SCORM zip files, and previewing content. APIs such as add_chapter handle SCORM extraction into public/scorm/{course}/{title}.
Desk record forms (/app/lms-course, /app/course-chapter, /app/course-lesson) remain available for power users: import spreadsheets, bulk rename, attach print formats, or fix broken links when the portal UI is unavailable.
Always set Trainers (Course Instructor child table) before publishing—portal and desk both require at least one instructor row.
Enrollment and progress views
| View | Surface | record |
|---|---|---|
| My enrollments | Portal home | LMS Enrollment (current user) |
| All enrollments | Desk shortcut | /app/lms-enrollment |
| Cohort roster | Portal batch page + desk | LMS Batch Enrollment |
| Mandatory assignments | Portal home widget | LMS Training Assignment |
| Quiz results PDF | Desk list | LMS Quiz Submission → Print |
Progress percentage on LMS Enrollment aggregates completed lessons and passed assessments. Disable Self Learning forces enrollment to be created by moderator, cohort, onboarding, or assign_mandatory_training.
Desk paths reference
| Item | Path |
|---|---|
| Learning workspace | /desk/learning |
| LMS portal | /lms/courses |
| LMS Course | /app/lms-course |
| Course Chapter (Module) | /app/course-chapter |
| Course Lesson | /app/course-lesson |
| LMS Batch (Cohort) | /app/lms-batch |
| LMS Settings | /app/lms-settings/LMS%20Settings |
Step-by-step: verify both surfaces
1. Admin desk check
- Log in as System Manager.
- Open
/desk/learning— confirm charts load. - Open Course shortcut → published courses list.
- Open
/app/lms-settings/LMS%20Settings— confirm Show Courses enabled.
2. Author portal check
- Log in as Course Creator.
- Visit
/lms/courses/new/edit— create draft course with one module and lesson. - Publish course; confirm it appears on
/lms/courses.
3. Learner portal check
- Log in as employee user with LMS Student.
- Open
/lms/courses— open published course. - Complete a lesson; verify progress bar updates.
- As admin, open
/app/lms-enrollment— confirm progress > 0.
4. Cross-surface mandatory training
- Mark course mandatory with validity days.
- Assign via Moderator tools or onboarding.
- Employee sees assignment on portal home; desk shows LMS Training Assignment row.
Tips
- Deep-link employees to
/lms/coursesfrom onboarding emails rather than/desk. - Use desk Quiz Results shortcut when managers need downloadable PDFs of test answers.
- If portal sidebar missing items, toggle them in LMS Settings → Sidebar tab.
- Corporate patch sets enrollment
member_typeto Employee—reports filter accordingly.
Troubleshooting
| Issue | What to do |
|---|---|
404 on /lms/courses |
Confirm lms app installed; check lms_path site config; rebuild assets |
| Creator sees desk error | Expected—use portal editor; grant System Manager only for desk repair |
| Published course not in portal | Hard refresh; verify published and not upcoming without date |
| Desk charts empty | New site—enroll test users; charts need data |
| SCORM blank in portal | Re-upload package; check public/scorm path and manifest extraction logs |
Related guides
HRMS integration
Employees access training through the portal tied to Employee records user_id. Onboarding uses the portal for learning tasks while HR tasks live in Employee Onboarding. Store signed policy PDFs in Employee Compliance when LMS completion alone is insufficient for auditors.
Security boundaries
Treat /desk/learning as privileged operations territory. Employees should bookmark /lms/courses only. VPN or SSO policies apply uniformly—LMS does not bypass HR authentication. Guest access (allow_guest_access in LMS Settings) should remain disabled on private HRMS tenants. SCORM packages execute HTML/JS from uploaded zips—only trusted authors should upload vendor content.
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
Smooth HR (HRMS)
| Guide | Link |
|---|---|
| HR help home | smoothhiring.com/help/hrms |
| Employee records | hrms/people/employee-records |
| Onboarding overview | hrms/onboarding/overview |
| Onboarding templates | hrms/onboarding/onboarding-templates |
| Employee onboarding | hrms/onboarding/employee-onboarding |
| Documents & compliance | hrms/documents-compliance/overview |
| Employee compliance | hrms/documents-compliance/employee-compliance |
| Signature templates | hrms/documents-compliance/signature-templates |