6 min reading time

How To Upload SCORM Content into Your LMS

Creating and exporting a great SCORM compliant course with an authoring tool is one skill. But adding it to your LMS is another. To ensure the process goes seamlessly (and you don’t pull your hair out due to a simple error), we’re going to walk you through the process of getting your SCORM content into your LMS.

After you export your SCORM file

We’ve written in the past about how to use SCORM compliant authoring tools. It outlines everything, including exporting your SCORM file. But what happens next?

When you export your course to a SCORM format, two important things occur:

1. Your authoring tool creates a SCORM zip file. That zip contains all of the media files that enable learners to view and navigate your course online, including text, imagery, video, CSS, and quiz content. If your authoring tool has done its job correctly, the contents of the zip will be neatly separated into folders and files that reflect the content of your course.

2. While you now have a zip file, two things in particular define it as a ‘SCORM’ zip:

  • Inside the zip is a file called imsmanifest.xml. This manifest file specifies the contents of the zip. For example, an aircraft’s manifest file would detail the names of passengers, where they’re seated in the aircraft, the weight of the cargo in the hold, and a wealth of other information about the aircraft and its “contents”. The imsmanifest.xml serves a similar purpose – it details the contents of the zip package – but we’ll get into the nitty gritty of why that matters later on.
  • Your authoring tool will also have included files that it didn’t create that are SCORM specific. These are called the SCORM API communications and logic files, they’re at the heart of why the package can be defined as a SCORM course. These files allow your course to communicate with a SCORM compliant LMS that understands the same SCORM protocols.

Here’s a screenshot of typical zip contents that have been opened for viewing:

Day 3. Getting SCORM content into your LMS

Three takeaways from this screenshot:

1. The screenshot shows the imsmanifest.xml file sitting in the root of the SCORM package zip.

2. This is an accurate but simple example of the folders and structure of a SCORM zip. Complex courses could contain many folders and additional folders within this hierarchy.

3. In this simple example of a SCORM course, the screenshot shows the contents of a “Playing” folder – marked 2 in the screenshot. As you can see, there’s nothing particularly ‘SCORM’ about it. It’s just a folder containing html, images, and javascript files, which means it contains online content that can play in a browser to be viewed by learners. As those with experience of SCORM and the Rustici Golf course will know, the “shared” folder contains all the SCORM API magic that allows the course to communicate with an LMS when it’s launched. The imsmanifest.xml coupled with that “SCORM API magic” is what makes this zip a SCORM package. You can download the zip file for this sample course here and explore as you need. This particular SCORM package was copied from the Rustici Golf example you can find here. And you can explore a number of other examples here.

The manifest

Remember that the zip file contains an imsmanifest.xml file. One important point to note is that the manifest must exist in the root of the zip file, and nowhere else. When your LMS tries to import SCORM content, it will look for the manifest in the root of the zip file. If the manifest isn’t there, the file goes against SCORM specifications. That can cause a lot of confusion for SCORM creators as an LMS won’t import the zip files.

As the imsmanifest.xml name suggests, the file is in XML format. The XML file will look something like the example below. The file contains key information for your LMS to interpret. While we’ll discuss some of these now, it’s worth noting that this is a basic example. It contains just a single module and enough sample files to illustrate our discussion points. In reality, a course could contain hundreds of entries in the manifest.

SCORM course content and your LMS

Six takeaways about the manifest:

1. Schema: The manifest should contain this information to record which “SCORM schema” is being used. This will typically be ADL SCORM.

2. Schemaversion: This tells us which version of the SCORM specification the course is compliant with. In this example, the relevant version is 1.2 but the schemaversion could also specify 2004 2nd Edition, 2004 3rd Edition, or another edition.

3. Items: These are effectively the modules for your SCORM. While SCORMs can contain multiple modules, one is most common. In the above example, I’ve drawn an arrow from point 3 to point 6 to illustrate the importance of the indentifierref. In this case, “launch_page” links to a resource. In other words, the item has a resource, which is linked to by the id launch_page. That resource defines what type of item it is and where the content for the module is located. I’ll describe that in detail a little later.

4. Title: This defines the title of the module. In our example, that’s “LearnUpon – SCORM Series, Day 3”. In real world examples, you’ll often encounter multiple items, each with their own titles.

5. MasteryScore: This element defines a passing score for the module. If your module includes a quiz, you may have set a passing score – but not every SCORM course includes a quiz and not every quiz has a passing score. Knowledge checks and practice quizzes typically won’t have a masteryscore, for example.

6. Resource: One important type of resource (as explained in point 3) is a “sco”, defined by the attribute adlcp:scormtype. A “sco” is what’s called a launchable resource. That means it’s a module learners can launch, view and complete in a browser. You’ll note that this resource has an href attribute, of “module1/start.html”. That tells your LMS – “When a learner launches this module, open the page module1/start.html for them”. In other words, it’s how the starting page of your module is defined.

What could go wrong with your SCORM file?

While a manifest file looks simple once you break it down into its various parts, things do go wrong. Common issues include:

1. Some authoring tools don’t “XML Escape” files correctly. If your course title contains a symbol like “&”, that can cause breakages in some authoring tools, especially in older versions.

2. The manifest doesn’t state the SCORM version. For example, the manifest might specify a SCORM 2004 course, while your LMS reads the content as a 1.2. Or the manifest could define a SCORM 1.2 course and your LMS might not support that version of the specification. That’s why it’s essential to ask your LMS provider which versions of the SCORM specification they support before exporting course content to a SCORM package.

3. If your course has no adlcp:scormtype defined, then your LMS can’t determine which page to launch, as your course has no starting point.

4. If your course includes a quiz but has no mastery score defined, then the pass/fail determination can also break. (You can read more about that here).

5. One serious issue could be that your zip file doesn’t have a manifest. Or the manifest may be located somewhere outside of the root, possibly embedded deep in the zip file or located in a folder a level deeper into the zip.

How to upload a SCORM file to your LMS

While importing SCORM content is often a laborious process, it should be simple. To import a SCORM course into your LMS, you will usually:

1. Upload the SCORM zip file, via your browser or LMS administrator UI. For example, to add a SCORM module to a course in LearnUpon, you simply click a button.

2. Your LMS will then attempt to find the manifest file and import its contents, preparing it for use by learners. A good LMS will attempt to validate the manifest and flag potential issues. For example, if no manifest file was found, the LMS would notify you of the specific issue rather than saying something vague like: “Failed to upload your file, please contact your administrator.”

And that’s it!

Related posts