You’re using an older browser version. Update to the latest version of Google Chrome, Safari, Mozilla Firefox, or Microsoft Edge for the best site experience.

SCORM structure and interaction with an LMS

PRODUCTS:   Suite,   Converter Pro,   Presenter,   Pro

Figuratively speaking, SCORM is a “language” used by a learning course to “talk” to an LMS and submit a learner’s results. It also describes the structure of a course. What data is being transmitted and how does a learning system decide if a course is passed or failed? Let’s unveil the communication mechanism.

iSpring SCORM course structure

In SCORM terminology, a course item is called an SCO (Sharable Content Object). An iSpring course is always a single SCO that is stored in a .zip content package.

Asset - HTML and Flash elements. SCO - a yellow box that includes Asset. Aggregation - a green box that includes SCOs. Organization - a purple box that includes Aggregations.

As shown in the picture above, there are several organizational levels in SCORM:

  • Asset. The smallest particle of a course: an HTML page, image, mp3 audio, Flash quiz as an .swf file, etc.

  • SCO (Sharable Content Object). Includes assets and uses the SCORM API to report completion.

  • Aggregation. A set of SCOs; e.g., “Pharaohs in Egypt”, which includes all SCOs that tell about pharaohs.
    Note: This level is out of iSpring’s field. Use third-party Aggregation software if you need to aggregate several iSpring SCOs. See how it’s done on YouTube.

  • Organization. A higher level that includes Aggregations. Usually represents the whole class; e.g., “History of Ancient Egypt”.

  • Curriculum. Connects several SCORM classes into a learning path. This functionality should be provided by an LMS.

All SCORM content is placed within a “content package.” A content package is a .zip file that contains everything needed to deliver content to learners, and is ready for uploading to an LMS.

Test Learning content package created with iSpring. It contains imsmanifest.xml res folder (resources) and other files.

See how to create a Content Package with iSpring →

Note: An iSpring tool may produce two types of resources: Flash and HTML5. It doesn’t matter to the LMS what type of content is placed in a .zip package, because the SCORM API is the same.

Course reporting to an LMS

An iSpring SCO uses the SCORM API Runtime environment to communicate with an LMS.

After the course is completed by a learner, an LMS shows the result. Also, some Learning Systems provide detailed information that shows time spent on each slide, answers to questions, etc.

This is a snapshot of an iSpring SCORM course completion report from LMS:

22.73% score and a failed status.

Difference in SCORM 1.2 and 2004 reporting

Let’s go to the SCORM creators at Rustici Software for the clearest answer:

“In SCORM 1.2 a single element, cmi.core.lesson_status represents the SCO’s status. In SCORM 2004, status is broken down into two separate elements, cmi.completion_status (completed vs incomplete) and cmi.success_status (passed vs failed).”

Check out the full overview of SCORM Runtime Environment. For more details and discussion on reporting, read Tim Martin’s post on the Rustici Software Blog.

How SCORM 1.2 sets completion and success status

Based on completion status (slide views) and success status (overall quizzes score), a SCORM 1.2 course submits a single value to an LMS, represented in a percent value (e.g., 85). It determines the overall lesson status, which is set to a binary of Passed/Failed by default.

iSpring lets you choose other pairs of statuses:
(iSpring Publish -> LMS -> Learning Course tab -> Type: SCORM 1.2)

Report status to LMS as: Passed/Failed, Complete/Incomplete, Complete/Failed, Passed/Incomplete.

These options can be employed when you don’t want your LMS to show a “Failed” status to a student who simply hasn’t finished viewing a course yet.

Note: Be careful with hidden slides and custom Slide Shows in PowerPoint that might not be accessed by a learner. In this case, a learner can never reach 100% completion, even if all visible slides have been viewed.

SCORM 1.2 Data Model:

cmi.core.lesson_status (“passed”, “completed”, “failed”, “incomplete”, “browsed”, “not attempted”).

In the iSpring publishing interface, the following settings in the Learning Course tab will determine this status:
iSpring Learning Course tab, Report Progress and Completion conforms to cmi.core.lesson_status

If you don’t check any of these activities, a score in percent won’t be sent, but the status will become Passed as soon as a learner opens the course. There will be similar behavior if a SCORM SCO contains a video or a text file that is required for viewing.

How SCORM 2004 sets completion and success status

In SCORM 2004 the reporting procedure has been improved, so two independent values are submitted: completion (slide view progress) and success (cumulative score of all quizzes). It makes a learner’s statistics more clear.

SCORM 2004 Data Model:

cmi.completion_status (“completed”, “incomplete”, “not attempted”, “unknown”) Indicates whether the learner has completed the SCO.

cmi.success_status (“passed”, “failed”, “unknown”) Indicates whether the learner has mastered the SCO.

In the iSpring publishing interface, the following settings in the Learning Course tab will determine these statuses:
iSpring Learning Course tab, Report Progress and Completion conforms to cmi.completion_status and cmi.success_status

Here, a learner has to view all 6 slides in order to have a positive cmi.completion_status. If a learner has viewed all 6 slides but hasn’t passed the quiz, cmi.completion_status will be Completed but cmi.success_status will be Failed.

If you need more information on these statuses, you may also check out this very descriptive infographic from the SCORM User Guide for Programmers:
Snapshot from SCORM User Guide for Programmers. cmi.completion_status cmi.success_status

Generating LMS reports for SCORM 1.2 and 2004 courses

How does it look from an LMS admin’s standpoint after a learner has started both of the SCORM courses and has taken part of the quiz? This is a snapshot of SCO reporting from a SCORM-compatible LMS:
Image shows the difference in SCORM 1.2 and 2004 status descriptions in an LMS.

Display of SCORM completion data also depends on the particular LMS. It may be different in your LMS.

Although SCORM 2004 uses two independent statuses, it still has to come up with the Overall Status of the course, which usually looks like success_status: Passed or Failed.

Check how the Passing Score and the Overall Status is calculated in an iSpring SCORM SCO →

Resume in a SCORM course

iSpring takes good care of storing a learner’s progress in any third party LMS. This concept is sometimes called bookmarking.

The score is submitted to the LMS at the end of the course or at an interruption point, for example if you close your Web browser. If a SCORM SCO is interrupted, the learner’s progress is saved by means of the LMS (in cmi.suspend_data). When an iSpring course is being taken, it saves the progress every 15 seconds (LMSCommit), and on every user action:

  • Advancing a slide in the presentation

  • Answering a quiz question

  • Closing the browser window

Read more about the SCORM API methods that are used in different SCORM versions.

Resume in SCORM 1.2 Data Model:

LMSCommit( “” ) : bool – Indicates to the LMS that all data should be persisted (not required).

cmi.suspend_data (CMIString (SPM: 4096), RW) Provides space to store and retrieve data between learner sessions.

Scratchpad Memory (SPM) for suspend_data in SCORM version 1.2 is just 4096 bytes (4 KB). This amount of memory can store up to 4096 UTF-8 characters. Sometimes this is not enough to capture the entire completion data history of a single learner throughout the course.

Note: It also depends on the LMS how much information can be saved in suspend data. Some vendors apply a trick and remove this 4 KB limitation (e.g., Blackboard), but others still have this limit applied (e.g., Moodle).

Therefore, iSpring compresses cmi.suspend_data for SCORM courses to make it fit the 4 KB limit, so resume will work in any LMS. If your LMS allows you to check this variable (e.g., in the Report section) it will be in an encoded format (Byte64) and can’t be read by a human. However, you can try ☺

Fragment of an LMS log that shows Base64 encoding of the cmi.suspend_data

Resume in SCORM 2004 Data Model:

Commit( “” ) : bool – Indicates to the LMS that all data should be persisted (not required).

cmi.suspend_data (characterstring (SPM: 64000), RW) Provides space to store and retrieve data between learner sessions.

Although SCORM 2004 Scratchpad Memory is fairly ample (64 KB), iSpring still compresses suspend data as it does in SCORM 1.2.


Refer to the full SCORM Run-time reference to access the full list of definitions in SCORM interactions:

SCORM User Guide for Programmers:

This tool can be used for testing content packages in a SCORM Runtime Environment on your computer:

Logging the launch of an iSpring Test Learning Course with Trident Runtime Environment.

It looks like you just got 100% completion of the “SCORM understanding” course!

See also:

Related Articles

iSpring Suite 11.3

Fully-stocked eLearning authoring toolkit for PowerPoint. No training required to start!