How to update a SCORM course safely

How to update a SCORM course without breaking learner progress: small fixes vs structural changes, replace or new version, and testing resume first.

Why can updating a course break progress?

To update a SCORM course safely, match the method to the change. A typo fix can usually replace the content in place. A structural change — pages added, removed or reordered — can break resume for anyone part way through, because their saved bookmark and suspend data describe the old course. Decide which case you are in before uploading.

The underlying reason is that the LMS stores the learner's state, but only the content understands it. cmi.core.lesson_location in SCORM 1.2 (cmi.location in 2004) and cmi.suspend_data are strings the course wrote in its own format: a page number, a slide ID, a list of answered questions. The LMS hands those strings back on the next launch without knowing what they mean. If the new version of the course reads them differently, resume goes wrong.

LMSs also differ in how they treat a re-uploaded package. Some swap the files and keep every learner record attached. Some create a new version and start new attempts. Some ask you to choose. The same zip can therefore have very different effects depending on the platform and the option you pick.

Small fixes vs structural changes

Sort the update into one of two groups before anything else.

Usually safe to replace in placeRisky for in-progress learners
Correcting text, typos and captionsAdding, removing or reordering pages or slides
Swapping an image or video for one of the same roleAdding or removing quiz questions
Fixing styling or layoutChanging the passing score or completion rule
Fixing a broken linkSplitting one SCO into several, or merging SCOs
Republishing from a different authoring tool or a new tool version

The last item surprises people. A new version of an authoring tool can change how it formats suspend data even when the course content is identical, so treat a tool upgrade as a structural change until you have tested resume.

Replace in place or upload a new version?

For small fixes, replacing the content in place is usually right. Learners keep their records, in-progress attempts continue, and nobody has to start again. Check that your LMS's replace option really keeps existing attempts attached; the wording varies between platforms.

For structural changes, you have two reasonable choices:

  • New version for new attempts only. Learners who have finished keep their completion. Learners in progress either finish on the old version or are moved to the new one with a fresh start. Many LMSs support this through their own versioning feature.
  • Replace and reset. Everyone moves to the new version and in-progress learners restart. Simpler to manage, but it must be a deliberate decision, communicated in advance.

The option to avoid is replacing a structurally changed course in place and hoping. That is how learners end up resuming on a page that no longer exists, or finishing a course the LMS still shows as incomplete. The mechanisms are described in why SCORM completions go missing.

The manifest identifier question

The identifier attribute on the root manifest element, and the identifiers of the items inside it, are what some LMSs use to recognise a package as the same course. Change them and the platform may treat the upload as a brand new course with no history. Keep them and it may attach the new files to existing records.

Neither is right in every case; what matters is that the choice is deliberate:

  • Keep identifiers the same for fixes you want applied to existing records.
  • Consider new identifiers when the course has changed so much that old records should not carry over.
  • Never change them by accident. Some authoring tools generate a new identifier on every publish unless you set one, so check the manifest of each new build.

The same issue appears, at larger scale, when moving a whole library between platforms; see migrating LMS without breaking your SCORM courses.

Testing resume before you publish

The one test that predicts whether an update will hurt learners is a resume test across versions:

  1. In a test environment, launch the old version as a test learner and stop half way, so a bookmark and suspend data are saved.
  2. Apply the update exactly as you plan to in production.
  3. Relaunch as the same learner and check where the course opens, whether earlier answers are remembered, and whether the course can still be completed.
  4. Finish it and confirm the LMS records completion and score.

If the course opens on the wrong page, errors, or cannot reach completion, in-progress learners will see the same. That is the signal to use a new version or a planned reset rather than replacing in place.

Test with a learner who is part way through, not a fresh one. A fresh launch will almost always work, and it tells you nothing about the people already enrolled.

Telling learners about a reset

If in-progress learners will lose their place, tell them before the change, not after they notice. Say what changed, whether earlier completions still count, and how long the new version takes. For mandatory training, agree with whoever owns compliance whether a restart affects deadlines. A short message beforehand avoids a support queue afterwards.

Where SCORM Central fits

SCORM Central converts files you already have — PDF, PowerPoint, Word, or video — into SCORM 1.2, SCORM 2004, cmi5, or xAPI, and shows you the manifest, the full runtime log, and a conformance report on every build, so you can see exactly what a package will report before an LMS does. See how it works, or start with one file.

Keep reading

How-to4 min Convert SCORM to video or PowerPoint? Can you convert SCORM to MP4, HTML5 or PowerPoint? What is inside a package, the routes that work, and what you lose with each one. Explainer4 min Does your LMS support xAPI? How to check What xAPI LMS support really means: launching xAPI content, a built-in LRS, or forwarding statements. The questions to ask and a quick test to run. Explainer4 min LMS vs LRS: what is the difference? LMS vs LRS: an LMS runs courses and learners; an LRS stores xAPI statements. Why SCORM does not use an LRS, and when you need both.

Start with one file.

Upload something you already have and see it as a package, with the conformance report and the runtime log alongside it.

→ upload  handbook.pdf
  parsing … 14 sections
  building manifest …
  validating … 0 errors, 2 notes
✓ handbook-scorm2004.zip
✓ preview link ready