Retry All Resets Everything

Many SCORM 2004 sequencing strategies require remediation upon failure. These strategies often call for only material which was not previously mastered to be required on subsequent attempts. The most straightforward approach to implementing such a strategy would call for storing mastered competencies in global objectives and then issuing a retryAll to trigger remediation. Unfortunately, unless the global objectives are global to the system (a dangerous practice), when a retryAll request is issued, a new attempt begins on the root of the activity tree and all of the global objectives are reset making them unavailable as input into the remediation sequencing strategy.


  • Option 1 (DANGEROUS) – Set objectives global to system = true. Since the global objectives now have a broader scope, a new attempt on the package does not trigger a reset of all the objectives. There is peril ahead though should objectives ever experience naming collisions (i.e. there is nothing that says that another course can’t use the same objective identifier as you do), not to mention the chronic pain in the neck of deployment testing (have you ever tried to reset global objectives in a production LMS?).
  • Option 2 – Create a shell inside the course that can be retried without initiating a new attempt on the root. For example:-Course Root
    —Remediation Shell – is visible = false, post condition rule, if not satisfied, retry
    —–SCO 1
    —–SCO 2

    Basically, moving remediation down a level will preserve the state of global objectives since it does not create a new attempt on the course as a whole.

Mike is the Founder and was President of Rustici Software until 2016. Most recently he was the CEO of Watershed Systems. He helped guide the first draft of the Tin Can API (xAPI) and believes ice cream is the "elixir of life."