SCORM Content
Who this guide is for: Tenant administrators who upload and manage eLearning content packages in EmbayLMS.
Overview
SCORM is the most widely used format for eLearning content. It packages an interactive course — videos, slides, quizzes, and more — into a single .zip file that any SCORM-compatible LMS can run. EmbayLMS supports SCORM 1.2, SCORM 2004 (all editions), xAPI (Tin Can), and cmi5. You do not need to understand the technical details to upload and manage content — this guide walks you through every step.
Prerequisites
- Tenant Admin or Instructor role
- A valid SCORM package in
.zipformat (exported from an authoring tool such as Articulate Storyline, Rise, Adobe Captivate, or iSpring)
1 — What Is SCORM? (Plain Language)
When a subject matter expert creates an eLearning course using an authoring tool, they export it as a SCORM package — a .zip file containing all the course files and a manifest that tells the LMS how to launch the course and record what the learner does (completion, score, time spent).
EmbayLMS acts as the SCORM runtime. When a learner opens a SCORM course:
- EmbayLMS launches the course in a sandboxed frame.
- The course communicates completion, score, and progress back to EmbayLMS in real time.
- EmbayLMS stores this data and marks the course complete when the right conditions are met.
SCORM 1.2 and SCORM 2004 are the two common versions. Both are supported. Your authoring tool will specify which version it exported.
2 — Uploading a SCORM Package
- Navigate to Admin Panel → Courses → [course name] → Modules.
- Open the module where you want to add SCORM content, or click Add module.
- Click Add content → SCORM / xAPI package.
- Click Upload package and select your
.zipfile (maximum size: 500 MB). - EmbayLMS validates the package (see §3 for what is checked and common errors).
- Once validation passes, the package is uploaded and a preview thumbnail is generated.
- Configure the completion settings (see §4).
- Click Save.
The package is stored on AWS S3 and delivered via CloudFront. Learners stream the content — they do not download the .zip.
Supported versions: SCORM 1.2, SCORM 2004 (1st–4th edition), xAPI (Tin Can), cmi5.
3 — Upload Validation
EmbayLMS checks every package before saving it. Validation typically takes 10–30 seconds for packages under 100 MB and up to 2 minutes for larger packages.
What is checked
| Check | What it verifies |
|---|---|
| ZIP integrity | The file is a valid, uncorrupted ZIP archive |
| Manifest presence | imsmanifest.xml (SCORM) or tincan.xml / cmi5.xml (xAPI/cmi5) is present at the root |
| Launch file | The entry point HTML file referenced in the manifest exists in the package |
| File size | Total uncompressed size is within the 500 MB limit |
| File types | No executable files (.exe, .bat, .sh) — blocked for security |
Common validation errors and fixes
| Error message | Cause | Fix |
|---|---|---|
| ”Manifest not found” | imsmanifest.xml is not at the ZIP root — it may be inside a subfolder | Re-export from your authoring tool, ensuring the manifest is at the root level |
| ”Launch file not found” | The HTML entry point listed in the manifest does not exist in the package | Re-export; confirm the export settings in your authoring tool point to the correct launch file |
| ”File too large” | Uncompressed package exceeds 500 MB | Reduce embedded video quality in your authoring tool, or split into multiple modules |
| ”Invalid ZIP file” | The .zip was corrupted during download or upload | Re-download from your authoring tool and re-upload |
| ”Executable file blocked” | Package contains .exe, .bat, or .sh files | Remove the offending files from the package and re-zip |
| ”Unsupported SCORM version” | Manifest declares an unsupported version | Re-export as SCORM 1.2 or SCORM 2004 |
4 — SCORM Completion Settings
Once a package is uploaded, configure how EmbayLMS determines when the learner has completed the module.
4.1 SCORM 1.2 completion
SCORM 1.2 uses the cmi.core.lesson_status data element. EmbayLMS considers the module complete when this value is set by the course to one of the following (configurable):
| Trigger option | lesson_status value(s) |
|---|---|
| Passed or completed (recommended) | passed or completed |
| Completed only | completed |
| Passed only | passed |
| Any non-incomplete status | passed, completed, failed |
To configure:
- Open Admin Panel → Courses → [course] → Modules → [module] → Settings.
- Under Completion trigger, select the desired option.
- Click Save.
4.2 SCORM 2004 completion
SCORM 2004 uses two separate elements:
cmi.completion_status— tracks whether the learner has finished the content (completed/incomplete).cmi.success_status— tracks whether the learner passed (passed/failed/unknown).
EmbayLMS lets you configure the combination that counts as complete:
| Trigger option | Condition |
|---|---|
| Completed and passed | Both completion_status = completed AND success_status = passed |
| Completed only | completion_status = completed (regardless of pass/fail) |
| Passed only | success_status = passed |
4.3 Score threshold (optional)
If your course reports a score, you can set a minimum passing score. Learners who score below the threshold will not be marked complete even if the SCORM lesson_status says passed.
- Open Module Settings → Completion.
- Enable Minimum score and enter the threshold (e.g.,
80for 80%). - Click Save.
5 — Suspend Data and Resumption
No configuration is required. EmbayLMS automatically saves a learner’s position in a SCORM course after every SCORM commit event.
- When a learner closes the course and returns later, EmbayLMS restores their exact position, quiz progress, and any saved state using
cmi.suspend_data. - This applies to SCORM 1.2 and SCORM 2004.
- Resume works across devices — a learner can start on their desktop and continue on a mobile device.
Note for admins: If a learner reports losing their progress, check whether their browser blocked cookies or whether the session timed out before the course could commit. See §8 for troubleshooting.
6 — xAPI and cmi5 Content
xAPI (also called Tin Can) and cmi5 content packages are uploaded using the same workflow as SCORM.
- Navigate to Admin Panel → Courses → [course] → Modules → Add content → SCORM / xAPI package.
- Upload the
.zipfile. EmbayLMS detects whether the package is xAPI (tincan.xml) or cmi5 (cmi5.xml) automatically. - xAPI statements are sent to EmbayLMS’s built-in LRS (Learning Record Store).
- Completion is determined by the
cmi5.defined.completedandcmi5.defined.passedxAPI verbs (cmi5) or by a custom completion verb configuration (xAPI).
For complex xAPI reporting needs or integration with an external LRS, contact EmbayLMS support.
7 — Content Versioning
When a course needs to be updated (regulatory content refreshed, branding changed, bugs fixed), you can upload a new version of the SCORM package without losing existing learner records.
7.1 Upload a new version
- Navigate to Admin Panel → Courses → [course] → Modules → [module].
- Click Content → Replace package.
- Upload the new
.zipfile. - EmbayLMS validates the new package (same checks as initial upload).
- Choose a version strategy:
| Strategy | Description |
|---|---|
| New version — preserve in-progress (recommended) | Learners who are mid-course continue on the old version until they complete or are manually moved. New starters get the new version. |
| New version — migrate all | All in-progress learners are moved to the new version. Their existing completion and score data is preserved, but their position (suspend data) is reset. |
| Replace (no versioning) | Replaces the content silently. Learners who have already completed the module are unaffected. Learners mid-course may experience issues if the course structure changed significantly. Not recommended for major updates. |
- Click Save.
7.2 What happens to in-progress learners
| Scenario | Result with “Preserve in-progress” strategy |
|---|---|
| Learner is mid-course | Continues on old version; can complete normally |
| Learner has not started | Gets the new version |
| Learner completed the old version | Record is retained on old version; no re-enrollment unless triggered |
7.3 View version history
Navigate to Admin Panel → Courses → [course] → Modules → [module] → Version history to see all versions, the upload date, who uploaded each version, and how many learners are on each version.
8 — Troubleshooting
Content does not launch (blank screen or loading spinner)
- Check that the learner’s browser is not blocking pop-ups — SCORM content launches in a new window or tab. The learner should allow pop-ups for your EmbayLMS domain.
- Confirm the package is valid by re-running validation (Module → Content → Re-validate package).
- Try the Test launch button in the module editor to launch the content as an admin and check for console errors.
- If the package uses Flash (very old SCORM 1.2 content) — Flash is no longer supported in modern browsers. The content must be re-exported from the authoring tool in HTML5.
Content launches but completion is not recording
- Confirm the Completion trigger is set correctly (see §4). A mismatch between what the course reports and what EmbayLMS is listening for is the most common cause.
- Confirm the learner is completing the full course — some authoring tools only set
lesson_status = completedon the final slide. - Check the SCORM debug log: Admin Panel → Courses → [course] → [learner’s name] → SCORM session log. This shows every value the course sent, including
lesson_statusandcompletion_status, and the timestamp of each commit. - If the course reports
failedand your completion trigger requirespassed, the learner must pass a quiz embedded in the content before the module will mark complete.
Learner lost their progress after returning to the course
- Check the SCORM session log for a
suspend_dataentry. If none exists, the course did not save state on exit (some older courses only commit onLMSFinish). - Confirm the learner’s browser allows cookies for the EmbayLMS domain. Blocked cookies prevent session state from being stored.
- If the course author did not implement
cmi.suspend_data, position cannot be restored — this is a limitation of the source content, not EmbayLMS.
Upload validation fails — “Manifest not found”
The .zip file likely has an extra top-level folder wrapping all content. When you unzip the file, the imsmanifest.xml should be immediately visible — not inside a subfolder. Re-export from your authoring tool or manually re-zip selecting the contents of the folder (not the folder itself).
Configuration Reference
| Setting | Location | Description | Default |
|---|---|---|---|
| Completion trigger | Module → Settings → Completion | When to mark the module complete | Passed or completed |
| Minimum score | Module → Settings → Completion | Minimum score threshold | None |
| Max file size | Platform-wide | Maximum uncompressed package size | 500 MB |
| Version strategy | Module → Content → Replace package | How new versions affect in-progress learners | Preserve in-progress |
| Allowed SCORM versions | Platform-wide | 1.2, 2004 (all editions), xAPI, cmi5 | All supported |