A SCORM package is a ZIP that holds everything in a module: HTML, images, JavaScript, and one mandatory XML file. When HR builds the ZIP correctly, a modern cloud LMS imports it in two minutes. When the ZIP is wrong, you get a white page or a silent error.
This guide covers what happens during import, six practical steps, and five common errors. Two worked examples come from B2B SMB practice.
What the LMS actually receives
A SCORM 1.2 package is a standardised ZIP per the CAM (Content Aggregation Model) specification. The LMS opens the ZIP and looks for one file at the root: imsmanifest.xml. This XML describes:
- which HTML pages are SCOs (Sharable Content Objects)
- which JavaScript hook connects the module to the LMS API
- which lesson status, completion flag, and maximum score the module records
- the sequence in which SCOs play
Without imsmanifest.xml at the root, the LMS has no idea what it is importing. This is the single most frequent failure mode: HR zips the wrapping folder instead of its contents.
Six steps to a clean import
The following process works for packages exported from Articulate Storyline, iSpring Suite, or Adobe Captivate.
- Export from the authoring tool. In Storyline pick »Publish → LMS → SCORM 1.2«. The export folder contains
imsmanifest.xmlplus a content subfolder. - Check the ZIP structure. Open the ZIP. If you see a wrapping folder and only inside it find
imsmanifest.xml, re-zip the contents of the folder, not the folder itself. - Drop spaces and accents from the file name. Rename »Health & Safety v2.zip« to
health-safety-v2.zip. Several LMS engines abort uploads on non-ASCII characters in the file name. - Validate on SCORM Cloud. Rustici's SCORM Cloud (cloud.scorm.com) has a free tier. Upload the ZIP there. If it plays cleanly there, the package itself is fine.
- Upload to your cloud LMS. In the LMS pick »Module → Import SCORM«. Uploads usually finish in 5–90 seconds for packages under 100 MB.
- Test the launch and completion. Open the module as a test learner. Click to the end. Confirm the LMS records »Completed« and »Score: ##«. Without that, the API hook is not talking.
Five errors that block most imports
In B2B SMB practice the same handful of problems repeat.
imsmanifest.xml is not at the ZIP root
Storyline exports a folder called My SCORM Package/ with imsmanifest.xml inside. If HR zips the whole wrapping folder, the manifest ends up one level deep. The LMS returns »Manifest not found«. Fix: select the contents of the folder, not the folder. Right-click → »Compress«.
Suspend data exceeds 4,096 characters
SCORM 1.2 has a hard limit of 4,096 characters for cmi.suspend_data. Complex simulations, multi-step scenarios, and branching quizzes routinely hit the ceiling. The LMS does not raise an error — the function silently returns false, and part of the learner's progress is lost. If a package has branching logic, export it as SCORM 2004 (64,000 characters). For the wider context see SCORM 1.2 or xAPI.
Mixed content (HTTP inside an HTTPS LMS)
Older packages pull images or video over http://. A modern cloud LMS runs on HTTPS. The browser blocks mixed content. The result is a blank page or missing media. Fix: in the authoring tool, switch every external URL to https://, or bundle the media into the package.
Files too large for the upload limit
Most cloud LMS engines reject packages above 500 MB, or the upload stalls past two minutes. Optimise images (WebP instead of PNG), drop video bitrate to 1 Mbps, and delete unused assets. A typical onboarding module needs no more than 50 MB.
Missing or wrong API hook
A SCORM 1.2 module talks to the LMS through the window.API object. If the module's iframe cannot find the object, completion is never recorded. This is rarely an HR problem — more often an LMS bug. Test: open the browser developer console (F12). If you see »LMSInitialize: API not found«, file a ticket with your LMS vendor.
Example 1: a 40-person retail company
A B2B retail company bought 12 SCORM 1.2 packages on GDPR and sales skills from a regional vendor. HR uploaded the first package — blank page. Three problems showed up at once:
- The file »GDPR_Basics (v2).zip« contained another ZIP inside (double-zipped).
- imsmanifest.xml referenced
http://old-cdn.example.com/logo.png(mixed content). - The package weighed 280 MB because of uncompressed 1080p video.
After one cleanup day — unzipped, validated on SCORM Cloud, re-encoded video to 720p WebM — all 12 packages imported cleanly. Total effort: four hours. Without the cleanup the support backlog would have stretched into weeks.
Example 2: a 120-person services agency
A services agency migrated from an old on-premise LMS to a cloud product. They had 28 SCORM 1.2 packages built in iSpring Suite across five years. The import surfaced three patterns:
- Six packages exceeded the 4,096-character suspend data ceiling (complex simulations).
- Four packages still relied on Flash components — no modern browser plays them.
- Eighteen packages imported with no issue.
What happened next: the Flash four were rebuilt from scratch in HTML5. The six branching packages were re-exported as SCORM 2004. The remaining 18 went in as is. Total effort: three weeks for HR (one person) and one week for a content specialist. Completion rate jumped from 62 % to 84 % after migration — a modern cloud LMS renders modules on phones, the old one did not.
When SCORM 2004 beats SCORM 1.2
More than 70 % of the existing corporate catalogue still ships as SCORM 1.2. That is not an accident:
- Almost every cloud LMS supports it natively.
- The ZIP construction is simpler.
- For most compliance content (GDPR, occupational health, data protection) the 4,096-character suspend data is plenty.
Reach for SCORM 2004 when:
- The module has branching logic (more than ten distinct end states).
- You need separate »completion« and »success« flags (finished, but failed the test).
- The content needs more than 4,096 characters of suspend data.
cmi5 and xAPI are options only if you already run a Learning Record Store and have development capacity. For 95 % of SMB cases, stay on SCORM 1.2.
A short close
SCORM import is not magic — it is checking three things: a clean ZIP, the manifest at the root, and a working API hook. A modern cloud LMS such as Mentor imports a well-built package in minutes, not hours, and tracks completion without manual exports. Start with one package, validate it on SCORM Cloud, and only then migrate the rest of the catalogue.
