Archive for the ‘SCORM’ Category

SCORM hot topics.

Tuesday, August 26th, 2014

As a follow up from the GSOC post I thought it might be useful to mention a few things happening with SCORM at the moment.

There are currently approx 71 open issues related to SCORM in the Moodle tracker at the moment, of those 38 are classed as bugs/issues I should fix in stable branches at some point, 33 are issues that are really feature/improvement requests.

Issues about to be fixed and under development
MDL-46639 – External AICC packages not working correctly.
MDL-44548 – SCORM Repository auto-update not working.

Issues that are  high in my list of things to look at and I hope to look at sometime soon.
MDL-46961 – SCORM player not launching in Firefox when new window being used.
MDL-46782 – Re-entry of a scorm not using suspend_data or resuming itself should allow returning to the first sco that is not complete.
MDL-45949 – The TOC Tree isn’t quite working as it should after our conversion to YUI3 – it isn’t expanding/collapsing in a logical manner – could be a bit of work here to make this work in the right way.

Issues recently fixed in stable releases.
MDL-46940 – new window option not working when preview mode disabled.
MDL-46236 – Start new attempt option ignored if new window used.
MDL-45726 – incorrect handling of review mode.

New improvements you might not have noticed in 2.8 (not released yet)
MDL-35870 -Performance improvements to SCORM
MDL-37401 -SCORM auto-commit – allows Moodle to save data periodically even if the SCORM doesn’t call “commit”

New improvements you might not have noticed in 2.7:
MDL-28261 -Check for live internet connectivity while using SCORM – warns user if SCORM is unable to communicate with the LMS.
MDL-41476 – The SCORM spec defines a small amount of data that can be stored when using SCORM 1.2 packages, we have added a setting that allows you to disable this restriction within Moodle to allow larger amounts of data to be stored (you may need to modify your SCORM package to send more data to make this work.)

Thanks to Ian Wild, Martin Holden, Tony O’Neill, Peter Bowen, André Mendes, Matteo Scaramuccia, Ray Morris, Vignesh, Hansen Ler, Faisal Kaleem and many other people who have helped report/test and suggest fixes related to SCORM recently including the Moodle HQ Integration team (Eloy, Sam, Marina, Dan, Damyon, Rajesh) who have all been on the receiving end of reviewing some SCORM patches recently!

GSOC 2014 update

Tuesday, August 26th, 2014

Another year of GSOC has just finished and Vignesh has done a great job helping us to improve a number of areas of SCORM!
I’m really glad to finally have some changes made to the JavaScript datamodel files as part of MDL-35870 – I’m hoping this will improve the performance of the SCORM player as the JavaScript can now be cached properly by the users browser rather than dynamically generating it using PHP.

Vignesh has made a number of general bug fixes to the SCORM code and has also tidied up the code in the 2.8 branch so that it now complies with Moodle’s coding guidelines.

These changes have involved almost every single file in the SCORM module and significant architectural changes have been made. We’ve done our best to avoid regresssions (thanks Ray for testing SCORM 2004) but due to the large number of changes (and the fact that we only have 1 behat test for SCORM) It would be really great if people could test the 2.8 branch with their SCORM content before release so we can pick up any other regressions that may have occurred.

Thanks heaps to Vignesh for his hard work on SCORM during GSOC – and kudos to Google for running a great program and providing the funding to help it happen!

GSOC 2014

Tuesday, April 29th, 2014

gsoc-2014-600x540We are lucky to have Vignesh Panneerselvam working on the SCORM plugin as part of Google Summer of Code this year – there are 3 main areas of focus for his work:

  • Improving the built-in navigation buttons
    I don’t think the navigation buttons in Moodle have ever worked correctly – we’ve made incremental improvements but I’m hoping Vignesh will help to sort out the remaining issues.
  • Performance improvements.
    There are a number of areas in the SCORM code that don’t perform well on larger sites – one of our clients has over 250 Million records in the SCORM tracking tables and any small improvement to performance can make a large difference to the operation of the server.
  • Code Cleanup
    Moodle’s Coding guidelines have improved/evolved over time and we haven’t always kept up to date in the SCORM code – Vignesh will help us to tidy this up a lot.

Vignesh has already made some useful contributions to the SCORM code – I’m looking forward to working with him as he improves the SCORM code.

Managing SCORM content in Moodle 2.6

Tuesday, September 24th, 2013

Following on from an earlier post we now have 2 new methods for managing SCORM content in Moodle 2.6.

Selecting a Zip package as an alias from a repository.
When adding/updating a SCORM and selecting a Zip package from a repository in Moodle 2.6 you now have the ability to create an alias/shortcut to the file – you can then set an update frequency to set how often Moodle should check to see if there is an updated zip. To set this up follow the steps below:

  1. Click the ‘Turn editing on’ button at the top right of the course page
  2. Click the ‘Add an activity or resource’ link in the section you wish to add your SCORM package, then in the activity chooser, select SCORM package then click the Add button (or select ‘SCORM package’ from the ‘Add an activity’ dropdown menu)
  3. Enter a name and a description.
  4. click the Add button to open the File picker menu in order to choose a file a repository
  5. Select the repository that contains your SCORM zip files
  6. Browse and select the SCORM zip file  you wish to add – makes sure you select the option to create an alias/shortcut to the file.
  7. Set the auto-update setting to “every day” – which will check overnight if a package update is required or “every time it’s used” to check if a new package is available every time a user enters the SCORM.
  8. Click the button ‘Save and display’ at the bottom of the page and then enter the SCORM package to make sure it has worked!

Selecting an imsmanifest.xml from an unzipped SCORM in a file system repository.
This allows you to create a repository that contains all your unzipped SCORM packages – you can also share assets between your SCORM packages – for example if you re-use the same video file across multiple packages you can just link to that single video file from multiple imsmanifest.xml files – you can also update your content and as the content is loaded directly from the repository the user will always see the most up to date file. To set this up follow the steps below(some of this is copied from MoodleDocs)

  1. First set up a new File system repository (you need direct access to your server to do this)

    1. Find the moodledata folder on the server
    2. Inside it, create a folder called “repository” (if it doesn’t exist already)
    3. Inside that folder, create a new folder for your repository of SCORM packages named appropriately.
    4. Extract your SCORM packages into appropriate locations within this folder.
  2. . Enabling the File System repository plugin

    1. Go to Settings > Site administration > Plugins > Repositories > Manage Repositories;
    2. Select from the drop down next to File sytem “Enabled and visible”350px-filesystemrepo23
    3. Click the Settings link..
    4. Click Create a repository instance
    5. Give it a name and choose from the dropdown the folder you created with your SCORM packages.
    6. Click the checkbox “Allow relative files” and Save.


  3. Adding a SCORM package
    1. Click the ‘Turn editing on’ button at the top right of the course page
    2. Click the ‘Add an activity or resource’ link in the section you wish to add your SCORM package, then in the activity chooser, select SCORM package then click the Add button (or select ‘SCORM package’ from the ‘Add an activity’ dropdown menu)
    3. Enter a name and a description.
    4. click the Add button to open the File picker menu.
    5. Select the SCORM file system repository you created in the file picker window.
    6. Browse and select the imsmanifest.xml file you wish to add – makes sure you select the option to create an alias/shortcut to the file.
      File picker selecting imsmanifest file
    7. After selecting the imsmanifest.xml file click the button ‘Save and display’ at the bottom of the page and then enter the SCORM package to make sure it has worked!

This method is only currently supported by the file system repository – it’s possible that some of the other repository types could be added in future.

Moodle 2.6 SCORM Update

Tuesday, September 24th, 2013

Moodle 2.6(releases November 2013)  brings some great improvements to the SCORM module

One of the most voted for features in the Moodle tracker for SCORM has been to allow better use of alias’s and support for unzipped content – Thanks to one of our clients at Catalyst IT we have now implemented this in Moodle 2.6

Key components of this work are covered in the following tracker issues:
MDL-41434 – When updating a SCORM package we used to delete all the records in the scorm_scoes table and then recreate them which caused all sorts of issues – by implementing a sort field in the table we keep the existing data and order it correctly this makes updating a SCORM package less fragile.
MDL-28579 – The SCORM module previously used the basic filepicker element which didn’t support the use of creating an alias/link to a file, converting to the advanced filemanager element gives a lot more flexibility.
MDL-41580 – This was the harder part to get right – this patch allows a file system repository in Moodle to support relative linked files – this means that you can unzip your SCORM package in a file system repository and then when creating your SCORM inside your course you just link directly to the imsmanifest.xml file within your repository.

I will follow this up with a post that shows how to use this feature.

Mayank Gupta has been working hard on improving the SCORM player as part of his GSOC project – particularly to improve it’s use on mobile devices –  we now have a more responsive design and the SCORM TOC automatically collapses and hides on smaller screens and it seems to fit these devices a lot better than our older SCORM player – he has also converted a lot of the older code to make sure it meets the Moodle coding guidelines. You can see some of the details on this in MDL-39910 I’ll try to follow this post up later with some screen-shots of the updated player in action.

We have also improved the reporting in SCORM:

MDL-39926 – A new Objectives report like the existing Interactions report, some SCORM packages use objectives to report progress through a course so we added a nicer view of this data that allows easy export.

MDL-41290 – Improved user level reporting – the old user level reports were quite limited – we have added the ability to export this data and have added a more useful view of the interaction elements as well.

Thanks to everyone who has helped with funding or with development and testing of these improvements!


Friday, September 13th, 2013

Adobe have kindly invited me to speak at the Adobe Learning Summit in Las Vegas at DevLearn, I’ll be in San Francisco for the GSOC Mentors Summit between 17th-20th Oct and then in Las Vegas between 21st – 25 Oct – even if you’re not attending DevLearn but are in the area and want to catch up – drop me an e-mail!

I’m also thinking about a trip to Alcatraz on the 17th or 18th if anyone wants to join me!

GSOC 2013 Projects

Tuesday, May 28th, 2013

We had some great applications for GSOC this year and there are 7 students who have been accepted. I’m excited to be working with 2 students this year – Mayank Gupta who will be working on improving the SCORM player in Moodle to work better on mobile devices – Mayank has been part of GSOC with Moodle in previous years so his continued contribution to SCORM is appreciated!

Vinnie Monaco submitted a proposal to develop a plugin that uses keystroke dynamics to verify the identity of a user before allowing them to enter a Moodle quiz – this will involve a practical application of his research and looks to be a very interesting way to verify the logged in user.

The biggest mistake applicants made this year was not attempting to fix a Moodle bug – one of the requirements of the Moodle GSOC application process is that students must try to fix a Moodle bug – many didn’t try and some just rewrote a patch that was already available on the tracker.

Thanks to all the students who put effort into their applications – hopefully some of you will continue to engage in the Moodle community even if your applications weren’t successful.

Stopping work on SCORM 2004

Monday, May 6th, 2013

I’ve been the official maintainer of SCORM in Moodle since 2008 when we implemented full SCORM 1.2 support thanks to funding from Moodle HQ. Since then with the help of a handful of other developers in the community I have spent over one thousand volunteer hours supporting and improving the SCORM module and occasionally funds have been provided for my time by organisations to fix a particular issue.

SCORM 2004 is now over 8yrs old and despite many efforts no-one has been interested in funding the time required to complete native support for SCORM 2004 in Moodle – I’ve run some successful GSOC projects which which have been a great learning experience for the students involved but have not made a significant dent in the work required to complete SCORM 2004 support. This year we received no valid GSOC applications for improving SCORM 2004 support in Moodle.

I spent a lot of time discussing the opportunity to run a crowd-funded project to complete SCORM 2004 in Moodle but it’s hard to define a fixed figure that would allow us to complete the project and I wonder if such a large amount of my time could be spent on projects that are more current.

Full support for SCORM 2004 is already available in Moodle by using the Rustici SCORM cloud plugin for Moodle and I think it is more cost-effective to purchase a subscription to their hosted solution which is much more stable/reliable and feature rich than what we could provide directly in Moodle anyway.

There is also a new version of SCORM (Tin Can) and I think it makes more sense to focus development effort on that rather than continuing effort to get an old standard working within Moodle that so far no-one has cared enough about to fund.

I will continue as a volunteer to maintain support for SCORM 1.2 and AICC packages in Moodle and the new Tin Can work that is currently underway. I will also make best efforts to avoid regressions in the existing SCORM 2004 code.

I will no longer be spending any time as a volunteer to support or improve SCORM 2004 in Moodle, I will accept patches from community contributors to improve SCORM 2004 support as long as they meet coding guidelines and are easy to test. All existing SCORM 2004 bugs will be closed as “won’t fix” – these will only be re-opened if a community member provides a good patch with full testing instructions or if someone funds my time to continue the work.

Thanks to everyone who has spent time working on SCORM over the years – hopefully drawing a line in the sand over SCORM 2004 support will allow us to focus on more current developments like Tin Can.

Managing SCORM content in Moodle 2

Thursday, November 1st, 2012

There are a range of ways to manage SCORM package files in Moodle

Uploaded package.
This method is the only option shown by default in a new Moodle installation. The teacher uses the Moodle file picker to select or upload a new SCORM package.

The site administrator is able to set up a range of different repository types that could contain SCORM zip packages.

External Package type
External package type is disabled by default on new installations – it is not a great method of linking to packages as under certain circumstances your packages will not pass back any grade or tracking information to Moodle.

If enabled and selected it provides a text field to paste a URL to a remote imsmanifest.xml (in an unzipped remote SCORM package) – this allows SCORM content to be hosted outside your Moodle site and the content is played from the external location and is not unpacked/copied into Moodle storage. This also means that if you update the SCORM package then the latest content will always be loaded (unless you update your core imsmanifest.xml file as this file is copied into Moodle) – be very careful updating your imsmanifest.xml file; if your SCO identifiers change then tracking information for any removed SCO identifiers for any previous user attempts will be cleared from the Moodle database.

For the external package type to work – your SCORM content MUST be located under the same url as your Moodle site – If the base url is different from your Moodle url then built in web browser security will block cross-domain communication and no grades/tracking information will be passed back to Moodle. Adobe Flash and modern browsers (ever since IE 6) prevent cross-domain communication. If you really need your packages to sit outside Moodle on a different URL you should look at other options for hosting your content.

To enable the External package type go to:
Admin > Plugins > Activity modules > SCORM package
tick the box for “Enable external package type”

Downloaded package type
Downloaded package type is disabled by default on new installations. It allows your SCORM zip package to be hosted on an external location.

If enabled and selected it provides a text field to paste a URL to a remotely hosted SCORM zip package. Moodle will download the package and unzip into the Moodle file system. Moodle will only check for a new SCORM package each time the settings page is opened and re-saved unless you configure the option “Auto-update frequency” – this is an advanced setting by default so make sure you hit the “show advanced options” button on the SCORM settings page – this option will also only appear if you have either the downloaded/external package types enabled and selected.

The Downloaded package type doesn’t have the same issues around cross-domain communication as the external package type as the SCORM package is downloaded and stored inside the Moodle file system. The main disadvantage of this type is that your SCORM package must be on a url accessible by your Moodle server which usually means that it will be available publicly for anyone to download (unless you configure some form of firewall on your external SCORM content server to prevent this sort of access and only allow the Moodle server to download the file over http/https)

To enable the downloaded package type go to:
Admin > Plugins > Activity modules > SCORM package
tick the box for “Enable downloaded package type”

IMS package type
IMS package type is disabled by default on new installations. The IMS package type is only included for backwards compatibility with old content still in your site – Moodle 1.6 -1.9 had a badly implemented/not well supported/undocumented/buggy feature called the “imsrepository” – this allowed you to store your SCORM packages in unzipped form in a folder within your moodledata and select/link to these packages. This feature is not supported in Moodle 2 but if you have legacy data in your installation that has not been moved, enabling the IMS package type will allow this old content to play/function correctly until you migrate to one of the other package types. I’m not aware if this actually works – I’d be keen to hear from anyone still using imsrepository content to know if it works or not. At some point this option will be removed from Moodle core – maybe 2.5?

Direct AICC url
Direct AICC url type is disabled by default on new installations.

The Moodle SCORM module also supports AICC content – AICC can use a different way to communicate with an LMS without using JavaScript which allows the content to be stored externally without running into cross-domain communication issues. We call this method “external AICC HACP” – this content communicates directly with your Moodle server rather than via the learners browser session. To use this form of communication, you must enable the setting “Enable external AICC HACP” in admin > plugins > activity modules > SCORM

Usually when connecting to an external AICC HACP package you are provided with a small AICC zip package which contains a file with a link to the external AICC content – to make it easier for AICC authors we have included an option that allows you to paste a url to the external AICC content instead of having to create a zip package with the file to link to the content.

It’s best to leave the Direct Aicc url type disabled unless you have an AICC content provider that provides urls to their external AICC content instead of AICC package files. It is a good idea to enable external AICC HACP

Future Improvements.
Moodle 2.3 has an “alias” feature that means when an uploaded file is re-used elsewhere on Moodle, the teacher has the option to create a shortcut or alias.

If an alias is created, then when the original file is updated, it will change in all instances of the alias. More info:

Implementing this for SCORM is possible but will need to be managed carefully – more information on this is available in MDL-28579

*UPDATE 24 Sept 2013* – Moodle 2.6 now implements some more options – see here for more details:

SCORM doesn’t work in Moodle?

Wednesday, August 8th, 2012

I see a lot of posts with very limited information about issues with SCORM in Moodle – Here is a common question:

My SCORM package works fine 90% of the time but 10% of my users report that it doesn’t save their score or flag as complete – help?

This question is not very specific so it’s hard to give advice but here is a list of things to check.

  1. What version of SCORM are your packages authored in?
    Moodle only supports SCORM 1.2 and AICC packages – SCORM 2004 is not supported in any version of Moodle, more information here.
  2. What Moodle version are you running?
    SCORM in Moodle didn’t work very well until Moodle 1.9.12, If you’re using an earlier version of Moodle – don’t bother asking questions about why it doesn’t work – UPGRADE!
    SCORM in Moodle 2.0 is more stable/reliable than Moodle 1.9, and Moodle 2.3 is even better than 2.0 – if you are able to upgrade to the latest Moodle version it may help a lot.
  3. SCORM requires JavaScript
    Are your users trying to access with a browser that doesn’t support JavaScript? Moodle 2.0 has a setting called “Force users to enable JavaScript” – go to Admin > Plugins > Activities > SCORM and make sure this is set.
    Moodle policy states that everything must function with JavaScript disabled however I have been tempted to remove this setting and force SCORM to always require JS – drop me an e-mail if you disagree with this and give me reasons why you think it wouldn’t be a good idea.
  4. Browser specific bugs
    1. Internet Explorer 9
      There is a bug with Adobe Flash that prevents communication from occurring correctly. The fix is to run IE 9 in compatibility mode but you can fix this in Moodle by adding this line to your Moodle theme directly after the <head> tag in your theme (it must be the first item after the <head> tag or it will not work.
      <meta http-equiv=”X-UA-Compatible” content=”IE=8″ />
      More info here (although it states that bug as fixed the fix does not work as it doesn’t add it directly after the <head> tag)
    2. Internet Explorer and Moodle 1.9
      When using the “new window” option in Moodle 1.9 IE  may freeze during the load of the SCORM – the fix is to either use the “current window” option instead or upgrade to Moodle 2 (this fix requires a significant rewrite of the Moodle player so an easy to apply patch to fix this in 1.9 is not available) More info here.
    3. Chrome
      When using the pop-up window option, chrome may open a window with a size of 0x0 so the content is not displayed – the fix is to upgrade to the latest stable release as this is fixed in most stable branches. More info here.
    4. Moodle 1.9 has a range of other browser specific issues – especially when using the “new window” option – Moodle 1.9 is no longer supported for bug fixes so you should really upgrade asap.
  5. Debugging
    Moodle has a nice debugging tool that logs each call from your SCORM package to Moodle – this can be configured to be enabled for all users or for a specific user – If you are unable to reproduce the issue yourself, you can enable the debugger for the specific user and ask them to email you the results.
    To enable debugging see here: Moodle 1.9 Moodle 2
  6. Multiple Attempts
    The way attempts in SCORM works can be confusing – when a learner enters a SCORM package and gets a score, then re-enters the package their score can be changed or updated, losing their previous score. I’ve recently written an FAQ item on this in the Moodle docs site here.
  7. Grading
    SCORM packages can be graded in multiple ways – some SCORM packages return a raw_score, others only return a lesson_status. Moodle has a range of grading methods to suit these different packages – for help on this see here

If none of that helps with your issue, make sure you read the FAQ on asking for help in the Moodle SCORM forums – this explains a list of the things we need you to include in your post to allow us to help. Usually our biggest difficulty is trying to reproduce the issue you are having.

The majority of the time I spend on SCORM in Moodle is as a volunteer – so please be kind!

I’m thankful to all those who have helped with SCORM from the  original developer of SCORM in Moodle – Roberto Pinna and the GSOC program which has allowed us to progress on SCORM 2004 compliance, I’m especially thankful to those people who have provided funding for my time to work on specific bugs in SCORM that have been causing them grief.

There are still many other issues with SCORM in Moodle (let alone the work on SCORM 2004) but my volunteer time is limited so if there’s something in Moodle that doesn’t work the way you’d like, any funding you have available for my time to fix the issues would be really appreciated. I work for the certified Moodle Partner Catalyst IT, we have offices in the UK/AU/NZ and provide a range of services around free and open source software.