19th Ave New York, NY 95822, USA
Understanding SCORM-LMS Communication

A basic introduction on how LMS and SCORM interact with each other.

Understanding SCORM-LMS Communication: The Basics

Short Description:

SCORM (Sharable Content Object Reference Model) is a widely-used set of technical standards for e-learning software products. Its main purpose is to ensure that online learning content and Learning Management Systems (LMS) can communicate seamlessly. Understanding how this communication happens is key to designing and troubleshooting SCORM-compliant content. This article breaks down the fundamental mechanisms behind SCORM-LMS interactions.


SCORM and LMS are increasingly being adopted by companies across various industries to deliver, manage, and track employee training programs. This growing reliance highlights the importance of understanding SCORM's mechanisms, as they play a crucial role in ensuring scalable and efficient learning solutions. As organizations prioritize workforce development and compliance training, the relevance of SCORM-compliant systems continues to rise, making expertise in this area essential for e-learning professionals.
Image which symbolizes the communication between child and parent window.

 

SCORM Basics: The Package and the LMS

A SCORM package typically consists of HTML, JavaScript, multimedia, and manifest files, zipped together in a standardized format. When uploaded to an LMS, the LMS unpacks the SCORM content and launches it in a web browser.

Here's how communication works:

Parent-Child Window Relationship:

  • The SCORM content is usually launched in a new browser window (child window).

  • The LMS remains active in the parent window.

  • Communication between these windows occurs via JavaScript.

SCORM Runtime Environment:

  • The SCORM runtime is responsible for managing interactions between the content and the LMS.

  • This runtime relies on a JavaScript API provided by the LMS.

Key Components in SCORM-LMS Communication

There are several Key Components involved in the communication between the Learning Management Software (LMS) and the SCORM Package.

The SCORM API

At the heart of SCORM-LMS communication is the SCORM API. When a SCORM package is launched, it searches for this API in the parent window to establish a connection. However, in a usual browser session are multiple windows open at once. Therefore, the child windows (running the SCORM package) needs to discover, which is the correct parent window. This is done in a so called “API Discovery”.

API Discovery

The SCORM package executes a JavaScript function to locate the API, typically using a looping mechanism to traverse window objects until it finds the API instance.

Browser Functionality Used: This search relies on JavaScript’s window object and its properties, particularly parent and top. The parent property points to the immediate parent of the current window, while top refers to the highest-level window in the hierarchy. By navigating these properties, the child window can locate the parent window where the SCORM API resides.

Whatever, now we know about our parent window, but what is the next step? How can we transmit the SCORM status to the LMS? Let me introduce the SCORM API.

SCORM API versions and differences

SCORM has evolved through different versions, each with its own features and command sets. The most commonly used versions are:

SCORM 1.2 (Link to official docs)

    • Introduced the basic structure for API communication.

    • Limited data model, but widely adopted for its simplicity

SCORM 2004 (Link to official docs)

    • Enhanced with sequencing and navigation rules.

    • Expanded data model and improved error handling.

    • Defines multiple editions, with 4th Edition being the most feature-complete.

SCORM is built upon several standards:

  • IEEE Standards: Used for defining metadata and packaging formats.

  • XML Standards: For organizing and structuring manifest files.

  • JavaScript API: For runtime communication.

These standards ensure interoperability and consistency across different e-learning platforms and content.

It is essential that the child window (SCORM Package) communicates with the parent window (LMS). Since almost every browser has cross-origin restrictions in place you may run into several challenges when hosting SCORM packages on a different domain then the LMS.

SCORM Data Model

SCORM uses a standardized data model to track and exchange information. Examples include:

  • Learner data (e.g., cmi.learner_name, cmi.learner_id)

  • Interaction data (e.g., cmi.interactions)

  • Progress data (e.g., cmi.progress_measure)

The GetValue() and SetValue() methods are used to read and write this data.

Example Workflow: SCORM-LMS Interaction

Now you know the basics of SCORM-LMS Interactions. Here’s a typical sequence of events in SCORM-LMS communication:

Launch

Inside of the LMS the client clicks on the Launch-Button for a SCORM based e-learning. The LMS launches the SCORM content in a child window. The SCORM package starts discovers the parent window and connects to the LMS JavaScript API.

Initialize Session

The content calls Initialize() to establish the communication channel. If successful, the LMS is ready to send and receive data.

Data Exchange

During the session, the content retrieves and updates data via GetValue() and SetValue(). For example, it might update the learner’s score or mark the module as complete.

SESSION COMMIT

Periodically or at key moments, the content calls Commit() to save data to the LMS.

TERMINATE

When the session ends, the content calls Terminate() to close the communication.

Conclusion

The SCORM-LMS communication process is a robust system based on JavaScript and a standardized API. Understanding the roles of the parent-child relationship, the SCORM runtime, and the API methods is critical for developers creating or debugging SCORM-compliant content. Additionally, recognizing the differences between SCORM versions and adhering to its defined standards ensures that your content is interoperable and reliable. By addressing common challenges, you can ensure smooth interactions between your e-learning content and the LMS.

Privacy Preferences
When you visit our website, it may store information through your browser from specific services, usually in form of cookies. Here you can change your privacy preferences. Please note that blocking some types of cookies may impact your experience on our website and the services we offer.