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 Courses, pick a course, and open the Modules tab.
- Click + Add module, give it a title and choose the type AICC Package.
- Upload the package .zip with the module’s Upload button. EmbayLMS checks that the zip is an AICC package — a
.crscourse file and a.auassignable-unit table sharing a base name, the.aulisting at least one unit — parses the course structure, and stores it. - Publish the course version.
If the package is not an AICC package
The upload is refused before anything is stored and the module says why:
| Message | What it means |
|---|---|
This is not an AICC package: it needs a .crs course file and a .au assignable-unit file with the same base name (.cst and .des are optional). | You uploaded a SCORM, cmi5 or plain-content zip, or the descriptors are missing / named inconsistently. Re-export from your authoring tool as AICC — or, if the file really is SCORM, change the module type to SCORM Package. |
The AICC descriptors (.crs / .au) could not be read, or the .au file lists no assignable unit. | The descriptor pair is present but malformed or empty. The .au is a CSV with a header row and one row per unit; it needs at least one unit with a File_Name. |
A refused upload leaves nothing behind — no asset, no file — so you can simply upload again.
An AICC zip uploaded to a SCORM Package module still works: the module is reclassified as AICC on upload. Choosing the right type up front is what gives you the checks above.
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 refused: not an AICC package / could not be read | See If the package is not an AICC package above. The check runs on upload; nothing was stored. |
| Module won’t launch after an older upload | Packages uploaded before 2026-09-10 were not checked on upload. Re-upload the package: the check now runs and tells you what is wrong. |
| The type picker has no AICC Package entry | Your session predates the update — sign out and back in. |
| 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.