Cross-Domain SCORM Tracking
I am working on a client brief that requires course content to be stored on a separate server from the LMS.
Using Trial Accounts
Since I don’t have access to either server to start with, I attempted to set up trial accounts with the server vendors.
It was very simple to set up a trial with the content storage server vendor, Adobe Connect. You can set up as many 30-day trial account windows as you want on the same log in, apparently. This is a great model for other LMS vendors to follow because it makes it economical for independent developers like me to work with their system while preventing abuses.
It took me awhile to find the trial request form for Blackboard. Their policy mirrors Adobe’s, and responds with an account almost as quickly on a weekend. There are 3 accounts available on their trial: 2 student and one faculty.
First Attempt: Hello World
I uploaded a simple Flash swf that contains “Hello World” text to Connect. Then I created a link lesson in Moodle with the URL set to the Connect swf. Launching from Moodle, I see the Hello World Swf load and present as if it is served from the Moodle server.
This establishes a baseline condition where an LMS can load content from Connect without any problems. However, there is no tracking on either end, and the swf doesn’t have any scripts and doesn’t do anything.
Second Attempt: Hello Back
The most robust method for tracking externally-hosted content would be to have a shell swf hosted on the LMS side that is launched from a SCORM package. Shell loads content that is hosted on external server. They communicate with each other via a proxy tracking service. That proxy periodically updates the SCORM API to the host LMS. What content gets loaded could be determined by metadata stored in the LMS.
Aside from programming, there are a few issues with this approach that must be dealt with:
- Adobe Connect samedomain swf embed setting prevents loading a swf into shell by default
- cross-domain configuration file is required at the content server to enable loading/embedding a swf – requires Connect cooperation
- manual configuration of each shell SCO on LMS required to launch correct content file from Connect
- The loaded content swf must contain the proper calls to Adobe’s security API to allow itself to be loaded by shell
The cross-domain policy file exists on the trial account server at Adobe Connect. However, it appears to be an old one, as it only allows access from URL’s containing macromedia.com as an originating address. It does not contain the necessary Master Domain Policy File clauses for allowing a developer to insert more specific policy files in their content directory.
Preliminary Success
In spite of these limitations, the following steps led to preliminary success when loading .swf content from Connect:
Make swf public
send email from the content email tab
open the received email and copy the link from the email body
add the following to the end of the URL, separated by forward slashes:
- The content name in lower case
- “default”
- the sw3f file name including “.swf”
The resulting URL, used as the text string of the URLRequest in ActionScript, will allow the Shell swf to load the content swf from Connect as long as you are running shell form inside the Flash IDE. When uploaded and tested from Blackboard it still results in an error.