Getting SCORM content into your LMS

Getting SCORM content into your LMS

With the first and second days of our SCORM series complete, we’re ready to dig into the good stuff. At this point, you’ll understand how to create a great SCORM compliant course with an authoring tool. And you’ve also learned how to export the course as a SCORM package. So we’ve now SCORM-ified our hard work and the content is ready to be delivered to learners. In today’s post, we’ll analyze the SCORM zip file, so hold onto your hats!

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

  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 but that are SCORM specific. These are called the SCORM API communications and logic files and are at the heart of why the package can be defined as a SCORM course. The 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 find 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, or 2004 3rd Edition, etc.
  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. That’s to illustrate that the indentifierref is important. In this case, “launch_page” links to a resource. In other words, the item has a resource, which it’s 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 possibly go wrong?!

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. (More on that in day four of this series.)
  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.

Importing SCORM content to an 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”!

With day three now complete, I hope you have a better understanding of what a SCORM package looks like.

Tomorrow

On day four, we’ll look at the magic that happens when a learner launches a course and examine how the SCORM API works with your LMS to bookmark data and track results.

Yesterday

Catch up on day two: how to use SCORM compliant authoring tools.

I have used a zip-file in combination with our LMS. It seems that it shows only a very small part of the total package.
I try to find out what is the problem and I get the impression that is a programming issue. Can I analyse that package on possible fails?
Kind regards and thanks for the reply in advance.

Marc Jansen

Hi Marc,

I hope you are keeping well and thank you for reaching out to us!

Your LMS might have some diagnostic tools to help you on the issues. For example does it have a SCORM Debugger or do you get any warnings when you import the zip file?

However, if your LMS does not have such tools, you can also consider the browser tools to help. Try the following maybe;

1. Login to your LMS via the Chrome browser.

2. Turn on the Developer Console (we want to see if any errors are in there once you launch the course, don’t worry, we won’t get you to code anything! 🙂 ). To turn that on, you can try one of the following steps:

  • Use the keyboard shortcuts. On Windows and Linux: Ctrl + Shift + J. On Mac: Cmd + Option + J.
  • Select the Chrome Menu icon, menu -> More Tools -> JavaScript Console / Developer Tools. Or if the Chrome Developer Tools are already open, press the ‘Console’ tab.

3. Refresh the page you are on, to ensure that the console is fully loaded first.

4. Now launch your course and let it load up. If you have any errors on the course (e.g. tracking issues, failing to load resources etc.) then you’ll most likely see some errors in the console that you can share with the content vendor to comment on.

I hope this helps, let us know how you get on! I’d be interested to hear if any of that does shed some light on the matter for you.

Best,
Des.

Comments are closed.