Learning More About Your LMS: Suspend Data and Resume Behavior

If your course doesn’t resume properly in your LMS, you may find yourself wondering about the mechanics of suspend data and how the resume feature actually works. Don't worry. You're not alone.

Let's pull back the curtain and take the mystery out of suspend data and resume behavior, so you can confidently troubleshoot playback issues.

How Do I Control the Resume Behavior?  

First, let’s examine our options. The resume feature controls how learners experience your course if they view it more than once. You can choose from three resume options:

Prompt to resume

If learners previously viewed part of the course, this option displays a prompt, asking learners if they want to pick up where they left off.

Always resume

This forces your course to open at the place where learners left off. They won't see a prompt; it just happens automatically.

Never resume

This forces your course to always open at the beginning, even if learners completed part of the course previously. They won't see a prompt.

 

Please note that a re-launched Rise course will always reach out to the LMS and ask for the suspend data needed to resume the learner's previous attempt (in contrast to Storyline and Studio, where you have the above options). For more details on working with the options in Storyline and Studio, check out these tutorials:

How Does Suspend/Resume Actually Work?

As a learner makes his way through a course, a compressed chunk of suspend data is sent to the LMS after each slide. This suspend data describes everything about the current state of the course, including the learner’s responses, his navigation history, object states, variable values, interaction results, and more.

Data sent from the course to the LMS

When the learner opens the course again, it asks the LMS where he previously left off. The LMS sends the suspend data back to the course, and the course uses it to resume at the same point and in the same state as before.

Data sent from LMS to the course

Why Would a Course Fail to Resume?

A few things could get in the way of the suspend/resume communication process:

You exceeded the suspend data limit.

Your LMS might be imposing limits on suspend data. Older LMS specs, such as SCORM 1.2, have outdated restrictions on suspend data.

We recommend publishing for the latest edition of SCORM 2004 or Tin Can API (also known as Experience API). See this article for more information.

You’re in a cross-domain environment.

If you're hosting AICC content on a different server than your LMS, you may experience a cross-domain conflict. See this article for solutions.

You already completed the course.

The resume feature may not work as you'd expect after you meet the completion requirement. Most LMSs consider a course to be in review mode after the tracking requirement has been met.

In review mode, resume data is no longer sent to the LMS, which prevents learners from accidentally changing their course status from Complete back to Incomplete. See this article for more information

Can I Examine Suspend Data?

Enable LMS debug mode to watch your suspend data flow back and forth between your content and your LMS. By doing so, you can verify that the data returned by your LMS upon resume is the same data that your content sent upon suspend—a common point of failure.

data flowing from the course to the LMS and mismatched data sent back from LMS to course

To help you avoid exceeding suspend data limits (see above), we compress suspend data. As a result, the suspend_data string in an LMS debug log isn't human-readable. You won’t be able to decipher what it means, but you can see if the data sent to the LMS matches the data that comes back from the LMS.

Doesn’t My LMS Need to Read Suspend Data?

No. Only the course itself needs to be able to decompress and read suspend data. The LMS just functions as a handy place to store suspend data between attempts.

If you have any other suggestions on troubleshooting an LMS, share your thoughts with us and other community members in the comments below.

And for more helpful advice on everything related to e-learning, be sure to follow us on Twitter and come back to E-Learning Heroes regularly.

 

51 Comments
Justin Grenier
Deborah Munitz
Deborah Munitz

Just to add a meaningful example to this. There is a bug in Google Chrome with the launching of videos. If you use more than a single parameter it can cause videos to be launched in a new tab instead of new window. For a user it seems like their lesson just disappears when the main window launches in front of their lesson in a new tab. If they don't navigate back to the hidden window and they just relaunch the lesson it resumes on screen 1 instead of where they left off. A customer service rep can clearly see that this is the situation in the Studio 9 implementation because you see that they got to screen X even when the last screen unlocked = 1. And while I have never figured out the blue moon situation where I get a user that get 3 pairs of unrecognizable characters scattered in the qui... Expand

James Jordan
Deborah Munitz
Justin Grenier

Good Morning, Stephan. The decision to compress Suspend Data is less about protecting proprietary information and more about making sure we don't exceed the data limits that some Learning Management Systems impose. Further still, we can't offer a web-based suspend data decoding tool right now since our compression/decompression routine is dependent on XML data that is unique to every project. It is not possible to decode the suspend data without first parsing the XML and then creating the correct object structure to read it. Again, we're not trying to hide anything. It's just that this model honestly isn't achievable at the moment. If you have a set of LMS Debug Logs that we can help you diagnose, please feel free to send them over and we'll be happy to take a look: https://... Expand

Steve Flowers

Hey Justin - This is a sore subject with a few of us LMS admins that double as developers:) It's less about troubleshooting and more about confirmation of progress when someone says "I finished it." The typical flow is trust but verify and with the encrypted setup, the verify step is nearly impossible. I've taken to completing a course (I have to do this anyway as an employee) to get an estimate of the suspend data volume, then comparing this with a learner's completion. Additionally, in SCORM 1.2 when suspend data overflows the limit, Storyline restores behave in a consistently bad way. I get that the restriction is based on the mechanics of how it's being saved. However, it's been pointed out in this thread that despite the compression, there are efficiencies that could b... Expand

Deborah Munitz

Justin if what you say were true then Articulate wouldn't be so shy about publishing the method. Most people will happily ignore the documentation but for those of us that want it (or feel we NEED it) we can have our developers go ahead and develop what we choose. If the routine is dependent on the XML data specific to each published lesson that's not the end of the world since we have access to that xml. Just publish the darned compression/decompression schema and let us do that which we want to do. Leaving the community guessing is problematic. You have people posting that they have figured things out or tell you to call this developer or that (who think they have solutions that will only cost $5K or what not). I have had an unmitgated disaster going to Studio '13. I have had to crea... Expand

Justin Grenier

Hi, Deborah. I understand what you're asking for, and I'm sorry to say that I can't provide an ETA for such a tool at this time. I discussed this directly with engineering and we simply can't divert the resources needed to document (and maintain documentation on) this very complex algorithm. It is on the radar with the necessary people, but unfortunately there won't be anything more that I can say on this matter for the time being. ​ I suggest we shift the focus to the root of why your Learning Management System is so susceptible to losing learner progress in the first place. Based on the behavior that you've described both here and in your private Support Case with us, I expect that the data being returned by your LMS upon resume is different from the data that your content sent to... Expand

Deborah Munitz

Justin that pretty darned assumptive of you. Our LMS isnt losing data. It takes what it gets and it stores it. I have logs and logs to prove it. We encounter problems on the client side all the time and I have very little faith that Articulate will figure it out for me. I am trying to figure out ways to deal with the vagaries of different platforms. If a user a user opens a lesson one computer and gets 99 screens in and then opens on another computer (or tablet) or whatever and that device trashes the data our LMS will send them a big suspend data strings and they will ExitAu and send nothing. I have seen it happen. Thankfully it doesn't happen a lot. The new '13 release is so much more susceptible to problems. And it give so much less feedback than it used to. And god forbid you try t... Expand

Deborah Munitz

Justin I would like to submit a request for a new feature. To be able to do this correctly would require better knowledge of what's going on with the XML data that is unique. I am thinking that since the structure of the folders in a published presentation is known, and the files with the XML compression data are known, then a routine could be included in the published output that could be called that would "know" where the lesson specific xml is located. We need two simple JavaScript functions – one will decode Articulate’s encoded data into human-readable form. The other function does the opposite. Our site supports Prototype – but we could support jQuery as well – and the best would be no JS library. We had already assumed the JS code is already in one of the .JS files that Articul... Expand

Stephan Sinka
Justin Grenier
Sara G.
Deborah Munitz
Justin Grenier
Jack Waller
Justin Grenier
Jack Waller
Justin Grenier
Robert Edgar
Robert Edgar

Hi Christine, Here is a link to a string in a Storyline thread where I explained my approach, and included a .pdf of my procedures. Note, though, that while I was able to pop up a warning dialog in SL2, that capability did not persist in Storyline 360. However, I've confirmed that the suspend data call was successful; it does save the current suspend data string to the server LMS. https://community.articulate.com/discussions/articulate-storyline/manually-invoke-lmscommit-on-slide-load-with-js?page=2 Good luck! Robert Manually invoke LMSCommit() on slide load with JS ... community.articulate.com Hi, I'd like to add "save points" to various slides within my course to ensure that learner progress is preserved as best as possible (e.g. guarding against a lost ... Robert Edgar Program Ma... Expand

Mark Tomlinson
Robert Edgar
Mark Tomlinson
Steve Flowers
Mark Tomlinson
Cathy Frost
pradeep kumar
Justin Grenier

Good Morning, Jane! I'm sorry to hear that. The best way to identify an LMS issue is to compare how your published output behaves in an industry-standard testing engine. SCORM Cloud is a free testing engine that supports AICC, SCORM, and Tin Can API (xAPI) content: https://cloud.scorm.com This video demonstrates how to use SCORM Cloud with Articulate content: http://articulate.fyi/1OHe39f You'll also find some helpful LMS-troubleshooting tips here: http://articulate.fyi/1TBEwac If your content works properly at SCORM Cloud but not in your LMS, please open a support case with your LMS provider. They’ll know how best to help with LMS-specific problems. If your content doesn't work in SCORM Cloud, we'll be glad to investigate it further. Just send me a copy of your project ... Expand

ITRC 1