Joe Donnelly
posted this on November 19, 2010 03:15 pm
The SCORM standard requires a SCORM player to assume content will not be reporting completion status until the content sets the status to incomplete. So the best practice for content providers is to immediately set the status to incomplete. Unfortunately, Captivate didn’t follow that best practice. It waits until the embedded SWF file starts playing and then it sets the status to incomplete. This causes a completion if you exit the content prior to the SWF loading...is there a way around this?
One of our clients passed this along to us...We were able to correct Captivate to follow the best practice by modifying the HTML file that it generates. We added a line between line 103 in the image below. This line sets the lesson status to incomplete immediately after initialization instead of waiting for the SWF file to load.

You can edit the HTML files already published from your Captivate movies, or you can republish them using the attached Captivate template which we have customized. The attached file Custom.htm, can be saved to C:\Program Files\Adobe\Adobe Captivate 4\Templates\Publish\SCORM\1_2\Custom.htm and then selected on this screen during the publishing process.

Comments latest first
Thanks for the clarification, that makes sense. It's disappointing the official SCORM documentation doesn't spell this out more clearly. It should be explicitly mentioned in the RTE book under lesson_status/completion_status.
Hi Philip,
The behavior apples to all versions of SCORM and even dates back to AICC. It can be a bit tricky, but it is correct. The rationale for this behavior derives from an underlying assumption of SCORM that by default activities are non-communicative assets. I believe this default was chosen to make it easy to automatically aggregate dumb assets into a course. If you start with the assumption that an activity is not going to communicate, then it is logical behavior to set that activity to completed if it is launched and exited without receiving any communication of status.
In SCORM 1.2, this behavior is defined in section 3.4.4 of the Run-Time book, under the definition of cmi.core.lesson_status. From "LMS Behavior":
In SCORM 2004, the behavior is more subtle as it is defined in the sequencing and navigation spec.
ADL doesn't think that all communicative content needs to change this default value (see ADL Note at the end of this section), however we disagree. ADL makes the assumption that content will fully launch and, if well written, have the opportunity to set a status value immediately upon launch. In reality however, there arise many situations where the content launch will not fully complete due to many eventualities such as pop-up blockers, dropped connections or users' rapid navigation. And, of course, in the real world, not all content is well written. We recommend overriding this sequencing rule in all content as well as a couple others (more info).
Regarding this statement:
"The SCORM standard requires a SCORM player to assume content will not be reporting completion status until the content sets the status to incomplete."
I'm curious where this is stated in the SCORM spec, and which version of the spec it's referring to. I don't recall ever seeing this requirement, and I can't find any mention of it in the SCORM 2004 4th Ed docs.