SCORM FAQ

From MoodleDocs
Revision as of 21:15, 2 August 2011 by Dan Marsden (talk | contribs) (→‎SCORM Administration Options: remove old setting (sync time))

SCORM Information

Advanced Distributed Learning (ADL) is the organization that wrote the SCORM standard. You can download documentation and samples form ADL's Web site. Documentation for SCORM 1.2 in several languages is available here.

Philip Hutchison provides an AS3 and JavaScript wrapper, as well as a sample package: http://pipwerks.com/downloads/

SCORM Package Contents

A SCORM package must contains in the root of zip a file named imsmanifest.xml which defines SCORM course structure, resource location and many other things. Other files used in the package, such as HTML files, XML files, multimedia files, and JavaScript for the SCORM API must be listed in this file. The LMS parses the manifest, and provides the files listed there to the content package during runtime.

AICC Package Contents

An AICC package is defined by several files (from 4 to 7) with defined extensions as follows:

  • CRS - Course Description file (mandatory)
  • AU - Assignable Unit file (mandatory)
  • DES - Descriptor file (mandatory)
  • CST - Course Structure file (mandatory)
  • ORE - Objective Relationship file (optional)
  • PRE - Prerequisites file (optional)
  • CMP - Completition Requirements file (optional)

Basic Troubleshooting

  • Make sure you are running Moodle 2.1 or higher, a large number of SCORM related bugs are present in previous versions.
  • Make sure your SCORM object is SCORM compliant - check it in an external SCORM player like Reload to see if it works there.
  • Post a copy of your SCORM object in the SCORM Repository and post a message asking for help in the forums, linking to your SCORM object explaining exactly what you expect to happen, and what is happening instead.

Does Moodle Generate SCORM Content?

Moodle does not generate scorm content. Moodle presents the content in SCORM packages to learners, and saves data from learner interactions with the SCORM package.

Supported Versions

  • Moodle 1.9.5 is certified SCORM 1.2 compliant.
  • SCORM 2004 is not completely supported in Moodle at this stage. Parts of the API have been implemented, but others such as Navigation and Sequencing are not yet supported. If you require a fully certified SCORM 2004 Player in Moodle, Rustici Software have a Moodle plugin which connects to their commercial SCORM Cloud service turning Moodle into a fully compliant SCORM 2004 LMS.
Moodle Core SCORM 2004 development requires funding! See SCORM 2004 in Moodle for details.
  • AICC objects are supported in Moodle 2.1 and higher - unfortunately the availability of publicly accessible AICC objects is limited, so testing has been rather difficult. If you have any AICC objects you are willing to share, please upload them to the SCORM Repository
  • SCORM 2.0 has not been released yet by ADL, and Moodle does not support any of it at this stage.

Asking for Help in the SCORM Forum

When trying to engage the community to help with a problem you are facing, you will get a better response if you follow a few simple guidelines:

  • Be prepared to provide the SCORM package that illustrates your problem - if you don't then it will be very difficult for anyone offering assistance to recreate your situation - a real barrier to help.
  • Always start your report with version information - preferably the information displayed on the Admin -> Environment panel eg. http://localhost/moodle/admin/environment.php where http://localhost/moodle is your particular prefix. With this it will be clear how you are running your Moodle instance, on what platform, and at which version. This will quickly expose issues where a simple upgrade will solve your problem.
  • Screenshots are very helpful. Provide a screenshot of all error messages, and any instance where something seems to go wrong in the interface.
  • Run your problematic SCORM package through debugging (see below) and include the text of that API log with your post. That way we can see right away if the right function calls are not taking place.
  • If you're using a content development suite which publishes to SCORM, such as Articulate, Captivate, Lectora, LessonBuilder, Udutu, or some other product, then include that in your post. Every authoring software has its ticks, and if you've run into one, it's likely that someone else has also dealt with it, and will recognize it. However, please keep in mind that this is a place to get help with Moodle issues, not help with your SCORM package authoring suite.

Debugging

  1. Debugging settings are located at Settings > Site Administration > Plugins > Activities > Scorm.
  2. Check the checkbox for Activate API debug...
  3. Set the api mask. You can use the mask to enable debugging under certain conditions. For example, if you are logged in using the admin user (username admin) you can set the api mask to: admin.* Users not logged in as admin will not see the debugging log. The "Default" api mask is .*

What does the debugging log mean?

The SCO commonly sends the following communications through the API:

  • LMSInitialize(); opens the connection between the SCO and Moodle
  • LMSGetValue( 'valuename' ); gets a value from Moodle
  • LMSSetValue( 'valuename' , 'value' ); sends a value to Moodle
  • LMSCommit(); saves values sent to Moodle via LMSSetValue() and should be called after every LMSSetValue()
  • LMSFinish() saves values sent to Moodle and closes the connection between the SCO And Moodle

Red lines in the debugging log means there was an error in the communication through the API.

If LMSInitialize() fails, returns an error, then no subsequent values sent to Moodle will be saved.

Click through the entire SCORM package. Then access the scorm report for your attempt, and compare the saved values in the debugging log with Moodle's report of the attempt. If the values set in the debug log do not match the values saved to Moodle, then there may be a problem with Moodle. Otherwise it's likely to be an issue with the SCO or the SCORM activity settings not giving you the functionality you need.

SCORM and the Gradebook

Please see FAQ:My SCORM Module doesn't function properly

Some SCORM packages report both cmi.core.lesson_status and cmi.core.score.raw. Others report only cmi.core.lesson_status, or only cmi.core.score.raw. The Grading Method setting for SCORM objects is meant to account for that.

If you have the Grading Method set to Highest grade, Average grade, or Sum grade, and your learning object does not report a score, only, cmi.core.lesson_status, then there will be no numerical score to pass to the gradebook.

If your SCOs do not report cmi.core.score.raw, then the best Grading Method setting is Learning Objects. This reports either a 1 or a 0 as a score for each learning object. The gradebook value for that SCORM activity is the percent of scos in the package for which learners got a 1.

On the other hand, if your SCOs do not report a lesson_status, then select one of the score-based Grading Method options, such as Highest grade, Average grade, or Sum grade, and not Learning Objects.

If you do not know what your SCOs are reporting to the LMS, then run them through to completion with debugging on.

Much of the way SCORM objects are graded is controlled inside the SCORM Authoring process before it is packaged for use in an LMS like Moodle - make sure all your grading settings are set correctly. Moodle 2.0 contains some new controls that allow a teacher to override the behaviour as set by the SCORM object to allow for greater, more flexible control. (see MDL-11501 for more information on this)

SCORM Administration Options

Beginning in Moodle 2.0 there are new site administration options which impact the setup options available to SCORM activities in Moodle courses. These options are accessed as an admin user, in the Settings menu: Site Administration > Plugins > Activity Modules > SCORM Package.

Many of the settings available here simply set the default value for the SCORM activity module setup options provided within courses. This page will cover the options provided which do not simply set a default value for the SCORM activity editing page view.

Enable external package type: If selected, presents a text field to paste a URL to a remote imsmanifest.xml (in an unzipped remote SCORM package), as well as the file picker option provided by default. Note that the content is played from the designated location, and not unpacked into the Moodle file system. So any reporting data will not be saved via the SCORM API in to Moodle.

Enable downloaded package type: If selected, presents a text field to paste a URL to a remove package.zip SCORM package. Package is downloaded and unzipped into the Moodle file system.

Enable IMS package type: Enables a package to be selected from within an IMS repository

Force users to enable JavaScript: Since the SCORM API uses JavaScript to save data to Moodle, this is a great idea!

Activate API debug and tracing (set the capture mask with apidebugmask): Turns on debugging for SCORM activities. In Moodle 2 you no longer have to also turn on debugging in the developer options.

API debug capture mask - use a simple regex on <username>:<activityname> e.g. admin:.* will debug for admin user only: You can use the mask to enable debugging under certain conditions. For example, if you are logged in using the admin user (username admin) you can set the api mask to: admin.* Users not logged in as admin will not see the debugging log. The "Default" api mask is .* which translates roughly to everybody.

Common Solutions

Difficulty Displaying a SCORM Package

If you have difficulty displaying a SCORM, try loading the SCORM in Reload and re-saving it, then save the folder as a .zip package and try again.

Character Display Errors

When you notice there is a problem displaying characters correctly, it could be a misconfiguration of your server. Make sure that both httpd.conf (when using Apache) and php.ini are set to DefaultCharacterset = utf8 or switch the sending of a default character set off.

slash arguments warning when I add/update SCORM obects in my course

SCORM forces what is referred to as "slash arguments" - Unfortunately, some PHP servers don't allow this method and your SCORM objects may not display. This affects IIS 5 and earlier, and some Apache servers. Under IIS 5 and earlier, a workaround using an ISAPI re-write tool can be used, Apache users should look at this link: https://docs.moodle.org/en/Installation_FAQ#Uploaded_files_give_.22File_not_found.22 - A check on the admin/health.php page is also made to see if slasharguments is supported - visit http://yourmoodlesite/admin/health.php to check to see the status of slasharguments on your server.

SCORM doesn't work on Godaddy Host

Godaddy hosts give a 404 file not found error - this is because by default they do not allow slash arguments which SCORM requires. The best way to test this is to visit http://yourmoodlesite/admin/health.php - but the fix involves adding a php.ini or php5.ini file with the following text:

AcceptPathInfo
cgi.fix_pathinfo=1

Zlib warning when I add/update SCORM objects in my course

Zlib is a php compression setting made in a websites PHP configuration - unfortunately some browsers don't handle this well (especially Internet Explorer 6) Some webhosts enable this setting, but it will likely cause issues for your users when they attempt to view/use the SCORM object. You will need to contact your server administrator to turn this off. The setting to change in php configuration is "zlib.output_compression"

Incorrect file package - missing imsmanifest.xml or AICC structure

This means that Moodle cannot find a file called imsmanifest.xml inside the SCORM object. Reasons for this could be:

  • imsmanifest.xml needs to be immediately inside the scorm directory, NOT inside a directory inside of that. So if the zipped scorm package is package.zip, the unzipped package directory should contain immediately inside of it the imsmanifest.xml. This is a common mistake and normally occurs when a SCORM author creates a package themselves and then selects that folder to compress. This places the content folder inside of another folder, The imsmanifest.xml is there, but it is 2 directories deep. To avoid this problem when zipping scorm content into a package, go INSIDE of the exported scorm folder, select all files inside, and compress them while all are selected. The resultant compressed directory has the imsmanifest.xml file in the first directory, immediately available to the moodle scorm loading process.
  • when using linux based systems the filename imsmanifest.xml must be all in lowercase not IMSmanifest.xml or Imsmanifest.XML
  • The SCORM authoring tool Articulate sometimes fails to create the imsmanifest.xml -Try exporting the package again and see if the manifest is generated.
  • The SCORM authoring tool Articulate Presenter will publish packages where the imsmanifest.xml file is in the correct place, but there are several lines of white space in the manifest file if you do not fill out the Reporting and Tracking Options in Articulate Presenter for Keywords and LMS Description. Moodle will give a "Manifest not found" error when encountering this. To fix this problem select the Reporting and Tracking Options in the Articulate Presenter publish dialog and fill in the LMS Description and Keywords.

File not found error

You have this error if the scorm package is created in moodle, and the scorm menu loads, but inside of the viewing area for the scorm content, you get a page with a 404 file not found error, usually showing the current Moodle theme.

What this means is that one of the files listed in the imsmanifest.xml is not in the scorm package or not in the correct directory.

Download and unzip the package, open up imsmanifest.xml. At the bottom of the xml file, below any metadata, you'll find a place where organizations and resources for those organizations are designated:

<organizations default="TOC1"> 
        <organization identifier="TOC1"> 
           <title>SCORM Test</title>
           <item identifier="I_SCO0" identifierref="SCO0">
           <title>Library Quiz</title>
           <adlcp:masteryscore>0</adlcp:masteryscore>
        </item>
        </organization>
     </organizations>
     <resources>
        <resource identifier="SCO0" type="webcontent" adlcp:scormtype="sco" href="scorm.html">
           <file href="scorm.html"/>
           <dependency identifierref="ALLRESOURCES" />
        </resource> 
        <resource identifier="ALLRESOURCES" type="webcontent" adlcp:scormtype="asset">
           <file href="scorm.html" />
           <file href="scorm.js" />
           <file href="swfobject.js" />
           <file href="scorm.swf" />
           <file href="scormwrapper.js" />
        </resource>
     </resources>
  </manifest>

In this xml, we have a single organization, and in that organization is a single resource, a single sco. There are 5 files necessary for that resource to work correctly. The scorm.html file is loaded first. It loads 3 external js files and a swf.

What you need to do now is go to the directory containing imsmanifest.xml, and check that all of those listed files are available at the correct path from imsmanfiest.xml, as listed in imsmanifest.xml. If any one of those files is missing (especially the html file or the swf), or if the paths in imsmanifest.xml are incorrect, then it's very likely that the scorm object won't be able to load at all.

Sometimes the files aren't missing, but are simply misnamed in the manifest, or placed in the wrong directory. You can fix this by moving the files to the correct places, or updating their names so that the imsmanifest and the actual file names match up. In the case of a misnamed file, change the manifest rather than the actual file names, since the the files also reference one another in other places!

Unzip issues

If you get a blank page after filling in the title, description, and selecting a large SCORM file, it's likely that the file you are trying to upload is too big for the php zip library to handle - you must use external zip/unzip binaries

For help setting the zip and unzip system paths, see here: https://docs.moodle.org/en/System_paths#Path_to_zip

For discussion of this issue: http://moodle.org/mod/forum/discuss.php?d=119194#p522513

Clear an Attempt

To clear attempts by a student:

  1. Go to the SCORM activity and select the link "View reports for x users"
  2. Select the attempt or attempts you want to clear using the checkbox
  3. Select Delete in the drop-down box at the bottom of the page

Handling of Multiple Attempts

  • The option to start a new attempt is provided by a checkbox above the Enter button on the content structure page, so be sure you're providing access to that page if you want to allow more than one attempt.
  • An attempt is not defined until the cmi.core.lesson_status for the attempt is set to either 'completed' or 'passed'. After that, the Start new attempt checkbox is available to the learner.
  • Some scorm packages are intelligent about new attempts, many are not. What this means is that if the learner re-enters an existing attempt, if the SCORM content does not have internal logic to avoid overwriting cmi.core.lesson_status and cmi.core.score.raw, they can be overwritten, even though the attempt was 'completed' or 'passed'.
  • SCORM content created with Adobe Captivate has been observed to overwrite these values, though it was not determined whether Captivate provides a publishing setting to override this.

Reducing Load Time with Captivate

  • Modify the percent that must be downloaded before the content starts to play. In Captivate 4, there's a setting in: Preferences / Project / Start and End / Preload. Reduce that to 50%.
  • If you use audio in your Cp file (as background or element attachment), try to put a gap of 0,1 second at the beginning of each element including audio on your slides. If you don't do that, Cp merge all the audio files in one big audio file it need to download before playing the project. This problem have been report many times from the Cp community.

Moodle changes cmi.core.lesson_status from "completed" or "passed" to "failed"

Many SCORM authorware suites generate a masteryscore node in the imsmanifest.xml by default. This node is not necessary to the XML file. But when it is there, the SCORM standard designates specific behavior with regard to the value set there.

Here's what is in the scorm standard, on page 35 of 155 in SCORM_1.2_ConformanceReq.pdf, numbered page 2-19 (SCORM Version 1.2 Conformance Requirements Version 1.2):

If the value for this element is not set to “incomplete” by the SCO, then the LMS shall re-evaluate and change the value based on the following:

  • If there is no mastery score in the Manifest, and the SCO sets a score (cmi.core.score.raw) and the lesson_status (cmi.core.lesson_status) then the LMS shall not override the SCO determined status.
  • If there is a mastery score in the Manifest, the LMS can change the status to either passed or failed depending on the student's score (cmi.core.score.raw) compared to the mastery score.
  • If the student is taking the SCO for no-credit, (cmi.core.credit = “no-credit”) there is no change to the lesson_status, with one exception. If the lesson_mode (cmi.core.lesson_mode) is "browse", the lesson_status may change to "browsed" even if the cmi.core.credit is set to no-credit.

This can result in some functionality you don't intend. You can fix the problem by removing the mastery score node from your imsmanifest.xml file. You will also want to find out what options you have, within your authorware suite, for the writing of that node into the manifest file, and change your authoring process accordingly.

Player Look 'n Feel

You should be able to adjust height and width settings for the SCORM player window so long as your theme is based on/not too much of an aberration from one of the standard themes which ship with Moodle 2.

If your site or course theme isn't closely based on one of the standard M2 themes, then it's possible that your theme CSS is overriding local height and width settings for the SCORM player. Have a Web developer (or a Moodle Partner) examine how your theme is interacting with the player layout, and make changes to your theme as needed.

Why can't I just change it locally? You can change height and width per individual SCORM package, and you can set defaults for these local height and width values ( SCORM Admin Options ). Other things, such as colors, shading, borders, backgrounds, are controlled by CSS, just like everything else on the site.

See also

Online resources