AICC Content
Who this guide is for: Tenant administrators who upload and manage AICC (HACP) course packages in EmbayLMS.
AICC is a legacy e-learning packaging standard still produced by many authoring tools and industrial-training vendors. Unlike SCORM (which talks to the LMS in the browser) or cmi5 (which reports xAPI statements), an AICC Assignable Unit (AU) communicates with the LMS over HACP — HTTP form POSTs to a single endpoint. EmbayLMS includes a built-in HACP endpoint, so AICC packages work out of the box.
Uploading an AICC package
- Open Admin → Courses, pick a course, and open the Modules tab.
- Add a module and set its type to AICC.
- Upload the package .zip. EmbayLMS detects the AICC descriptor files inside the zip (
.crscourse file +.auassignable-unit table), parses the course structure, and stores it. (A zip withcmi5.xmlis treated as cmi5; one withimsmanifest.xmlorCSF.xmlis treated as SCORM.) - Publish the course version.
The package is virus-scanned and its files are served from the same content pipeline as SCORM.
What an AICC package contains
| File | Meaning |
|---|---|
<course>.crs | The course descriptor (INI): course id, title, AU count |
<course>.au | The assignable unit table (CSV): one row per launchable unit — its launch file, mastery score, and time limit |
<course>.cst | The course structure (CSV): the block → member hierarchy |
<course>.des | The descriptor table (CSV): human-readable titles for each unit |
The four files share a base name (e.g. course.crs, course.au, course.cst, course.des). The .crs and .au are required; .cst and .des are optional.
How learners take it
- On the course player, the learner opens the AICC module. EmbayLMS prepares the launch (a signed session id
AICC_SIDand the HACP endpointAICC_URL) and opens the AU in a frame. - The AU reads its resume state (
GetParam) and reports progress (PutParam) back to the built-in HACP endpoint as the learner works — lesson status, bookmark location, score, and suspend data all persist across sessions. - Multi-AU packages show a unit picker; a green check marks each completed unit.
- The module completes when the AU reports
passedorcompleted. When the package sets a mastery score, apassedstatus must also meet that score.
Completion flows into course progress and certificates exactly like any other module.
Configuration reference
| Item | Where | Notes |
|---|---|---|
| Module type | Course editor → Modules | Set to AICC |
| Package | Upload on the module | .zip containing .crs + .au descriptors |
AICC_TOKEN_SECRET | Platform env (optional) | Signs AU session ids; falls back to NEXTAUTH_SECRET |
There is no external system to set up — the HACP endpoint (/api/v1/aicc/hacp) is built in and authenticates each AU with a per-session signed token.
Troubleshooting
| Symptom | Cause / fix |
|---|---|
| Upload accepted but the module won’t launch | The zip may not contain the .crs + .au descriptor pair at a consistent base name. Re-export from your authoring tool as an AICC package. |
| Learner finishes but the module isn’t complete | The AU must report passed or completed. If the package has a mastery score, a passed must also meet it — check the unit’s reported score. |
| Progress isn’t recording | Confirm the learner is actively enrolled and launched from the course player (the AU needs the AICC_SID the player provides). |
| ”Invalid session” in the AU | The session id expired (12h) — reopen the module to get a fresh launch. |
Standards note
EmbayLMS supports SCORM 1.1, SCORM 1.2, SCORM 2004 (2nd–4th editions), cmi5, and AICC (HACP). Pick the format your authoring tool exports; all report progress into the same course-completion and certificate pipeline.