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. 


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. 


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

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.

Alicia is our content marketing manager who captivates audiences by providing comic relief to the eLearning standards. She wrote the cmi5 Best Practices Guide and writes about eLearning in presentations, blogs and articles regularly. Every year, she volunteers as a reporter for the Daily Dragon and is often found volunteering at a therapeutic equestrian center.