Course reporting to the LMS too many times

Hi,

We have a client who is having issues with the LMS and Evolve courses.

The issues seems to be that Evolve courses are sending data back data to the clients LMS so often that the LMS thinks it is some sort of attack. We can see in SCORMCloud that data is being sent back many times a second, and we suspect it is timed or linked to the scrollbar.

We understand why Evolve does this so you dont risk the LMS timing out and losing data, but is there a way to limit this, or remove it in this case so that LMSCommit() and data such as bookmarking and completion is sent when the user closes the course?

Here’s a screenshot of what it’s saying after testing on SCORM Cloud.

This is repeated over and over and over again.

Hope to hear from you soon,

Hi @devteam - in the above screenshot Evolve is actually only sending data back to the LMS three times.

Typically an LMS will only send data from the client to the server when either LMSCommit or LMSFinish is called.

In part this is because SCORM 1.2 was originally developed back in 2001/2002 when a lot of users would still have been on Modem/ISDN connections and web servers (well, all computers!) were pretty under-powered compared to even today’s smartphones!

So, it was thought to be important to allow the SCORM developer to control when any client/server communiction took place - so the way SCORM works is that it has a client-side API that effectively ‘caches’ all the data from the server - loading it up during LMSInitialize and only syncing changes back to the server when LMSCommit is called - and of course once final time when LMSFinish is called.

The various LMSGetValue, LMSSetValue and LMSGetLastError calls you see in that log should not be resulting in any client-server communication.

I would also say that when a SCORM course is loading up - as it is clearly doing at that point in the log - it’s pretty standard for it to make a lot of calls to get and set data.

Looking at the LMSCommit calls, the second one does seem a little odd in that nothing seems to have changed - but that should mean that the LMS’ SCORM API doesn’t send any data back to server because nothing has actually changed.

Both other LMSCommit calls take place after some important data has been set and Evolve is quite rightly telling the LMS to ‘commit’ those changes back to the server to minimise the chance of data loss.

Hi @Matt_Leathes thanks for the quick reply.

This screenshot is only the top of a massive report sent back from SCORM Cloud (You can see from the size of the scrollbar on the top right of the screenshot).

I just want reiterate that this huge log was generated when we were only inside the module for about 5 seconds, scrolled halfway down the page and pressed around three buttons (flipcards). This seems excessively large given how briefly we were inside the module, and how minimal our interaction was with the content.

Here’s a quote from the LMS provider detailing how they’ve tried to solve the issue currently:

"We have adjusted the throttle rate on the platform to 100 calls per minute per user which is significantly higher than normal required capacity or good practice. Throttling and rate limiting is 100% normal on production-level platforms and enterprise LMS like success factors and cornerstone etc. it is not good practice or good behaviour to send e.g. 100+ calls from simple page scrolling.

Normal SCORM interactions are based on real events driven by meaningful user behaviour like clicks or answers. Changing the rate limit significantly higher may not be a structural fix for this issue as rate depends on user scrolling behaviour, and above certain limits could impact platform performance, particularly at the high volumes of users expected here."

Happy to provide anything you’d need to investigate this further.

Thanks.

Good morning,

On further inspection, it seems the evolve courses are sending “SetValue(‘cmi.suspend_data’…” every 1 percent complete which is indicated with the “_progress”:12.371134020618555," value. And it also seems to count the progress in increments of 1, even if interacting or viewing one element adds 5% completion. So when you scroll to a component that is worth 5% of the module for being viewed, it doesn’t just send one increment of SetValue, it sends 5.

The smaller the course, the quicker these values of suspend data will be sent which is what I think is causing a problem with a client LMS.

We have turned off the progress extension etc. and tried different SCORM publish settings, but it seems to still do this.

Is there a setting inside Evolve to manually remove this? So it just sends the suspend data on LMSFinish() or when you interact with clicks etc?

Many thanks for you time

Hi @devteam repeatedly calling LMSSetValue should not be an issue - as I explained in my original reply the SCORM design is set up to allow a course to call LMSSetValue and LMSGetValue as much as it likes - with only LMSCommit or LMSFinish triggering client-server communication.

It should be noted that some SCORM tracking such as cmi.interactions or cmi.objectives actually RELY on the course being able to make multiple LMSSetValue calls in a very short space of time. Recording just one ‘interaction’ to the LMS might require the course to send as many as nine LMSSetValue calls within the space of a few milliseconds. If you factor in that it’s also going to have to check that each of those data fields is supported before attempting to set them - plus a change in state/bookmarking then you could easily be making something in the region of 20-25 get/set calls (plus a call to LMSGetLastError after each ‘set’ call to check it worked OK) in response to a single Submit button click.

I have developed many hundreds of courses for Success Factors and Cornerstone and can assure you I have encountered many strange issues with those two learning management systems but never, ever heard of them - or indeed any LMS! - ‘rate limiting’ get/set calls…

There’s a good forum on SCORM here if you’d like someone else to verify what I’m saying.

Is there a setting inside Evolve to manually remove this? So it just sends the suspend data on LMSFinish() or when you interact with clicks etc?

Unfortunately the answer is no there isn’t

Hi,

We have developed hundreds of courses as well, for many LMS, and never had an issue with an authoring tool ‘rate limiting’ get/set calls either but we are just trying to find a solution to a client problem with modules built using Evolve.

It is our responsibility as a developer to try and find a solution based on what the client thinks is the problem, and what they are describing based on what they know at their side.

We are equally frustrated with this, given we recommended Evolve and moved away from other authoring tools, and we are now in between an LMS provider who is saying one thing, and an authoring tool provider saying another. No matter how much we disagree with the proposed issue, we have to investigate and at least try and remove the issue so we can at least count it out as an issue. Hence why we asked if there was a chance of removing the SetValue percent log calls, even if we disagree with it being an issue.

We will go back to the client with some of the information you have provided, but we cannot just dismiss their claims as ridiculous, given LMS communication starts with LMSInitialize and ends with LMSFinish as the official documentation suggests.

LMSInitialize( “” ) : bool – Begins a communication session with the LMS.
LMSFinish( “” ) : bool – Ends a communication session with the LMS.
LMSGetValue( element : CMIElement ) : string – Retrieves a value from the LMS.
LMSSetValue( element : CMIElement, value : string) : string – Saves a value to the LMS.
LMSCommit( “” ) : bool – Indicates to the LMS that all data should be persisted (not required).

So even though we agree LMSCommit and LMSFinish offically set data on the LMS, we cannot dismiss what they are saying, which is why we came to this forum for help. Please don’t get frustrated with us trying to find the solution, and if there is anything else you could suggest as to why this LMS is not getting a completion status from Evolve, despite us testing successfully on scormcloud and our own LMS, that would be helpful to us.

Thankyou