65 Replies
Joseph Conrad

I'm also very interested in this. I'd like to have people log in, keep track of progress week after week and print certificates as they complete programs much like Lynda.com.

I can understand why Articulate doesn't come with these things standard, but it'd be great to pay extra to get this kind of functionality. Maybe if the developers looked at a standard language like PHP and a standard DB like MySQL (and whatever variants make sense), they could make such an add-on available for those who want something like Blackboard but in a very minimal framework with room to grow.

Kennethg Goeieman

My problem,

I have a clietn with  a learners dbase. We have different quizzes assigned for different learners. Learners will login by entering their ID number on the storyline start screen. is there a way I can push that variable into a SQL dbase and then push back the rest of the information to storyline.

 Please help..ANYONE!

Steve Flowers

Hi Kennethg - 

Fairly complicated problem that goes beyond Storyline and Javascript.

Storyline < -- > Javascript < --- > PHP / .Net / Node (whatever server-side code is chosen to interact with the database) < --- > Database (MySQL / SQL)

The bolded part above is the complicated bit, because there are so many options and configurations. If the server side code is already constructed, building some Javascript to interact (push records to, query, and pull data back) are relatively simple. 

Kennethg Goeieman

Hi Steve,

We managed to get the LearnerID variable to the database and retrieving the relevant values  of Name, Surname, Class for  specific Learner Id. The problem that we are faced with now is setting the variables within Storyline itself. We tried posting from the .phph file it  to the storyline URL but all it does is restart the course and then add the values next to the URL e.g.


This doesnt update the variables within storyline itself but the values that are indicated on the URL is correct.


Please help us on this phase..... :(

Steve Flowers

Hey Mike! You might want to take a look at installing an LRS (Grassblade is pretty cheap and easy to install) and using an xAPI wrapper to send and pull data.  Happy to share some examples if you want to go that route. Would be less "roll-your-own" and would give you some additional coolness with the simple queries and built-in REST offered by xAPI. You can run both SCORM and xAPI at the same time.


Steve Flowers

Either / or both. LRS typically does not handle assignment workflows. So you'd likely want to retain it. LRS becomes an appliance that lets you have a couple of things:

1) Richer data outputs that go beyond score / completion.

2) The ability to pull an agent's completion, preference, or state data from one SCO into another SCO. This isn't possible with SCORM. Nice way to make SCORM files "smarter".

Steve Flowers

The LRS (like grassblade) is essentially a database interface. It's neat once you see how it works. Lots of power not given by SCORM. Good for stuff you'd normally consider an external database for. Built-in handling of association between person <> activity <> context and both human readable and machine readable. 

Mike B.

I'm checking out the GrassBlade website now. I guess I should be more specific about how I instead to use this.

I need a central data repository to replace Google Sheets (the project you were helping me with previously) to track custom data that doesn't necessarily have to do with learner's scores or anything like that. I'd build an admin console in Storyline where an admin could modify data (database records for live events, etc) and then also build a client Storyline project that would also read and write to that database as needed. Would an LRS be appropriate for this?

Mike B.

We are looking at supporting 200-300 concurrent users, but would like to be able to scale that up if necessary. I'm guessing there would be a user check-in record created every 60 seconds or so, for each user. This could add up to quite a few for an 8-hour program. 60 * 8 * 300 = 144,000 records for one program. Now each record would probably contain only a user id and timestamp, but that's still a lot of data.

Steve Flowers

Hey Mike -

Do the checkins need to stack up or would updating the same record be OK? The state can be updated over time for a single statement reference, sort of like suspend data. You could add stuff to this over time as well. 

The nice thing about this is you can create that initial record and update a single record with the new state data, overwriting the old state data or simply adding a new element to the state record. Lots of options.

Mike B.

We would need individual records, as we would be tracking that a user was present the entire time the program was running. These could be purged at a later date though. I'll have to check with our standards person on this, as I know we also use a pop-up every 15 minutes, that the user must click on to acknowledge their presence. I just know that our current platform does track user presence constantly.

Steve Flowers

Could still stack those up in a state element. Or use something like the progressed verb to capture each output. 


Reporting and filtering returns the xapicollection library is fairly clean if you're looking to calculate total number of progress reports. Drilling in to view a list of progress statements per activity or per agent is also pretty easy.