Course Versioning and Overwriting

Course Versioning and Overwriting


Overwriting

Course overwriting allows users to directly overwrite internal course files on the filesystem. This power can be dangerous, as changing the course files themselves might mean that existing registrations are suddenly incompatible with the course.

For this reason, we recommend that only advanced users use the course overwriting feature. However, it is useful for simple typo fixes that do not affect the course structure or otherwise cause issues with existing registrations.

Overwrites can be done through the SCORM Cloud UI. As mentioned in that article, overwriting via the UI can be useful for testing as well, since it prompts the user to reset all existing registrations if the manifest has changed.

Versioning

The notion behind course versioning is that a user uploads a new version of a course. The old version(s) of that course, along with all of the historical data that goes with them, are still kept. New registrations that are created against that course will then use the latest version. This is useful for structural changes that impact existing registrations.

In the API, to create a new version of a course, simply call one of the course import methods with an existing course ID, and the parameter mayCreateNewVersion set to true. To get a list of course versions through the API, call GetCourseVersions.

Existing Registrations

Note: The configuration setting WhenToRestartRegistration described in this section can only be set at the course level. This means that all existing registrations for a course will follow the same rule for moving to the latest version of the course.

As above, new registrations against a course will use the latest course version. The behavior for existing registrations, however, is configurable.

Here are the available choices for the course configuration setting WhenToRestartRegistration. Each of these is checked when the learner launches a registration.

Value
NEVER
Do not move existing registrations to a newer version (the default)
WHEN_EXISTING_REG_IS_INCOMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS
If a registration is marked incomplete (or unknown), move the registration to the latest version
WHEN_EXISTING_REG_IS_COMPLETE_AND_NEWER_PACKAGE_VERSION_EXISTS
If a registration is marked complete, move the registration to the latest version
WHEN_EXISTING_REG_IS_FAILED_AND_NEWER_PACKAGE_VERSION_EXISTS
If a registration is marked complete and failed, move the registration to the latest version
WHEN_EXISTING_REG_IS_SATISFIED_AND_NEWER_PACKAGE_VERSION_EXISTS
If a registration is marked complete and passed, move the registration to the latest version
WHEN_NEWER_PACKAGE_VERSION_EXISTS
Always move existing registrations to the latest version


Caution

When a registration moves to a later version, a new instance of that registration will be created (that is tied to the newest course version). To the learner, this will effectively reset their progress in the course. Versioning works this way because new course versions may change the structure of the course itself -- especially if multi-SCO -- so we cannot guarantee old registration state is compatible with new course versions.

Data about old instances of registrations, which are probably tied to different course versions, can be retrieved using GetRegistrationInstanceProgress. A list of instances can be retrieved using GetRegistrationInstances