Report to an external LRS
Dec 30, 2021
Hello everyone,
I don't understand the meaning of the new option released in November 2021: publication for LMS and LRS. The documentation says:
"Actor is the information used by the LRS to identify each learner—for example, the full name and email address of a learner. You don't need to supply the actor when you publish for xAPI or cmi5—your LMS supplies the actor. However, you must provide the actor when you publish for both LRS and SCORM or AICC LMS or you publish for LRS only."
But what is the point then? If my LMS supports xAPI/CMI-5, why would I send data to another LRS?
This option makes sense for those LMS that only support SCORM and cannot provide an actor. Articulate Storyline should receive the actor via SCORM automatically, for example, as it is done here:
var studentID = pipwerks.SCORM.data.get("cmi.core.student_id");
One of the valid Inverse Functional Identifiers in xAPI is an account Object, which has two properties, homePage, and name. The name is the id that we just got through the SCORM API, and the homePage is an IRL that we must specify in the configuration of the course.
As you can see this launch method constructs the user identity in an artificial way: getting part of it from the LMS, and using a pre-configured value to complete it. Obviously, this will only be useful if that way of identifying users is acceptable in your situation.
18 Replies
Hello Oleg!
I'm happy to clarify!
If my LMS supports xAPI/CMI-5, why would I send data to another LRS?
Any learning data can be captured with xAPI and cmi5. The LMS uses a conformant LRS to support both. With an LRS, you can build a learning ecosystem beyond the LMS and easily connect to other systems. LRSs aren't intended to replace LMSs. LRSs are more likely to be components of LMS.
Hi Lauren,
Articulate has been supporting xAPI / CMI-5 for a long time. I don't understand what is the point of the November 2021 update. Prior to this update, Storyline courses were available in the LRS.
As I understand it, the point is to send data to two LRSs at the same time? But what is it for?
I was hoping that two standards could be supported: SCORM and xAPI (the course launched in the old LMS via SCORM and sends data to the LRS), but that doesn't work, since the old LMS cannot provide an actor. It is not possible to modify old LMS or cloud LMS that only support SCORM to provide an actor.
Hello Oleg!
The November 2021 update makes it possible to send data to an LRS, an LMS, or both. Publishing to two LRSs isn't an option.
Does the LMS you're using also include an LRS?
Hi Lauren,
How can I send data to both LMS and LRS, if LMS only supports SCORM and cannot provide an actor?
Hello Oleg!
Which LMS are you using and I can see if your LMS includes an LRS?
Hi Lauren,
It can be any LMS that only supports SCORM: for example, iSpring Learn or WebTutor. LRS is installed separately, for example Learning Locker. It is necessary to transfer data simultaneously to LMS (which supports SCORM), for example, iSpring Learn, and to LRS, for example, Learning Locker.
Hi Oleg,
Check out our documentation here.
If you'd like to send to an LMS and an LRS, make sure both are selected.
In addition, since you're using SCORM, be sure to provide an Actor during your LRS configuration:
Your LRS admin or IT staff will use scripts to supply the LRS details, including the actor, endpoint, and credentials.
Hi Leslie,
sorry for the bad english.
What I'm trying to say is: in old or cloud-based LMSs that only support SCORM, there is no way to provide an actor. Therefore, the new publishing options added in the November 2021 update don't make any sense. We cannot change the LMS configuration for us or our clients.
It makes sense if Articulate Storyline will automatically get an actor from SCORM, without involving IT staff. I gave in the post an example of the implementation of the approach in the courses Adapt Learning.
Here's a similar question from another user: https://community.articulate.com/discussions/articulate-storyline/how-do-i-create-an-actor-query-string-when-using-xapi-statemnt-trigger-but-publishing-for-scorm
Hi, Oleg.
Thank you for reaching out and sharing your thoughts about the new feature in Storyline!
We also have a feature request logged for the ability to send actor information through variables (xAPI), which might work for what you're looking to accomplish, so I added this discussion to the report.
We will update this discussion if we have any news to share or if this request makes it to our feature roadmap.
Hello Maria,
This is exactly what would fit, thanks! I'll wait for news.
Hello!
I tested the Articulate Storyline update on February 15th 2022 and I hasten to report that I am absolutely satisfied with the new feature - JS templates for getting an actor. It works fantastic for old LMS.
I just have one question: is this the last new feature for Storyline? Roadmap is empty...
Hi, Oleg.
I'm so glad to hear the new feature worked so well for you!
As for the roadmap, we are in the process of updating it to reflect upcoming features for Storyline 360, so definitely keep an eye on it!
Oleg, are you pulling SCORM variables (Student ID or Student Name) from your "old LMS" using this approach? I'm trying to adapt the "Static Account" template to grab the Student ID, but without success.
Hello Stephen,
I'm using a personal JavaScript template, you can try:
lmsAPI = parent;
function getActor() {
return {
"objectType": "Agent",
"account": {
"homePage": "https://www.example.com",
"name": lmsAPI.GetStudentID(),
}
};
}
Thank you for sharing this code with Stephen, Oleg! I do want to clarify - we have not blocked access to the E-Learning Heroes site. Please reach out to our team directly at support@articulate.com if you are not able to access E-Learning Heroes.
Hello Stephen,
Thank you for this Javascript! It worked perfectly for me in ScormCloud but doesn't appear to work for all LMS's as it did not work for me within Cornerstone. It actually breaks the course completely in Cornerstone. The course gets stuck on the loading screen and never launches.
It took a lot of tinkering but I was finally able to get it to work for Cornerstone too by using the below JavaScript. Just wanted to share for others that my find it valuable.
function findLMSAPI(win) {
// look in this window
if (win.hasOwnProperty("GetStudentID")) return win;
// all done if no parent
else if (win.parent == win) return null;
// climb up to parent window & look there
else return findLMSAPI(win.parent);
}
function getActor() {
var lmsAPI = findLMSAPI(this);
var myName = lmsAPI.GetStudentName();
return {
"objectType": "Agent",
"account": {
"homePage": "https://url.com",
"name": myName
}
};
}
Lauren, I am trying to publish to an iPad. Do you know what steps do I have to take to accomplish that?
Matt
megan@nsaero.com
Hi Matthew,
I see that you've opened a support case and that you are working with my colleague Georvy. You're in great hands!
We'll continue the conversation over in your support case.
Have a great start to your day! ✨