In essence, in providing an AICC HACP (HTTP/S-based AICC/Computer Managed Instruction (CMI) Protocol) interface to external LMS systems, we are providing an alternative mechanism for registering users and logging into the LMS. Via the AICC calling convention, we are provided with the interface URL and session identifier (SID) which are used to communicate with the calling LMS via HTTP. By issuing an AICC getParam call, we can readily discover the name and identification number for the user along with a block of vendor specific data which we can use to identify the learning unit to launch.

Setup1. authenticate request
2. establish session
3. establish user account if it doesn't exist
4. deliver requested activity to user account if required
5. display activity in user's browser window or display menu if entry point is a folder
Interact6. User interacts with [menu]/learning object(s).
7. User requests exit or session times out.
Tear Down8. Post back status update to calling system.
9. Issue ExitAU to calling system.
10. Close session and redirect user back to calling system if possible.

Access via the AICC interface is controlled at the licensee level and must be enabled in order to use this interface. Once access is enabled, the interface will permit access to all content licensed to the licensee.

The type of learning unit launched (aggregated content [course, lesson] versus a leaf node [topic, assessment]) will have impact on how the LMS must treat the request. When providing access to aggregated content, the LMS will provide the end user with a user interface whereby they can navigate within the hierarchy of the content, select a specific lesson, topic, or assessment, and interact with that content. In this case, the LMS will only convey summary information (overall completion and success status for the user) to the calling system. When the calling system specifically identifies a single SCO (or assessment), it is possible to provide more detailed information to the calling system.

Entry Point: /lms/aiccLaunch.aspx

Parameter NameParameter Value
aicc_sidCalling system's session identifier (mandatory)
aicc_urlURL to AICC HACP interface on calling system (mandatory)
au_idSet to the external item identifier to identify the activity requested.

(This is an optional URL parameter)
au_entry_point_idAn optional parameter which allows the external LMS to direct the user to a particular item within the activity tree identified by the au_id value. If it is not supplied, the au_entry_point_id is set to the au_id.

If this id is specified, the user is not permitted access to higher level items in the specified activity tree. Status information sent back to the LMS will be for the au_entry_point_id item.

(This is an optional URL parameter)
licensee_login_idIdentifies the licensee. (This is an optional URL parameter)
return_urlURL to redirect user to upon exit from the learning object. (optional)
cmi_versionCMI version (for instance, "3.5") desired by the external LMS. (optional)
close_window_on_exitFlag ('y' | 'n') indicating if the browser window should be closed on end of the AICC session. By default, the window will be left open. (optional)

Format of the score information reported to the calling LMS in the Core.Score data element (see AICC CMI Specification section 2.1.10).  Currently, only "relative" and "integerPercent" values are accepted.

The (default) "relative" format means a set of scores is reported: a raw score, optionally followed by the maximum and minimum score achievable (if known). Note that these scores may be integer or decimal values.

The "integerPercent" format means only one score value is reported and is an integer percentage value from 0 to 100. This is done by taking the scaled score, multiplying it by 100, and then rounding it off to the nearest integer value.

(This is an optional URL parameter)

The au_id and licensee_login_id parameters must be supplied in order to gain access to the LMS, either as part of the Core Vendor data block or as URL parameters. The preferred method is to provide the au_id, au_entry_point_id, and licensee_login_id as part of the Core Vendor data block. Core Vendor data is retrieved from the external LMS via the AICC get parameter call which is more secure than URL provided parameters.


  1. The AICC interface requires that the calling LMS supply a unique identifier for each student using the system.
  2. The au_id and au_entry_point_id parameter values must be URL encoded if specified in a URL call. If they are specified in the Core Vendor data block, they should not be encoded.

HACP Message Types and Data Elements Supported

The LMS AICC interface to external LMS systems uses the following HACP message types:

  • GetParam
  • PutParam
  • ExitAU

The following core data elements are consummed by the interface:

  • Core.Student ID [the LMS supports a maximum length of 255 characters; this ID must be unique within the given licensee]
  • Core.Student Name [the interface parses the name into first and last name and supports up to 40 characters for each name]
  • Launch Data (Core_Vendor) [contains data identifying the assignable unit within the LMS]
  • Core.Entry [determines whether the LMS starts the assignable unit as a new attempt or resumes an existing attempt]
  • Core.Lesson Status
  • Suspend Data (Core_Lesson)

The interface updates the following elements:

  • Core.Lesson Status
  • Core.Exit
  • Core.Score [when score information is available for the the unit]
  • Core.Session Time [excludes the timeout period in the case where an assignable unit is terminated due to inactivity for a period exceeding the time out interval]
  • Suspend Data (Core_Lesson) [the LMS stores information here so that it can resume an existing attempt at an assignable unit]