SCORM Completion Reset Upon Restart

I have gone down the worm hole of SCORM code. This seems like it must be an issue for others but a search died not yield anything.

I have a one-SCO course I publish as SCORM2004 to scorm cloud.

I pass the quiz, exit the course and the cmi.completion_status is set to "completed."

If I restart the course, cmi.completion_status is set to "incomplete."

That is not desirable. If course is completed, it should remain completed.

Now there are a host of other things going on. I see checks in the Articulate code that seem to be designed to not reset a completion status but, on the other hand, the cmi.exit value is set to 'normal' if the quiz is passed. When the course is restarted, cmi.completion_status is returrned as "unknown," even though the staus was set and committed in the first case.

If anyone else has figured out how to prevent a completed SCORM course from being reset to incomplete, I am all ears. I hope I don't have to spend hours tweaking code to figure it out.

SCORM... sigh.

6 Replies
Peter Anderson

Hey Jack

If you attempt a quiz a second time and the status of the quiz changes from Complete to Incomplete this issue may be related to how your LMS is interpreting the data sent to it. 

On the second course launch or attempt, the Articulate content will ask the LMS if it needs to go into Review mode. The problem may lie with how the LMS interprets a subsequent launch. If someone relaunches content, does it make sense to reset the status so that they can attempt again? Does it make sense that the score only improves, or does it make sense that the second attempt is ignored? You could argue that all of these make sense. 

Our content explicitly checks to see if the LMS tells the content to launch in Review mode, if the LMS does not tell us to do that, then it is treated as a new attempt. 

If you set up your quiz so that a score can only improve on subsequent attempts, this may resolve the issue you are experiencing. 

1. Open up the Configuration.js file. 
2. Change this: 

var SCORE_CAN_ONLY_IMPROVE = false; 

To this: 

var SCORE_CAN_ONLY_IMPROVE = true; 

3. Save the file. 
4. Re-upload your course to the LMS 

By making the change above, this should cause the score to only improve on subsequent attempts. 

======= 

If you continue to have issues, you may need to update some code in the lms.js file located in the lms folder of your published course. Look for the following function in the lms.js file: 

function SetStatus(strStatus) 

In that function, you will see the following lines: 

case "incomplete": 
lmsAPI.ResetStatus(); 
break; 

To prevent the course from ever being set to incomplete, simply remove those three lines of text, save the file, and re-upload to your LMS. 

You can actually change the core files here so you don't have to manually change this each time:
Presenter SCORM 1.2
C:\Program Files\Articulate\Presenter\players\template_scorm\ lms

SCORM 2004
C:\Program Files (x86)\Articulate\Presenter\players\template_scorm 2004\lms

SCORM 2004 3rd edition
C:\Program Files (x86)\Articulate\Presenter\players\template_scorm 2004 3rd\lms

AICC
C:\Program Files (x86)\Articulate\Presenter\players\template_aicc\l ms

Quizmaker
C:\Program Files\Articulate\Articulate Quizmaker\content\lms

Engage
C:\Program Files\Articulate\Articulate Engage\content\lms

Jack Anzinger

Well, the codein lms.js has to do with the quiz, I believe. The SCO is rest to incompklete the 2nd time in before the quiz is taken again.

I see code in SCORM2004Functions.js  that should prevent this:

/only set the status to incomplete if it's not attempted yet
 if (SCORM2004_GetStatus() == LESSON_STATUS_NOT_ATTEMPTED){
  WriteToDebug("Setting Status to Incomplete");
  blnResult = SCORM2004_CallSetValue("cmi.completion_status", SCORM2004_INCOMPLETE);
 }

The sad fact is, despite the fact that passing the quiz results in the SCO exiting with a status of complete, the second time the SCO is started and, the status is firtst checked and returns a value of "unknow." I think this prevents the code about from stopping the stuts reset.

I do not understand why the completion status is unknown. The log shows that a status of "completed" is committed.