how to manage CMI Data Model Variables

Jan 09, 2014

Hello everybody, i searched around the forum for the answer but couldn't find any info about this.

Is there any reference that explain which SCORM cmi data model variables can be used with scripting from within storyline?

In particular, i would like to know more about cmi.objectives implementation. 

I read that this data model is supported in scorm 1.2 and scorm 2004.

Does a scorm published from storyline use by default cmi.objectives variables to communicate to LMS informations like completion of a quiz series ("tracking using slide result based on percentage success for certain questions)?

Is it possible to implement more than one cmi.objective in a single scorm published by storyline?

I guess that, suposing whether storyline is passing cmi.objectives, it does in this way (please confirm):

it sets cmi.objectives.0.success_status regardind to what the developer chose in the publish settings (passed/failed)

it sets cmi.objectives.0.completion_status regarding to what the developer chose in the publish settings (commplete/incomplete, passed/incomplete)

does it passes also cmi.objectives.0.score.raw, or cmi.objectives.0.score.scaled etc..?

is it possible to manage further objectives like cmi.objectives.1, cmi.objectives.2.... etc?

for example, may i build a quiz bank, set a result slide, and check the passing score, and retrieve that score and use it as reference for a cmi.objectives.X that is not the primary one, to retrieve informations about user activity on certain section of the course?

Please, it would be great if someone can make some "light" on this obscure part....

many thanx!

22 Replies
Carlos Puig

Yes. I did a few SCORM courses in ACADEMICCOLAB and now I am developing a course that I have to package in SCORM. Is a online course with 7 main objectives and I had to go deep in the LMS and SCORM files generated by Storyline to find the best way to set/get scorm variables from Storyline incuding the general advance, success, completion, etc and the advance, success, completion, etc of each objective. I think I did it pretty well. :-) I have to deliver this project on friday.

Let me know if there is something that I could help you. I am in debt with the storyline community.

Carlos Puig

Hi Erick, I am back!

You could manage cmi.progress_measure, setting and getting this value using a javascript trigger in any slide. Here how:

//Set the value
where 0.82 is the progress. this should be any number between 0..1

//Get the value

You could assign this value to a storyline variable using this:

var progress = window.parent.SCORM2004_GetProgressMeasure();
var player = GetPlayer();
player.SetVar("progress", progress)

then use the "progress" variable to show the progress, example:

var progress = window.parent.SCORM2004_GetProgressMeasure();
if (progress == null || progress == undefined || progress == ''){progress = "0";} else { progress = Math.round(progress*100)}

var player = GetPlayer();
player.SetVar("progress", progress)

Let me know if this was helpful for you or you have any doubt about it.

Wish you the best with your SCORM Projects.



Najeeb Zaidi

Hi Carlos,

I am in a situation where I have to design a course with 16 modules each with a quiz. I needto show the progress on each of the module and quiz score in the menu slide. I guess cmi.objective is the best method as user defined variables and triggers reset in each session and are not bookmarked.

But the problem is do we need to initiate cmi.objective.1--16 once the course is run for the first time?

Or we can just set the statuses and raw scores in it as we go along?

Carlos Puig

Hi Najeeb Zaidi, I am more than happy to assist you.

What I did in the last SCORM course that I developed was to create the objectives just once in the xml manifest (open the ZIP file in this thread), then work with the Storyline  LMS API during the course to set/get values for each objetive data model varaibles as status, score, etc. 

One important thing a least in Storyline One, is that you must change one line of code in the lms.js (output folder) to avoid reseting the course objectives each time the user open the course. You do this in the line 365, comment this line as //lmsAPI.ResetStatus();

Let me know if your question was related to this.

I hope this help you to achieve your goals. :-)




Najeeb Zaidi

Hi Carlos,

One more trouble, I have set the objectives, and I am defining those conditioned by objective count, so that they can be defined when the training is executed first time by a user.

The problem is that it takes a lot of time, can we define objectives (ID, raw score, probably status (not attempted) and max score) in the imsmanifest so that It make the objectives at the time of activity setup? if so how can it be done?

Young Ahn

Hi, Carlos Puig.

I saw this article and this is really helpful to find out the solution for custom LMS.

I used your code (below) and solve the problem for SCORM 2004.



But I'm still having hard time to figure out the problem.

My client is also using SCORM 1.2 

Can I ask what is javascript for SCORM 1.2 ?


Thank you

Dean DiMonte


I am not sure if I am in the correct discussion but here is my question. 

We run a MOODLE LMS (SCORM compliant) and the SCO data that reports to the LMS is "jibberish".  Is there a way that Articulate Storyline can report what "slide screen number" a student viewed?  For example if there were 5 screens (slides) in a AS2 storyline published SCORM could it report "slide 1 of 5, slide 2 of 5" viewed ?? is this possible?  Somebody must know ?

This discussion is closed. You can start a new discussion or contact Articulate Support.