Feb 2, 2011

LMSCommit and Timeouts

Systems and courses timeout. We all know that. A logged in session with a computer only has so long with inactivity before the user is considered to have abandoned their session and the system logs them out. While this is well understood to those in the e-learning industry, it can be confusing for some learner so e-learning developers need to handle this time out gracefully.

With the way my organization's LMS is setup inside a single sign on portal, the web based training will continue even after the LMS and portal system has timed out. The learner will never know until they try to exit an assignable unit and the SCORM-based WBT tries to send the results to the LMS. NOT SAVED! This is particularly a problem if the assignable unit was complex and the learner spent a considerable amount of time on it.

I'm taking a two prong approach to this problem:
  1. Save important data periodically using JavaScript to manually call LMSCommit in the SCORM API as the learner completes major sections.
  2. Setting a pop-up message that will first do an LMSCommit and/or LMSFinish and alert the learner that they are timed out.
Has anyone else run into this problem? How have you addressed it?


David Wilding said...

It has been a while since you posted this issue. Have you come up with a solution since?

I ask because I am experiencing the exact same issue. I am launching a course to a 20,000+ audience in the next few days and need to come up with a viable solution. My current solution involves calling the Captivate_DoFSCommand() function in the published htm file. In the Captivate file I am running a JS code every few slides:

var active = Captivate_DoFSCommand("LMSCommit");

alert ("You have been logged out of the Learning System. To ensure continued progress is recorded, please close this window and log back in to the LMS before continuing the course");

The only problem is when the course launches from the LMS, another new browser window opens up and displays all the communications the Captivate file is having with the LMS. Do you know how I could keep this window suppressed? If so, then we both have a solution to this question.

Jonathan Shoaf said...

Hey David. I'm using Lectora for my project and I used the timer function in Lectora to pop up a message after 1 hr letting the user know the need to log out of the course and relaunch to continue.

I'm not sure the best way to do this in Captivate. I'd probably create a widget so that I can keep the logic in Captivate instead of spread between the HTML page and Captivate. It seems like Captivate would have something built in to handle timer issues but I haven't researched that yet.

For the LMSCommit, I'm doing it after the completion of each small lesson. One could argue I could just make each lesson a separate SCO but I have my reasons for not doing that for now. Be careful to not set it up to call LMSCommit too often so that you don't get server performance issues as a side effect.

Priya said...

Hi Jonathan,

Can you share the timer function which you used in Lectora to solve the timeout issue.


Jonathan Shoaf said...

The timer is an action in Lectora. Add an action to a page. For the "On:" event, choose timer. Set the interval for which you want the action to occur and then set the action.

Danny said...


Just found your blog trying to research more about LMSCommit in general. I was trying to determine whether it was kosher to call it multiple times during a session. So, it sounds like you are doing this and without issue?

I know this varies depending on the SCORM API you're using and the LMS, but couldn't ascertain whether this met the standard or not.

Great blog, btw!

Jonathan Shoaf said...

Thanks Danny. Calling LMSCommit more often was actually recommended by one of the consultants from my LMS vendor to prevent information loss due to timeout or network disruption. You want to be careful where you put it so that it doesn't get called too frequently though...that could result in a lot of network/system traffic.

I don't think the SCORM standard has any limitation on how often you call LMSCommit as long as your SCORM session is open. Just use your best judgement.

Anonymous said...

I'm running into the same issue with Captivate and my LMS. I was wondering if you could share the two solutions you're using

1- to send a Commit() to the LMS every so often and

2 - to provide a message when the user has time out

I'm completely new to Javascript and could use any help!