Storyline-based activity being marked "Unsuccessful" by Saba LMS

I'm encountering a problem with a Storyline-based activity hosted on our in-house Saba LMS. Here's the scoop:

  • It's a basic page turner with quizzes scattered throughout. The navigation is strictly prev/next sequential and there's no sidebar.
  • To receive credit for completing the course, users must successfully complete each of the quizzes. I have branching set up to require users to pass each quiz before proceeding.
  • On each quiz's results slide, I have a trigger that either (1) submits the results and jumps to the next slide automatically on success or (2) resets the results and asks the user to review the preceding section on fail. I do not allow the users to review or retry the quiz (except on fail as previously mentioned).
  • I have a final results slide at the very end of the scene that calculates based all 5 of the previous results slides. This results slide is configured so the user must pass each quiz. There's no failure layer, because in theory, you can't get there until you've passed the other quizzes.
  • In the publishing options, I have set the activity to SCORM 1.2 used "Complete/Incomplete" status, and based the scoring on that final results slide.
  • In the LMS, I've designated the activity as required, set a mastery score of 100, and provided unlimited attempts on the activity.

What we've noticed is that, unlike our other AP/QM-based courses, users who close the activity after completing only part of the overall activity are prematurely being scored as "Unsuccessful" by the LMS with a score that reflects the portion of the quizzes they completed (i.e., 8.33), instead of being held at "Not Evaluated" until they finish the course. We don't want to penalize someone who just didn't complete the activity. Really, we don't want the course to move to their completed transcript, until they've successfully completed the course.

Does anyone understand why this behavior would occur? It would seem to me that until the final results slide submits the results to the LMS, there's nothing for the LMS to score. Does the Submit Interaction event in the individual quiz actually communicate results to the LMS? I understood it was just an internal course thing, and that the final quiz communicated its results to the LMS, but maybe I'm wrong. Is there a better way to accomplish this? Thanks!

19 Replies
Christine Hendrickson

Hi Greg,

If you only have that final results slide selected in your "Reporting and Tracking" options when publishing, that's the only slide that should be tracked. 

Does this only happen when a user closes and relaunches the quiz? If so, it may be an issue with resuming the course. 

Have you tested your course in SCORM Cloud? This would help us determine if the issue is Articulate related or if it's on your LMS's side. 

If it appears in SCORM Cloud as well, we'd be happy to take a closer look at what might be going on.

If you can't replicate the issue in SCORM Cloud, it's probably an issue that you'd want to take to your LMS team. 

The articles here and here may also help clear up common LMS issues.

Let us know how it turns out.

Thanks!

Christine

m a

I need HELP fixing the issue with index_lms.html. Below is the error message from my SAMPLE file AFTER following the hint from

http://www.articulate.com/support/kb_article.php?product=ap9&id=zpn7ehj39gqe

0:Fri Apr 12 14:00:24 CDT 2013 - AICCComm - Trying to create MSXML2.XMLHTTP in VBScript
1:Fri Apr 12 14:00:26 CDT 2013 - AICCComm - intReCheckLoadedInterval=250
2:Fri Apr 12 14:00:26 CDT 2013 - AICCComm - intReCheckAttemptsBeforeTimeout=240
3:Fri Apr 12 14:00:35 CDT 2013 - AICCComm - IFrameLoaded
4:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - In GetAICCURL
5:Fri Apr 12 14:00:36 CDT 2013 - GetQueryStringValue Element 'AICC_URL' Not Found, Returning: empty string
6:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - Querystring value =
7:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - GetAICCURL returning:
8:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - In DetectPreferredCommMethod, checking XMLHTTP
9:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - Checking IFrame
10:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - blnCanUseXMLHTTP=true
11:Fri Apr 12 14:00:36 CDT 2013 - AICCComm - blnCanUseIFrame=true
12:Fri Apr 12 14:00:37 CDT 2013 - ----------------------------------------
13:Fri Apr 12 14:00:37 CDT 2013 - ----------------------------------------
14:Fri Apr 12 14:00:37 CDT 2013 - In Start - Version: 3.3 Last Modified=04/12/2013 13:21:10
15:Fri Apr 12 14:00:37 CDT 2013 - Browser Info (Microsoft Internet Explorer 4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; InfoPath.2; .NET CLR 1.0.3705; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MS-RTC LM 8; .NET CLR 1.1.4322; .NET4.0C; .NET4.0E))
16:Fri Apr 12 14:00:37 CDT 2013 - URL: file:///H:/My%20Engage%20Playground/my%20engage%20playground/index_lms.html    (MY SAMPE FILE)
17:Fri Apr 12 14:00:37 CDT 2013 - ----------------------------------------
18:Fri Apr 12 14:00:37 CDT 2013 - ----------------------------------------
19:Fri Apr 12 14:00:37 CDT 2013 - In ClearErrorInfo
20:Fri Apr 12 14:00:37 CDT 2013 - GetQueryStringValue Element 'StandAlone' Not Found, Returning: empty string
21:Fri Apr 12 14:00:37 CDT 2013 - GetQueryStringValue Element 'ShowDebug' Not Found, Returning: empty string
22:Fri Apr 12 14:00:37 CDT 2013 - strStandAlone= strShowInteractiveDebug=
23:Fri Apr 12 14:00:37 CDT 2013 - Standard From Configuration File - SCORM
24:Fri Apr 12 14:00:37 CDT 2013 - Using Standard From Configuration File - SCORM
25:Fri Apr 12 14:00:37 CDT 2013 - In LMSStandardAPI strStandard=SCORM
26:Fri Apr 12 14:00:37 CDT 2013 - Showing Interactive Debug Windows
27:Fri Apr 12 14:00:55 CDT 2013 - Calling Standard Initialize
28:Fri Apr 12 14:00:55 CDT 2013 - In SCORM_Initialize
29:Fri Apr 12 14:00:56 CDT 2013 - In SCORM_ClearErrorInfo
30:Fri Apr 12 14:00:56 CDT 2013 - Grabbing API
31:Fri Apr 12 14:00:56 CDT 2013 - In SCORM_GrabAPI
32:Fri Apr 12 14:00:56 CDT 2013 - Searching with improved ADL algorithm
33:Fri Apr 12 14:00:56 CDT 2013 - In SCORM_GetAPI
34:Fri Apr 12 14:00:56 CDT 2013 - SCORM_GrabAPI, returning
35:Fri Apr 12 14:00:56 CDT 2013 - Unable to acquire SCORM API:
36:Fri Apr 12 14:00:56 CDT 2013 - SCORM_objAPI=object
37:Fri Apr 12 14:00:56 CDT 2013 - In InitializeExecuted, blnSuccess=false, strErrorMessage=Error - unable to acquire LMS API, content may not play properly and results may not be recorded. Please contact technical support.
38:Fri Apr 12 14:00:56 CDT 2013 - ERROR - LMS Initialize Failed
39:Fri Apr 12 14:00:56 CDT 2013 - In DisplayError, strMessage=Error - unable to acquire LMS API, content may not play properly and results may not be recorded. Please contact technical support.

Christine Hendrickson

Welcome to the community, m a!

If you receive an "Unable to acquire LMS API" error when launching Articulate content in your LMS, this may be caused by the version of Java that you have installed.

Some LMS’s use a Java API object to load content. Since content created in Articulate does not require Java, please do the following:

*  Contact your LMS provider and ensure that your installed version of Java is compatible with the version of the LMS you are using.
*  Ensure that you have published your content properly as described in the following article:
http://community.articulate.com/tutorials/products/publishing-a-project-for-lms.aspx

If this issue persists, make the following modification to your player template, and test your content again:

Go to Home > Player > Other, and deselect "Launch player in new window"

You may also want to try testing your course in SCORM Cloud to help us determine if the issue is Articulate-related or if it's on your LMS's side. If it appears in SCORM Cloud as well, we'd be happy to take a closer look at what might be going on. If you can't replicate the issue in SCORM Cloud, it's probably an issue that you'd want to take to your LMS team. The articles here and here may also help clear up common LMS issues.

Thanks!
Greg Edwards

Christine, thanks for your follow-up and sorry it's taken so long for me to reply. So, I took your advice and uploaded the content to SCORM Cloud. I completed the first two quizzes (each incorrectly, and then correctly) and then exited the course. The result is that SCORM Cloud shows a completion status of Incomplete with a score of 25.00%. Here's the Registration State log:

Sepsis

  • Satisfied: unknown
  • Completed: false
  • Progress Status: true
  • Attempts: 1
  • Suspended: false
  • Activity Objective #1
    • Id:
    • Measure Status: true
    • Normalized Measure: 0.25
    • Progress Measure: false
    • Satisfied Status: false
  • TeamHealth Patient Safety Organization: Sepsis
    • Satisfied: unknown
    • Completed: false
    • Progress Status: true
    • Attempts: 1
    • Suspended: true
    • Activity Objective #1
      • Id:
      • Measure Status: true
      • Normalized Measure: 0.25
      • Progress Measure: false
      • Satisfied Status: false
    • Runtime Data
      • cmi.completion_status: incomplete
      • cmi.credit: Credit
      • cmi.entry: Resume
      • cmi.exit: Suspend
      • cmi.learner_preference
        • cmi.learner_preference.audio_level: 1
        • cmi.learner_preference.language:
        • cmi.learner_preference.delivery_speed: 1
        • cmi.learner_preference.audio_captioning: 0
      • cmi.location:
      • cmi.mode: Normal
      • cmi.progress_measure:
      • cmi.score_scaled: 0.25
      • cmi.score_raw: 25
      • cmi.score_min: 0
      • cmi.score_max: 100
      • cmi.total_time: 0000:09:52.78
      • Total Time Tracked by SCORM Engine: 0000:09:54.19
      • cmi.success_status: Unknown
      • cmi.suspend_data: 2a9s4090h0b050d0f070e0a0c06080g0~2U1~2Q11001d11~2F10101101111012110131101411015110161101711018110161101711018110191101a1101b1101c110191101a1101b1101c1101d11~2y12001010101010101010101010101010101010101010101010100b6hsmMdKLx6mb6hsmMdKLx6m000000000b6gZqLUUENJf00~255~2f1a9101001a1a3231x6Ai00002Ag2AgjDi300063118_defaultpn02Ggfe720118_default00000010y02kh0on02zhfe720118_default0002100~2n1a9101001a1a3KO0FjDi3000q1118_default6Ai00J06Ai00006Ai0072pn024bfe720118_default00000010~201a9101001a1a2gtjfDg30118_default2Agpn02lcfe720118_default00000010y02wb0on02Lbfe720118_default000210000000000000000
      • cmi.interactions.0
        • cmi.interactions.0.id: Scene1_Slide8_MultiChoice_0_0
        • cmi.interactions.0.type: Choice
        • cmi.interactions.0.objectives.0.id: Results
        • cmi.interactions.0.timestamp: 2013-05-20T10:39:22
        • cmi.interactions.0.correct_responses.0.pattern: s
        • cmi.interactions.0.weighting: 1
        • cmi.interactions.0.learner_response: s
        • cmi.interactions.0.result: incorrect
        • cmi.interactions.0.latency:
        • cmi.interactions.0.description:
      • cmi.interactions.1
        • cmi.interactions.1.id: Scene1_Slide8_MultiChoice_1_0
        • cmi.interactions.1.type: Choice
        • cmi.interactions.1.objectives.0.id: Results
        • cmi.interactions.1.timestamp: 2013-05-20T10:39:29
        • cmi.interactions.1.correct_responses.0.pattern: s
        • cmi.interactions.1.weighting: 1
        • cmi.interactions.1.learner_response: s
        • cmi.interactions.1.result: correct
        • cmi.interactions.1.latency:
        • cmi.interactions.1.description:
      • cmi.interactions.2
        • cmi.interactions.2.id: Scene1_Slide11_MultiChoice_0_0
        • cmi.interactions.2.type: Choice
        • cmi.interactions.2.objectives.0.id: Results
        • cmi.interactions.2.timestamp: 2013-05-20T10:39:36
        • cmi.interactions.2.correct_responses.0.pattern: s
        • cmi.interactions.2.weighting: 1
        • cmi.interactions.2.learner_response: s
        • cmi.interactions.2.result: incorrect
        • cmi.interactions.2.latency:
        • cmi.interactions.2.description:
      • cmi.interactions.3
        • cmi.interactions.3.id: Scene1_Slide12_MultiChoice_0_0
        • cmi.interactions.3.type: Choice
        • cmi.interactions.3.objectives.0.id: Results
        • cmi.interactions.3.timestamp: 2013-05-20T10:39:41
        • cmi.interactions.3.correct_responses.0.pattern: f
        • cmi.interactions.3.weighting: 1
        • cmi.interactions.3.learner_response: t
        • cmi.interactions.3.result: incorrect
        • cmi.interactions.3.latency:
        • cmi.interactions.3.description:
      • cmi.interactions.4
        • cmi.interactions.4.id: Scene1_Slide11_MultiChoice_1_0
        • cmi.interactions.4.type: Choice
        • cmi.interactions.4.objectives.0.id: Results
        • cmi.interactions.4.timestamp: 2013-05-20T10:39:47
        • cmi.interactions.4.correct_responses.0.pattern: s
        • cmi.interactions.4.weighting: 1
        • cmi.interactions.4.learner_response: s
        • cmi.interactions.4.result: correct
        • cmi.interactions.4.latency:
        • cmi.interactions.4.description:
      • cmi.interactions.5
        • cmi.interactions.5.id: Scene1_Slide12_MultiChoice_1_0
        • cmi.interactions.5.type: Choice
        • cmi.interactions.5.objectives.0.id: Results
        • cmi.interactions.5.timestamp: 2013-05-20T10:39:50
        • cmi.interactions.5.correct_responses.0.pattern: f
        • cmi.interactions.5.weighting: 1
        • cmi.interactions.5.learner_response: f
        • cmi.interactions.5.result: correct
        • cmi.interactions.5.latency:
        • cmi.interactions.5.description:
      • Static Data
        • cmi.completion_threshold:
        • cmi.launch_data:
        • cmi.learner_id: gregsedwards@outlook.com
        • cmi.learner_name: Greg Edwards
        • cmi.max_time_allowed:
        • cmi.scaled_passing_score: 100
        • cmi.time_limit_action: Undefined

Here's a link to the full log for your perusal.

Does this provide you with any additional insight into what might be happening with the course? Does it point to an issue with the

course or the LMS? Thanks!

Christine Hendrickson

Hi there Greg,

It might be best to pass that information on to our support team. They'll be able to take a look at the course and the logs for you and hopefully give you some information that will help get this cleared up for you.

You'll be able to attach the .STORY file on the second page of the following form:

Articulate Support - Submit a Support Case

Please be sure to include a description of your issue. Please also include the URL for this thread in the form. Also, please share the case number with me. You're welcome to do so here, or in a private message. This way I can follow the progress of the case and update this thread.

Thanks very much!

Christine

Douglas Parker

We are having a similar problem.  We have courses that were authored in Storyline and Articulate that will not register as complete once succesfully taken in Saba SEC 7.1.  Prior to upgrading to SEC 7.1, these courses ran without issue in our previous version of Saba (SEC 6,1).  We have found that by putting the browser in compatibility mode and turning off the popup blocker that most of the courses will now complete, however some still will not.  If anyone knows of a solution, please let me know.  In testing we are finding that courses published in Lectora do not have this issue.  I would rather not recreate over 1000 courses created in Articulate and Storyline to Lectora.

Thank you

Doug

Leslie McKerchie

Hi Douglas!

It may be worth testing this in SCORM Cloud to help us determine if the issue is Articulate-related or if it's on your LMS's side. If it appears in SCORM Cloud as well, we'd be happy to take a closer look at what might be going on. If you can't replicate the issue in SCORM Cloud, it's probably an issue that you'd want to take to your LMS team. The articles here and here may also help clear up common LMS issues. Hope that helps.
Sascia Hayden

Hi Greg,

I'm experiencing the same problem in our Saba LMS 5.4. I have course created in Storyline 1 which has about 21 sections with 19 sections that include a quiz using the question pool. I have tried the Articulate Saba fix but I still have the problem of the course being marked unsuccessful and moving to the transcript without being completed.

I have tried tracking the course using the results slide of the last quiz and I encounter the problem of it being marked unsuccessful and moving to the transcript without being completed.

I have tried tracking by the number of slides but for some reason it states that I have a smaller number of slides than I actually do. After publishing and testing in the LMS I still encounter the problem, unsuccessful, on the transcript and not completed.

Does anyone have any ideas or suggestions on how to fix this problem in a Saba LMS?

Thanks,
Sascia 

Judy Nollet

FYI: I publish Storyline courses for a client who uses Saba. Sorry, but I don't know what version. I can tell you this: to make a course work in Saba, I have to do 2 steps:

  1.  Delete the "mastery" line from the imsmanifest.xml file, which is in the main folder of a published course. To do this, open the file with Notepad, and seach for the word "mastery." You'll find a line that looks something like this: "(adlcp:masteryscore)100(/adlcp:masteryscore)," except instead of parentheses, you'll see programming brackets (<>).   Delete that entire line.
  2. In the lms folder, replace the SCORMFunctions.js file with a copy that has been altered for Saba. As far as I can tell, the only change made to the java script is around "WriteToDebug("Setting Exit"), as described below.

The default SCORMFunctions.js includes this script:

WriteToDebug("Setting Exit");             

                blnResult = SCORM_CallLMSSetValue("cmi.core.exit", SCORM_TranslateExitTypeToSCORM(strExitType)) && blnResult;

The revised SCORMFunctions.js adds "//" before "blnResult=" and adds some script at the end, so it ends up like this:

                WriteToDebug("Setting Exit");

                //blnResult = SCORM_CallLMSSetValue("cmi.core.exit", SCORM_TranslateExitTypeToSCORM(strExitType)) && blnResult;

                blnResult = SCORM_CallLMSSetValue("cmi.core.exit", "") && blnResult;

Please don't ask me to explain that, because I'm not a java scripter. All I know is that it works for courses published for SCORM 1.2.

Good luck!

Judy Nollet

As Leslie guessed, I don't subscribe to this thread. Someone emailed me about this today, so I'll respond here, too. 

You can make your own Saba-compliant version of the SCORMFunctions.js by saving the default file, and then editing it as described above

Because I publish for multiple LMSs, I have the revised file stored as SCORMFunctionsSABA.js.  After I publish a course for Saba, I rename the default file SCORMFunctionsORIG.js, and then rename my edited file to SCORMFunctions.js. As long as the revised file has that name and is in the course's lms folder, the published course will use it. 

Seth Merriam

Hi Everyone, I was the "someone" who contacted Judy and I wanted to follow up with a few new things I learned. First, though, Thanks Judy! This has helped a lot.

Now, New things:

  1. I found another post (https://articulate.com/support/article/scorm-12-course-is-never-completed-in-saba-lms-sl2) and though it says its for storyline two, it's part of what Judy suggests doing. The reason I point this out, though, is that the second bullet item suggests how you can make this change ONCE for all your courses. For some this might not be advantageous, but if you're like me and publish to the same LMS 95% or the time, it much better than having to mod these files after each publish. It also helps with some colleagues who are less inclined to edit code ;)
  2. this post https://community.articulate.com/discussions/articulate-storyline/lms-reporting-476433ad-8825-4bd3-8c76-bf4c589d273e#reply-65075 has a section from Brian Allen that was very helpful to me. It was for a different LMS than what I use currently, but it helps makes some extra sense of when/why you might choose one reporting option over another. Heres the bit I mean, though the whole post might be worth a skim:
    1. Completed/Incomplete: We use this for any unscored content where we are tracking completion based on slide views. If the minimum number of slides are viewed, then the user is marked as completed. If not they are left in progress.
    2. Passed/Incomplete: We use this for scored content where we want the user to be left in progress if they do not achieve the minimum passing score. If the user achieves the minimum passing score they are marked as completed/passed with score, if not they remain in progress and no score is passed to SumTotal, allowing them to try again.
    3. Passed/Failed: We use this on a limited basis, primarily for things like compliance or certification activities where we want to record a failed status. If the user achieves the minimum passing score they are marked as completed/passed with score, if not they are marked as completed/failed with score. This is especially useful if you want to limit number of attempts through a learning activity for the purpose of assigning remedial training, etc., in the event of someone failing.