goodbye.html is being displayed after course content

We are currently using Articulate Storyline 360 to publish our course material.

Recently on the LMS we are using the goodbye.html started being displayed after all of our course content when it had not been previously.

I understand that some LMS require the goodbye.html to be displayed in order to provide enough time for the Learner data to be processed. I have seen the support articles which talk about customizing the goodbye.html and disabling it via configuration, however these are not ideal solutions for us. 

I have contacted our LMS provider, however they do not seem to be aware of any changes to their system which would invoke the goodbye.html end process.  They are currently indicating that this is something that is implemented in the SCORM course which is out of their control.

So far Articulate support has only provided me with the article regarding customizing the goodbye.html, and suggested I contact the LMS provider (which I have already done) even though I've provided basically the same information as this posting. 

I've tried to find the information myself, but was unable to: Can anyone provide information on the trigger that decides if this is displayed? (if I was coding an LMS and wanted to have the page displayed, how does this occur? are there safety processes that might cause this to be displayed in certain scenarios)

The course has been tested on another LMS and in SCORM Cloud, and I can confirm that the goodbye.html is not displayed.

I have enabled the debug logging and have made a discovery which I believe to be the cause, but I am hoping for a confirmation.  During the LMS Finish process, the SCORM Course attempts to use the SetValue process from the API to set cmi.exit to a string value of normal.  If I understand how this works, it looks like the LMS API is returing "false" with an error 406 - Data Model Element Type Mismatch.

I understand that the SCORM implementation definition indicates that the variable type for cmi.exit is a string that should be one of the following: “timeout”, “suspend”, “logout”, “normal”, “” (NUL). My understanding of the error that is being returned is akin to trying to assign a string to an integer variable - since they are not the same it would return an error.

My theory is that since the LMS API is returning an error the SCORM content is displaying the goodbye.html as a precaution to allow the LMS to process any learner data before the course closes.

Can anyone confirm the behaviour around the goodbye.html and if this might be the case? If the type mismatch is fixed is it likely that the goodbye.html would no longer be displayed.

 

From the problematic LMS:

251:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Calling LMS Finish
252:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_Finish strExitType=FINISH, blnStatusWasSet=true
253:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_ClearErrorInfo
254:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Setting Exit
255:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_TranslatgeExitTypeToSCORM strExitType-FINISH
256:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Returning Logout
257:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - SCORM2004_CallSetValue strElement=cmi.exit, strValue=normal
258:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_GrabAPI
259:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Grab API, returning, found API = true
260:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Calling SetValue
261:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - strResult=false
262:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Detected Failed call to SetValue
263:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_SetErrorInfo
264:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - intSCORM2004Error=406
265:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - strSCORM2004ErrorString=Data Model Element Type Mismatch
266:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - strSCORM2004ErrorDiagnostic=
267:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Error calling SetValue:
268:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - strElement=cmi.exit
269:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - strValue=normal
270:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Error Number=406
271:Thu Apr 06 2017 13:54:28 GMT-0300 (Atlantic Daylight Time) - Error String=Data Model Element Type Mismatch

From SCORM Cloud :

294:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Calling LMS Finish
295:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_Finish strExitType=FINISH, blnStatusWasSet=true
296:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_ClearErrorInfo
297:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Setting Exit
298:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_TranslatgeExitTypeToSCORM strExitType-FINISH
299:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning Logout
300:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - SCORM2004_CallSetValue strElement=cmi.exit, strValue=normal
301:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_GrabAPI
302:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Grab API, returning, found API = true
303:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Calling SetValue
304:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - strResult=true
305:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning true

From another LMS we have access to:

 294:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Calling LMS Finish

295:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_Finish strExitType=FINISH, blnStatusWasSet=true
296:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_ClearErrorInfo
297:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Setting Exit
298:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_TranslatgeExitTypeToSCORM strExitType-FINISH
299:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning Logout
300:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - SCORM2004_CallSetValue strElement=cmi.exit, strValue=normal
301:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SCORM2004_GrabAPI
302:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Grab API, returning, found API = true
303:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Calling SetValue
304:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - strResult=true
305:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning true

1 Reply
Darren Snyder

Some additional information I noted during the Call to Terminate the LMS with the issue has a false response, where the ones that work fine have true.

[See 4th line in each log]

On the LMS with issue:

317:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - Calling Terminate
318:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - strResult=true
319:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - Returning True
320:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - Returning false
321:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - In Unload
322:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
323:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
324:Wed Apr 05 2017 15:08:04 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
325:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetDataChunk strData=2c16607080on1001212f010120111201212C13v_player.6FMTLyM5Mwq.68d8UOpnKZ01^1^00000
326:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
327:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
328:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
329:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In CommitData
330:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
331:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
332:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
333:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - Conceding control with type: SCORM_RECOMMENDED
334:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
335:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Suspend
336:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
337:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
338:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
339:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Unload
340:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
341:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
342:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
343:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Unload
344:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
345:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
346:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
347:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetDataChunk strData=2c16607080on1001212f010120111201212C13v_player.6FMTLyM5Mwq.68d8UOpnKZ01^1^00000
348:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
349:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
350:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
351:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In CommitData
352:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
353:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
354:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
355:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - Conceding control with type: SCORM_RECOMMENDED
356:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
357:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Suspend
358:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
359:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
360:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
361:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Unload
362:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
363:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
364:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
365:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In Unload
366:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
367:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
368:Wed Apr 05 2017 15:08:10 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
369:Wed Apr 05 2017 15:08:11 GMT-0300 (Atlantic Daylight Time) - In Unload
370:Wed Apr 05 2017 15:08:11 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
371:Wed Apr 05 2017 15:08:11 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
372:Wed Apr 05 2017 15:08:11 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo

In SCORM Cloud:

17:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Calling Terminate

318:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - strResult=true
319:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning True
320:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Returning true
321:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SetDataChunk strData=2c16607080on1001212f010120111201212C13v_player.6FMTLyM5Mwq.68d8UOpnKZ01^1^00000
322:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
323:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
324:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
325:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In CommitData
326:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
327:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In IsLoaded, returning -false
328:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In SetErrorInfo - Num=7 Desc=Cannot make calls to the LMS before calling Start
329:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - Conceding control with type: SCORM_RECOMMENDED
330:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
331:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In Suspend
332:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
333:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
334:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
335:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In Unload
336:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
337:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
338:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
339:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In Unload
340:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
341:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
342:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
343:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In Unload
344:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
345:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
346:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
347:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In Unload
348:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo
349:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ExecFinish, ExiType=SUSPEND
350:Thu Apr 06 2017 08:44:32 GMT-0300 (Atlantic Daylight Time) - In ClearErrorInfo