meta data for this page
SCORM & xAPI Troubleshooting
SCORM Package Doesn't Show as Complete
Check 1 — The package calls Finish/Terminate
SCORM 1.2 packages must call LMSFinish(“”) before closing. SCORM 2004 packages must call Terminate(“”). If the package closes the window/tab without calling these, the completion is never committed.
Check 2 — Completion status vs success status
LEAST tracks cmi.core.lesson_status (SCORM 1.2) or cmi.completion_status + cmi.success_status (SCORM 2004). If the package sets passed but not completed, LEAST may not mark the material complete depending on configuration. Contact your educator to check the completion trigger setting.
Check 3 — Third-party cookies
The SCORM iframe communicates with LEAST via JavaScript postMessage. If the browser blocks cross-origin frames, the SCORM API bridge may not initialise. Ensure the SCORM content domain is allowed in browser settings.
Check 4 — Package hosted on HTTP, LEAST on HTTPS
Mixed content (HTTP content in an HTTPS page) is blocked by browsers. Ensure the SCORM package URL is HTTPS.
SCORM Score Not Saving
LEAST saves cmi.core.score.raw (SCORM 1.2) or cmi.score.raw (SCORM 2004). Verify:
- The package is setting the score field before calling Finish/Terminate
- The score field name matches the SCORM version (1.2 vs 2004)
- Debug: open the browser console during a SCORM session and look for postMessage calls — you should see
LMSSetValuecalls with score data
xAPI Statements Not Appearing in LRS
- Check Admin → xAPI Settings — verify the LRS endpoint, username, and password are correct
- Test the LRS connection from the settings page
- Statements are dispatched asynchronously via the cron worker — they may be delayed by up to the cron interval (usually 5 minutes)
- Check the cron log (Admin → Cron Schedules) for xAPI dispatch job errors
cmi5 Package Not Launching
cmi5 requires the launch URL to include fetch and activityId parameters. LEAST passes these automatically. If the package fails to launch:
- Confirm the package's
cmi5.xmllaunch URL is correct - Check the package is not expecting additional custom parameters
- Review the browser console for the fetch URL request — it should return a JWT token