SAP Knowledge Base Article - Public

2337470 - LMS Scorm 1.2. Knowledge Support and Tips

Symptom

SFTipsNTricks.JPGLMS.png
Click to go back to the main page

 

LMS SCORM 1.2. KNOWLEDGE SESSION FOR CUSTOMERS, PARTNERS AND SAP PRODUCT SUPPORT

 

1. What is Scorm 1.2 ?

2. Why do Scorm Content and LMS need to be on the same domain?

3. Scorm API overview

4. How does content find Scorm API when it is well-designed?

5. Scorm data tracking from Button Click to Database

6. What functions and values are used by Scorm1.2 course?

7. Major Scorm Values

8. Common Troubleshooting

 

1. What it is Scorm 1.2. ?

Sharable Content Object Reference Model (Scorm) is a collection of standards and specifications for web-based electronic educational technology (also called e-learning). It defines communications between client side content and a host system (called "the run-time environment"), which is commonly supported by a learning management system. Scorm also defines how content may be packaged into a transferable ZIP file called "Package Interchange Format.

Scorm 1.2 was the first version that was widely used. It is still widely used and is supported by most Learning Management Systems.

https://en.wikipedia.org/wiki/Sharable_Content_Object_Reference_Model

http://Scorm.com/Scorm-explained/

 

ToTop.png

2. Why do Scorm Content and LMS need to be on the same domain?

When loading web pages, Browsers don’t not allow a JavaScript code to access JavaScript API from a code that belongs to a different domain. It is intentional on the part of the browser makers because it’s a security risk.

For more info: http://Scorm.com/blog/2013/04/solving-the-Scorm-cross-domain-issue/

In SF LMS scenario:

LMS exposes the JavaScript Scorm API on its Structure page when launching the content, this Structure page is on domain ‘https://customer.plateau.com’ and so is the SF Scorm API. If the content launch in the popup is from a different domain (ex: domain A), JavaScript Code of this domain will not be able to find the API on LMS JavaScript code. It will lead to ‘LMS API Not Found’ types of errors.

 

ToTop.png

3. Scorm API overview

Scorm communication is processed by a client-side API provided by the LMS. The content object (SCO - sharable content object) communicates with the API through a series of Scorm-defined JavaScript function calls. The API processes the functions and handles the communication with the LMS. Scorm 2004 introduced some additional functionality which moved beyond the original AICC communication model.

The basic idea is any Scorm compliant LMS will provide an API that understands a set of Scorm-defined JavaScript functions. All the messy details of communicating with the LMS are handled by the API, thus allowing Scorm content to communicate with any Scorm compliant LMS simply by using the predefined API functions.

Picture1.png

In SF LMS, The API is exposed by The Structure page, then the content find this API and initialize the Scorm connection.

Picture2.png

                                                                                                         Picture4.png

Picture3.png

 

ToTop.png

4. How does content find Scorm API when it is well-designed?

If the course is well-designed by vendor, the code will scroll all windows hierarchy (course window is self-window and LMS window is the parent window) to find the Scorm API. The window exposing Scorm API should contains object ‘API’. All following test have been made with Scorm Test content

In the example below, the content code tries to get the API object from course window (1st attempt) then to parent window (=LMS window on 2nd attempt).

1st  loop: try to get API from content popup page -> fail

 Picture5.png

2nd  loop: try to get API from Parent window=LMS Structure page -> OK

 Picture6.png

 

ToTop.png

5. Scorm data tracking from Button Click to Database

Many troubleshooting tools are available to track the Scorm mechanism, from content ‘button click’ to values requested and stored in the database, the chain of events can be followed in below diagram. In below example, Scorm value ‘lesson_status=completed’ has been committed/posted to LMS server.

Picture7.png

 

 VENDOR CONTENT LEVEL

Script Debugger tools can be used to capture the ButtonClick event, how the Scorm API is identified (see previous chapter) or how Scorm Functions are called. Using Breakpoint can help to identify values and functions stacks. Each browsers as its debugging tools: On Firefox, with add-on Firebug (see previous chapter) or Debugger (F12), On IE->IE Developer Tools (F12), On Chrome->Debugging Tools (F12). Note that the content code is developed by the vendor, SF is not responsible for this code.

Picture8.png

 

SCORM API LEVEL

It displays in the JavaScript console all the actions performed by the Scorm API, to enable it, see KBA 2278621 - Learning - How to collect JavaScript Scorm API logs

API functions can be identified with all cmi values (lesson_status, score, lesson_locations..) involved.

Picture9.png

 

NETWORK TRACES LEVEL

Many tools can be used (HTTPWatch, Fiddler, IE Dev Tools, Firefox Dev Tool, Chrome Debugging Tool). Scorm communication can be identified and see values posted to LMS and requested from LMS. All the example of this guide are done with IE Dev Tools(F12) as most of customers are restricted to IE browser and cannot install any software (HTTPWatch or Fiddler), For sniffer tools, see KBAs:

2272657 - How to collect Network traces with Chrome Network Tool

2269682 - How To collect Network traces with Firefox Network Tool

Scorm communication is identified with URL ‘/learning/PwsAicc’

Picture10.png

 

Scorm values posted within the Scorm communication

Picture11.png

LMS response

Picture12.png

Cookie section to identify JSESSIONID

Picture13.png

 

DATABASE LEVEL
Only for Customer Support

 

Scorm value sent by Content to LMS can be identified in the Database:
PA_CBT_STUD_CPNT_MOD column AICC_DATA

Picture14.png

Using this query:

--Object Details--

select md.*,st.* from my_schema.PA_CBT_STUD_CPNT st,my_schema.PA_CBT_STUD_CPNT_MOD md where st.stud_cpnt_id = md.stud_cpnt_id and st.stud_id='my_stud_id'and st.cpnt_id='my_cpnt_id';

 

 

ToTop.png

6. What functions and values are used by Scorm 1.2 course?

Scorm1.2 API has a limited number of functions, those function can process Scorm values called CMI ("Computer Managed Instruction"), KBA:

2154063 - Scorm 1.2 API Calls - Learning Management System

Once the API has been found, the content can use functions included in Scorm API:

 

LMSInitialize( )
The content must call this function before calling any other API function. It indicates to the LMS that the content is going to communicate.

This function trigger a GetParam command to LMS, then LMS returns all Scorm values stored in DB

-> SCORM API:

Picture15.png

 

-> NETWORK TRACES:

SCORM COMMUNICATION OCCURRED:

Picture16.png

REQUEST VALUE TO LMS:

 Picture18.png

RESPONSE FROM LMS:

 Picture19.png

 

LMSGetValue( )
This function is used to pass data from the CMI to the content. Only one value is returned for each call. The category and/or element is named in the parameter.

This function returnes value stored locally (not in LMS DB), it does not perform any GET_PARAM from LMS. There is no network interaction.

Example: GetValue(‘cmi.core.student_name’)

Picture20.png

 

LMSSetValue()
This function set the scorm values locally, this function does not send any data to LMS, the data will be send to LMS when Commit() function is called.

Ex: set a score of 88

Picture21.png

API LOGS:

Picture22.png

 

LMSCommit()
Commit Function send all values previously set (with LMSSetValue function) to LMS

API LOGS
Picture23.png

NETWORK TRACES


Picture24.png

 

ToTop.png

7. Major Scorm  values

Major Scorm  values

The most important Scorm  values (also causing the most of issues) are the ones in charge of the course completion, they can be tracked tin the database, see AICC_DATA Colum Analysis section:

  • Lesson_status -> Completed/Passed value to trigger completion
  • Score -> needs to be over Mastery Score set at the item level
  • Session_time -> sent to LMS, it increments TOTAL_TIME value on LMS Database

 

Picture25.png

ToTop.png

8. Common Troubleshooting

The main steps are defined in this guide: 2293373 - SCORM  & AICC Content Troubleshooting Guide

Establish a Diagnostics
There can be various root causes for an issue and difficult to identify especially if the issue is intermittent. So first, patterns need to be identified, keep all those questions in mind during the troubleshooting. If you open a CS incident, please answer as much as possible bellow questions.

LMS patterns
Is it happening to all users with one specific item?
Is the issue happening to only one or few users with a specific item?
Is there a Mastery Score set on the content object (admin side: Item record->Online Content, click on Content object) that affected users could have potential not reached?
Do you see an ‘API not Found’ or equivalent error when affected user launch the course?
Was this course working before and suddenly all users are not able to complete the course?
Are the affected users spend a long period of time (~2h) on the course compared to successful users?
Did the affected users closed or navigate away from the Launch page (Online structure page with yellow rectangle) before closing the course window?
If the course is not hosted on SF Icontent server and the issue is replicable by all users, did you implement a cross-domain solution (Proxlet or Reverse-Proxy)?
Has SF Icontent server been implemented recently?

Environment patterns
Is it happening on all browsers (Internet Explorer, Firefox, Chrome)?
Is it happening only on Internet Explorer?
Is the issue happen to users of a specific region?
Is the issue happen for students connected to a specific network?

Content patterns
Is the issue happening with courses from the same vendor?
Is the course has several Exit buttons (Red-Cross on popup top-right + exit button within the content)? Do they have the exact same behaviour? Are affected users using a particular way to exit the content comparing to successful users?
Did affected users exit the course on final slide after completing the quiz? Or did they navigate back to table of content (or back to previous chapters/slides) before exiting?
Did the affected user provide you a screenshot that show quiz was successful?
Do you know exactly the completion criteria of the course (min score, chapter/final quiz, 100% slides coverage)?
If the content contains quiz at the end of each chapters and a final chapter, would you know from the vendor if the completion criteria is based only on final chapter?
Is the completion criteria also based on slides/chapter viewed in addition of final quiz?
Is the completion criteria based on the order of viewed chapter? Order of completed quizzes?

Student completed the quiz but item still in Learning Plan
2 main scenarios:

Content related:
Content never sent ‘lesson_status=completed/lesson_status=passed’ (with score if a mastery score is set),

Actions:
Check in the database if any ‘Completed/passed’ value (see Query to see Object Details in previous chapter)
Ask student to replicate with network traces, then identify ‘learning/pwsaicc’ traces and lesson_status/score values sent
Check the Completion condition of the Item on admin side, see if Scorm  value sent to LMS fullfill the LMS Item->Online Content setting.

Reassign the item (the item completion condition could have been changed by an admin since the item assignment)
See above Content patterns which could help to identify why content is not sending completion value.

Environment related: Scorm  content never found the Scorm  API and failed silently (Environment)
Make sure ‘*.plateau.com’ domain is in IR Trusted Sites (Internet Options->Securitry Tab->Sites button)
Track user session with splunk logs, see if any Scorm  connection ‘learning/pwsaicc’
Ask user to collect logs see if any ‘learning/pwsaicc’

 

Bookmarks are not working, student need to start from the start when re-launching

  • Possibility that the content never connect to Scorm  API (some vendor does not show any error message so silently fails), need to troubleshoot environment.
  • The content does not sent any bookmarks (Scorm  suspend_data):
    check on DB if any bookmarks saved (table pa_cbt_stud_cpnt_mod_bkmrk columm bookmark, see DB query ‘Object Details with Bookmarks’)

 

Student completed the course but no score displayed
Check in the Database if Scorm  score was sent to LMS (table pa_cbt_spnt_mod:SCORE, see DB query ‘Object Details with Bookmarks’)

 

Student completed the course but no time displayed
Check in the Database if Scorm  score was sent to LMS (table pa_cbt_spnt_mod:TOTAL_TIME, see DB query ‘Object Details with Bookmarks’), note that each time the course is launched, the content sends SESSION_TIME (assuming the conten is well designe and send cmi.core_session_time value), LMS increments TOTAL_TIME with received SESSION_TIME. SESSION_TIME is not stored in DB.

 

AICC_DATA column Analysis

A way to track Scorm  completion for CS agent is to check the value of PA_CBT_STUD_CPNT_MOD column AICC_DATA (see DB query ‘Object Details’)

Item assigned then launched with no Scorm  communication:

 

•AICC_DATA has value NULL

 Picture26.png

 

•Scorm  Connection initialized

AICC_DATA gets value ‘[PLATEAU_CONTROL] FIRSTTIME=0’

Picture27.png

 

•Track completion with AICC_DATA

In the DB PA_CBT_STUD_CPNT_MOD column AICC_DATA does not always reflect what the content was sending. LMS modify LESSON_STATUS value with below logic. An Item Object has been setup with MASTERY SCORE = 80 :

Picture28.png

 Image/data in this KBA is from SAP internal systems, sample data, or demo systems. Any resemblance to real data is purely coincidental.

ToTop.png



Environment

SAP SuccessFactors Learning

Keywords

Scorm, Scorm 1.2, LMS Content , KBA , LOD-SF-LMS-CNT , Content , LOD-SF-LMS , Learning Management System , How To

Product

SAP SuccessFactors Learning all versions