Admin GuidesAICC Content

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

  1. Open Courses, pick a course, and open the Modules tab.
  2. Click + Add module, give it a title and choose the type AICC Package.
  3. Upload the package .zip with the module’s Upload button. EmbayLMS checks that the zip is an AICC package — a .crs course file and a .au assignable-unit table sharing a base name, the .au listing at least one unit — parses the course structure, and stores it.
  4. 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:

MessageWhat 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

FileMeaning
<course>.crsThe course descriptor (INI): course id, title, AU count
<course>.auThe assignable unit table (CSV): one row per launchable unit — its launch file, mastery score, and time limit
<course>.cstThe course structure (CSV): the block → member hierarchy
<course>.desThe 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

  1. On the course player, the learner opens the AICC module. EmbayLMS prepares the launch (a signed session id AICC_SID and the HACP endpoint AICC_URL) and opens the AU in a frame.
  2. 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.
  3. Multi-AU packages show a unit picker; a green check marks each completed unit.
  4. The module completes when the AU reports passed or completed. When the package sets a mastery score, a passed status must also meet that score.

Completion flows into course progress and certificates exactly like any other module.


Configuration reference

ItemWhereNotes
Module typeCourse editor → ModulesSet to AICC
PackageUpload on the module.zip containing .crs + .au descriptors
AICC_TOKEN_SECRETPlatform 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

SymptomCause / fix
Upload refused: not an AICC package / could not be readSee If the package is not an AICC package above. The check runs on upload; nothing was stored.
Module won’t launch after an older uploadPackages 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 entryYour session predates the update — sign out and back in.
Learner finishes but the module isn’t completeThe 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 recordingConfirm the learner is actively enrolled and launched from the course player (the AU needs the AICC_SID the player provides).
”Invalid session” in the AUThe 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.