Skip to main content
All CollectionsMaterials
SCORM Best Practices
SCORM Best Practices

This article describes the best practices for SCORM 1.2 packages when creating them for use in SkyPrep.

Stephen Krzeminski avatar
Written by Stephen Krzeminski
Updated over a week ago

A SCORM package is an extremely versatile tool in a content author's arsenal, with support for multimedia, interactive activities, advanced assessment tools, and more β€” all in a self-contained course.

There are many different programs and tools that can be used to create a SCORM package, including Articulate, and Captivate. While every tool has its own process for creating SCORM content, there are a few things to keep in mind that are common between all of them, or are specific to SkyPrep.

SkyPrep supports SCORM 1.2 and 2004: The two most common formats are SCORM 1.2 and SCORM 2004. SkyPrep supports both.

The imsmanifest.xml file: This file is the heart of your SCORM package and must be located in the root of your SCORM package folder. Similar to an index, the imsmanifest.xml file documents all of the content contained within the SCORM package and tells the LMS how to open and run the package. Within this file, there are a couple things to pay attention to:

  • schema: The schema should display ADL SCORM, and the schemaversion should display SCORM 1.2 or SCORM 2004.

  • title: The title should be limited to standard characters, such as letters, numbers, and hyphens. Avoid special characters such as & or %.

Time requirements: If you require a minimum viewing time for your content, this will need to be set within the SCORM package and not within SkyPrep.

  • When the package is launched, the total_time variable is activated, starting at 0.

  • As a learner works through the package, the session_time variable tracks the time spent in the package during the current active session.

  • When a learner exits the package, the session_time is added to the total_time.

  • When a learner resumes the package, a new session_time is tracked, and upon exiting, it is added to the existing total_time to reflect the new time spent within the package.

  • You can use the GetPreviouslyAccumulatedTime() call to pull the total amount of time spent in the package and use the returned value to determine if a user has completed the package. The returned value will be displayed in milliseconds.

Testing package behavior: If you want to test your package to see whether it works and/or how it functions, we recommend uploading it to SCORM Cloud. This is a free service as long as you stay within the allowed number of uploaded packages. You can delete previously uploaded packages from the service to free up space.

Marking SCORM package as Completed: In order for SkyPrep to determine whether a package has been successfully completed, the cmi.core.lesson_status variable needs to be updated. We look for either completed or passed. If either of these two statuses are found, we will mark the package as complete. It is important to only change this value if the entire package is completed β€” do not update this based on the completion status of an individual SCO or assessment within the package. Additionally, once a package has been marked as completed or passed, SkyPrep will not change the completion status displayed in the LMS even if it is changed to failed or incomplete within the SCORM data.

Package completion based on percent viewed: If you are using the percentage viewed as a passing metric, it is important to take into account all branching paths and hidden slides.

  • If a user can go down either Path A or Path B based on a choice they make within the course, they will never achieve a percent viewed value of 100% unless they are given the option to view both paths. You will need to either remove the branching paths or modify the required percentage to account for the different paths.

  • "Hidden" slides, such as slides that only appear if a user clicks on a Learn More button, are still counted as being part of the total number of slides. Unless a user is required to click on all buttons that link to new slides, it is important to take them into account and change the requirement accordingly.

Global vs. Per-Course-Progress SCORM scoping in SkyPrep: SkyPrep supports two different methods of saving SCORM progress and completion data, Global and Per-Course-Progress. These are set in the course module settings area. Both of these settings refer to the behavior when the same SCORM package is contained in different SkyPrep courses.

  • Global: SCORM packages that have their scoping set to Global will share progress and completion data between courses in SkyPrep. For example, if a learner completes a package in Course A, the package will also be completed in Course B without the learner having to redo it. This is the default behavior.

  • Per-Course-Progress: If this option is selected, the SCORM progress is isolated from all other instances β€” it will be treated as a brand new package and its completion will not affect the status in other courses that contain it, regardless of whether the other instances are set to Global or Per-Course-Progress.

Resume behavior: While a learner works through a course, the SCORM package is constantly saving compressed information about the current state of progress, including information about their responses, navigation history, interactions, and more. This information is called the suspend data and when a user exits the course, this data is used to keep their place in the course. When the package is opened again, the package sends the data over to the LMS to allow the learner to resume from where they left off. However, you can choose whether the resume data is used.

  • Prompt to Resume: This option gives learners the choice to choose whether they resume from where they left off or start from the beginning, usually via a prompt or pop-up.

  • Always Resume: With this option, a learner will always resume from where they left off.

  • Never Resume: Enabling this option will force a learner to start from the beginning of the package.

SkyPrep's completion fallback: The package should call LMSCommit or LMSFinish when a package is completed. However, SkyPrep will automatically save the SCORM data as soon as cmi.core.lesson_status is set to either completed or passed, even without either of the calls being explicitly made. This should only be used as a safety net and should not be relied on as the primary means of recording completion.

  • LMSCommit: This tells the LMS to send all of the data saved in the browser to the LMS server.

  • LMSFinish: The same as LMSCommit but with the added functionality of closing the current session.

Did this answer your question?