If you want the advanced tracking capabilities that xAPI provides while having the ability to launch content from an LMS, then cmi5, an xAPI Profile, is likely an option you’re exploring. Once you’re ready to make the move to cmi5, migrating your existing SCORM content may seem like a daunting endeavor. We created cmi5 course templates as part of the cmi5 CATAPULT project to provide example courseware that focuses on the technical components and exemplifies several packaging, launch and runtime cmi5 course operations.
Authoring tools
The easiest way to start migrating content is to check with your authoring tool to see if they support cmi5. If they do, you may be able to republish the existing packages as cmi5 instead of delving into the code or rebuilding the content. Even if your authoring tool offers support, the following cmi5 elements will be beneficial if you run into any errors or course behavior issues.
Notable cmi5 elements
There are a few key cmi5 concepts that are helpful to understand when migrating courses from SCORM to cmi5 or building new cmi5 courses.
Course package
The cmi5 course package is an XML file with a course structure that’s a standalone file or in a ZIP file. It includes the course structure file, links to Assignable Units (AUs) and any additional static assets, such as videos or PDFs. The cmi5 course package differs from SCORM in that it allows for remote content, can support thousands of AUs and defines the satisfaction criteria clearly.
Course structure
The cmi5 course structure is a list of AUs along with launch parameters. The course structure must, at minimum, include these required properties of the course element:
- ID: Unique course identifier.
- Title: Descriptive title identifying the course.
- Description: Course explanation.
- Publisher ID: Unique identifier for each AU and block (not the publisher itself).
Assignable Units (AUs)
Known as SCOs in SCORM, AUs are separately launchable content pieces that collect and send learner data. They include the core concepts of completion, success, score and duration. AUs are also responsible for communicating via xAPI directly with the LRS (Learning Record Store), sending and receiving messages, formatting all data according to the defined vocabularies, and indicating termination.
moveOn criteria
The moveOn criteria determines course satisfaction or if the learner met the prerequisites. Essentially, this criteria tells the LMS that the learner has completed the objective and can “move on” to the next objective.
returnURL
The returnURL redirects the learner to the LMS when they exit the AU. The cmi5 best practice is to always provide a returnURL.
cmi5 course templates
The cmi5 course templates provide examples for understanding the technical cmi5 components and do not address course design or learning content. The templates include an example course structure with sections highlighted signaling to developers or designers that they can modify them.
Adding the JavaScript Libraries
The example course templates provide JS files and a cmi5 wrapper file to copy that simplify some of the higher-level cmi5 workflows, and it’s assumed you will use all files.
Simple Single AU Template
The Simple Single AU example demonstrates the most basic content package and contains only a single AU. The LMS considers the AU “Satisfied” when the course sends either “Completed” or “Passed”. This template has bookmarking, which stores a “bookmark” at each navigation event, and incorporates a video with the xAPI Video Profile. This template is available in framed and responsive styles.
This example is ideal for migrating the most basic courses with traditional page-turner or simple video content with a quiz at the end. If you’re familiar with our golf examples, then you’ll find reviewing the Basic Runtime Calls example helpful when determining if this template fits your needs. Both templates include completed and passed information, score and minimum runtime calls.
“masteryScore”
The “masteryScore” attribute controls the course’s behavior when determining a passed or failed status. While “masteryScore” is optional, it must be used when the AU has scoring and the course structure includes a “masteryScore”. In the assessment portion, several interactions are captured as xAPI Statements. This template is also available in traditional framed and responsive styles.
This cmi5 course template is ideal for content that requires a score to determine whether the learner passed or failed and includes an assessment that must have a certain score to prompt “CompletedAndPassed” statements. Review the Advanced Runtime golf course as a similar example.
Multiple Top-Level AU
The Multiple Top-Level AU template takes the “masteryScore” example contents and spreads them across several AUs that are nested at the course structure’s top level.
The example is for more complex courses requiring a certain score and has multiple AUs. It compares most closely to the Minimum Runtime Calls in structure, but it also has advanced data, like the Advanced Runtime Data golf example.
Pre/Post Test
The Pre/Post Test example employs a course structure using blocks, and each block contains a pre-test, a content section and a post-test AU. cmi5 doesn’t specify any dependency behavior, so this example only provides an example organizational structure and satisfaction measurement for each block. It also incorporates a cmi5 Extension.
The requires extension indicates when the learner has met the moveOn requirements to access a block or AU containing the <require> tag. Extensions aren’t a core cmi5 concept, so LMSs may choose not to implement this behavior and this approach may not perform the same way on all platforms. The current cmi5 version doesn’t address sequencing, but the requires extension offers an alternative for the most common sequencing use cases.
This sample is intended for more complex courses with learning activities performed at different stages. It also serves as an example for adding cmi5 Extensions into your courses, and the structure is similar to the Minimum Runtime Calls golf example.
Helpful open source tools
- cmi.js: JavaScript Implementation of the cmi5 AU runtime.
- cmi5 Client Library: Creating cmi5 content to work with a conformant LMS.
- cmi5 AU Simulator: Simulates the AU-side and how to send cmi5 statements.
- cmi5 Profile Library: Enabling learning content to speak to learning systems.
Testing your cmi5 courses
Once your course is ready, the next step is testing in the cmi5 Content Test Suite (CTS) to ensure conformance and interoperability. Without testing, you won’t know if it’s the system or content that is causing issues, should they arise. The CTS is available for download to run locally.
As more content professionals are looking to adopt xAPI, the demand for cmi5 will continue to rise. It’s important to note that you don’t have to make the transition all at once. Identifying content pieces that you want to migrate and asking your LMS to support cmi5 are great places to start. Once you’ve started publishing cmi5 courses, you can also test them for free in SCORM Cloud. If you have cmi5 questions, reach out and ask! We’re always happy to chat about eLearning standards.