Forum Discussion
SCORM 1.2 Suspend Data--Seems Wonky to My Pea Brain
For the last couple of weeks I've been working on a SCORM 1.2 resume issue for a Storyline 2 course that I'm trying to finish up on for a client. I posted on this previously but that post appears not to be available now in the new forums. So here's an update . . .
First of all, I have to say the Articulate front-line support person that I've been working with has been very helpful and very responsive. Couldn't ask for a better experience there.
Anyway, back to the problem. Basically, I have a SCORM 1.2 course that, after you launch it from the LMS and fail the final quiz, you, say you exit from the quiz results page. When you re-launch the course later to re-try the final quiz, and bookmarking kicks in, you are not returned to the quiz results page but to somewhere in the middle of the quiz to a quiz question that needs answering.
So bookmarking appears not to work right.
After that happened I filed a case and working with Articulate support, we confirmed it was a issue with the amount of resume (of suspend) data. It was exceeding the SCORM 1.2 limit of 4096 characters as nicely described here in the KB.
So, when re-launching the quiz turns out I was being returned to just before the SCORM 1.2 4096 character limit had been reached in the previous session, which makes sense.
So, working from a couple of my own ideas and more suggestions from my fellow Super Heroes (thank you, Steve F. and Phil. M) I tried to reduce the suspend data in the course by trying some of these things:
- Publish to SCORM 2004 3rd or 4th Edition or Tin Can/Experience if you can or LMS supports. (Not an option here--the LMS only supports AICC and SCORM 1.2, and SCORM 2004, for a variety of reasons, is not an option).
- Reduce the number of slides in a course.
- Reduce the # of layers in a course
- Consider using lightbox slides for layers that repeat over many slides or come from masters.
- Set as many slides as you can to "reset to initial state" if you can.
- Reduce the number of questions in a quiz or cut any freeform interactions that you can.
- Use freeform questions instead of text based questions as less data may be sent.
- Reduce the use of longform variable strings.
The course is fairly short, just 50-55 slides. Most slides have a pause layer and transcription layer for displaying narration text. Three of the slides are separate multiple response quiz questions at the end of the topics and 10 slides are simple multiple-select questions for the final quiz.
The course also use a mandated Storyline template that the client had developed by another firm. I had to use that template with little, if any, variations.
The master had 4 layers on the layouts which I was able to cut down to just two by moving two of the layout layers over to two lightbox slides. The other two layers I could not reduce due to the way lightbox slides currently work in Storyline (needed more customization than currently is permitted).
To verify the suspend data overage, Articulate Support had me turning on LMS debugging in the course and send them the log files. So, after providing that for them, I decided to watch the log files myself and record the amount of suspend data after I had moved to a new slide.
If you've not set up a LMS debug file for a SCORM course, this is how you do it.
Actually, kind of fun to watch the debug file generate and see how it builds up with and after each slide in a course. Neat tool.
And this is the line you want to look for in the LMS debug file to see the suspend data.
This command will appear many times as you deal a with a slide (so I was always looking at most latest occurrence of the string in the debug file for my character counts).
For that line, eliminate the "strValue=" and anything before it and then copy the data after (for that line only) and then bring that text into something like Notepad++, and then select all the text to get a character count for the resume data.
And when you exceed the SCORM 1.2 data limit, you'll see a line like this with "intSCORMError=405" in the LMS debug file.
Now my method for recording the suspend data was not exactly perfect as recording the suspend data after moving to a new slide also includes data for visiting that new slide. But I was mainly looking for general trends in going from slide to slide.
Going through simple, click-to-read slides with simple narration seemed to add only 7-20 characters per slide (and usually just 7 characters) when moving to a new slide. Seems like a reasonable number to moi.
However, when looking at the "check your knowledge" questions and the final quiz questions, what I found initially was jaw-dropping. I was seeing well over 400 characters generated for each. So just with my 10-question final quiz, I'd was going over the 4096 character limit for SCORM 1.2 suspend data.
After trying some of the things I listed above to reduce resume data, I was able to get the quiz questions to over 200 characters per question.
But still too much data . . .
This past weekend, I re-created the quiz from scratch using the default plain template in Storyline and nothing else. Quiz questions seemed to now add over 100 characters of resume data--pretty consistently 114-115 characters regardless of the amount of text in the question answers.
Much better but still too much data to my (limited :) ) way of thinking. And I'm left to ask what in the real course itself is causing that number to be even higher?
If there is indeed something in the template causing things to balloon up, it'd be nice if we as developers could know that to prevent that in the future.
Now here's the kicker. I took an earlier version of the course that was done in Storyline 1 Update 5 and published it out to SCORM 1.2 and set it up in the LMS. I went through the course, touching each slide and quiz questions, and failed the final quiz. I then exited the course from the final quiz results page and looked at the last suspend data string sent to the LMS.
Then I opened the same course up with Storyline 2 Update 1 and published it out to SCORM 1.2 and set up a new course in the LMS. I then went through the course exactly as I had before, and answering every quiz question the same. Again, I exited from the quiz results page and looked at the last suspend data string sent to LMS.
I then compared character counts from both trials: The Storyline 2 Update 1 version had produced 32% MORE SUSPEND data.
Now I'm not a programmer and my old pea brain may not understand all what is going on, but I'm left with at least a couple of possibilities . . .
1) Storyline's suspend data generation MIGHT POSSIBLY BE inefficient and could benefit from some tightening. Again, I'm not a programmer but I scratch my head when it takes at least over 100 characters (in a plain vanilla version of the course) and over 200 or 400 characters each in the designed version of course with the mandated template to record my answers to a simple multiple choice quiz question. Something doesn't seem right to me there . . .
2) Something in the course is causing the resume data to balloon up to over 200 or 400 characters when the plain vanilla version only has over 100 characters. But what is that? I'm using Storyline as it is meant to be used, and the supplied template isn't doing anything special or highly customized. So why the difference in suspend character counts? Is Storyline 2 keeping track of a lot of new things as we proceed through a course?
One more kicker--publishing to AICC produced nearly the same amount of resume data as its SCORM 1.2 counterpart (which is good). However the course didn't have the bookmarking problem at re-launch.
AICC has the same suspend data character limit of 4096 characters. But it appears that this LMS was not enforcing the AICC character limit the way it was with SCORM 1.2. An unexpected, but very lucky, result--and a temporary solution.
Unfortunately, using AICC is just an interim solution at best. The client the course is for wants SCORM 1.2 as they will be migrating to a new LMS soon and it may not support AICC. And the new LMS does not support Tin Can yet and they're currently having trouble getting SCORM 2004 3rd of 4th edition to work.
Sorry for the long post but I thought I'd share my recent experience in case it might help someone else in some way. Starting to feel like I'm engaged in one of the labors of Hercules . . . ;)
Hoping I hear something more definitive from Articulate support soon. The QA team is looking at it.
With fingers crossed . . .
- SteveFlowersCommunity Member
Hey Justin -
When the data is truncated, it will consistently drop back to about half of the slides. So I suspect the compression is somewhat serial in nature as *some* of the slides are being tracked as visited when the data flows over the limit. Since variable strings are stored uncompressed, I suspect most elements are compressed in chunks / blocks.
I haven't yet started poking around the methods used to compress and decompress the string. Knowing what order things are compressed, as a model, could help with construction decision-making. For example, what restore states / layer properties / variables, etc.. could be set to optimize the string.
The storage of question data is also a bit of a conundrum. It seems like it's storing the full string of the response rather than the state of the selected choice. Seems like there's some optimization to be had there, as the player shouldn't care about anything but the state of the choice for review.
S
- GerryWasilukCommunity Member
RE: 'When you say "turn off resume", in Storyline that would be setting the individual screen to "reset to initial state", right?'
Yes, that's one way and that's our assumption. That produces slightly less resume info for the slides with that setting.
And there's also turning off resume at the course level in the player, which means no bookmarking resume for the learner.
- RobertEdgarCommunity Member
Well, it's empirical testing is always necessary. I ran a course to and through the 4096 char limit today, only to find that ELM 9.1 had zero problem with it. Bookmarking worked after the limit was passed. I changed computers and went back to take the post test, passed it, and ELM 9.1 recorded the completion as successful. So our hypothesis about a completion problem being due to the 4096 limit was incorrect. Which makes me, personally, happy.
The average char count for each screen was around 20. This went up to about 90 for test items in the post test. Screen-captured animations were still around 20 each, although often several of the animations led one to another before a "next" button came up--each one was itself about 20-30 chars.
- GerryWasilukCommunity Member
GREAT news, Robert--at least in terms of the suspend data issue not being the cause.
With your completion problem, do you have another thread here about that (if you haven't solved that yet)? BTW, does the course have a final quiz determining completion?
As for the SCORM 1.2 resume data issue , I reached out to the Articulate person who contacted Steve and I for an update but so far no response.
- RobertEdgarCommunity Member
Thanks Gerry.
At least I know what isn't the problem.
Since I am not sure what the cause is, I haven't started another thread. But I very well may.The course does end with a 10-question post test. The test is what determines successful completion (at 80%).
I think what would be helpful here (and I anticipate to others) is a thread for specific debugging techniques for courseware LMS completion problems. The measurement of the suspend data string is one of them. I'll go ahead and start that thread, maybe see you there!
Thanks again to you and Articulate for your focus on the Suspend Data string.
Best
Robert
Hi Barry,
I'm sure you've seen that the suspend data is not human readable, and that's due to our proprietary set up to help compress and help folks not hit the data limit. Folks have submitted feature requests to be able to uncompress it or access all the content included - but I don't know the viability of those based on the proprietary nature.
As you can see from this article about reaching the limit, things that are included are the resume status of the course, and each slide, variable value, etc.
Hope that helps a bit
- IanPooleCommunity Member
I have recently experienced the same problem with exceeding the suspend data limit. Using the (very helpful) information in this discussion I switched on debug and did some tests.
The only way I found to reduce the data significantly was to set ALL slides to "Reset to initial state". For instance, a simple multi-choice question was sending 110 chrs back when the re-visit was set to "Automatically Decide". Changing it to "Reset to initial state" reduced the data to 9 chrs. My entire course went from over 10,000 chrs to around 1200 chrs. The course contains 147 slides including 9 sub-assessments, 10 result slides, 57 questions spread across 33 question banks. Passing the nine sub-assessments achieves a course pass via a final result slide.
Unfortunately the ability to review answers is lost when the slides are set to "Reset to initial state". So, I used a custom variable for each of the nine sub-assessments to hold a copy of the scorepercent variable for each. These were used with sliders to show how the student performed in each. If the student stops and starts the course these custom variables (and the slider positions) are maintained and they can pick up where they left off. Although they can't review their answers they can see which of the assessment topics they need to re-visit before attempting it again.
- StephanSinkaCommunity Member
Ashley,Justin has made an even clearer explanation THanks!
Justin Grenier Author Stephan Sinka
26 minutes ago
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://www.articulate.com/support/contact/submit.php
Thanks for adding your voice to our community!
- RobertEdgarCommunity Member
Hi Natasha,
There are a number of issues here.
For myself, we tested by saving and re-launching courses with longer and longer suspend data strings (essentially, adding questions to the course at about 20 at a time, then testing, then adding 20 more), and found that the length of the suspend data string was not a problem in SCORM 1.2 either for Storyline 2 (which continues to work far past the 4096 number, at least into 12K-long suspend strings) and neither for our LMS (Oracle's ELM 9.1).
So the first thing is to empirically test your LMS for its ACTUAL limit for the suspend string. If the suspend string breaks in the LMS, relaunching with the bookmark won't bring you back to where you left off. Each question you add will lengthen the suspend string. (Gerry shows you how to measure the string length earlier in this thread).
If you want to add a question as an exercise WITHOUT adding to the suspend string length, set the question to "Slide Properties/When revisiting: Return to initial state". in the Base Layer Slide Properties tool (the little gear icon in the bottom right of the Question screen view). If you need to save the data as to whether the question was answered correctly by the learner (whether in the course body or as a post-test), you need to set it to "Resume saved state".
Note that if you're having trouble with your test questions pushing your suspend data strings past their limit, try returning all interactions and questions in the course to "Return to initial state", then break any post tests into their own activity or component, separate from the course body.
I hope that helps. Good luck!
- GerryWasilukCommunity Member
Hi, Becky! I wouldn't use the word "fixed." Just the nature of Storyline and the potential of a lot of resume data being sent to LMS for bookmarking. Things are still the same. Storyline can potentially track a lot of things depending on how you've designed things.
If you use SCORM 1.2, see if your LMS honors the 4096 character limit for SCORM resume data or has an override. Some LMS's (e.g., Moodle) have an override and let the content running in the learner's browser to send more than 4096 characters and will store all of it for bookmarking when the course is re-launched by the learner.
Or use SCORM 2004 3rd or 4th Edition or Tin Can/Experience if your LMS supports it and supports it in a way you like.
If you're stuck with SCORM 1.2, look in this thread for some recommendations on how to reduce resume data or look the Articulate KB article: https://articulate.com/support/article/exceeding-scorm-suspend-data-limits
Or make your courses smaller or use multi-modules.
Hi Gerry,
I wanted to let you (and others who come across this) know that I've also included the thread here as a part of the report for QA so that they have all information accessible and so that when there is additional information I'm able to share it here as well.