In this document:
Claude Ostyn, Ostyn Consulting
Version 1.0
The Easy SCO Adapter for SCORM 1.2 to 2004 allows you to run any unmodified SCORM 1.2 conformant SCOs in a SCORM 2004 conformant LMS. It also allows you to integrate unmodified SCORM 1.2 SCOs into a SCORM 2004 manifest.
It is most useful in situations where modifying or recreating SCOs is not economically feasible. When you use the adapter, the SCO believes that it is running in a SCORM 1.2 runtime environment, and the runtime environment believes that it is running a SCORM 2004 SCO. This is totally invisible to the user.
No special tool or knowledge of scripting is required to use this adapter. The adapter is a "black box" and it is invisible to the user. It does not require that the SCO be coded or constructed in any particular way. It does not require or assume that the SCO uses any particular script or technology. As long as the SCO is SCORM 1.2 conformant, the adapter will handle it automatically.
This adapter solves the major technical problem in upgrading content from SCORM 1.2 to SCORM 2004. The other problems are relatively inexpensive to solve, but they are beyond the scope of what this adapter can do; they involve updating the imsmanifest.xml file and metadata to conform to the schemas required by SCORM 2004, and inclusion of the new provided XSD files in the package. This process is well documented on the ADL web site. Modifying the manifest is usually much simpler than modifying even one single SCO.

Figure 1. How the adapter works
The Easy SCO Adapter for SCORM 1.2 to 2004 is actually a SCO, although it is invisible to the user. When the SCORM runtime environment launches the adapter with a URL parameter that specifies another SCO, the following happens:
To use the adapter, you need to modify the manifest and add the adapter file to your package. If your package is "flat" and does not use nested folders, you can simply add the file to the other files in the package. If you use nested folders, use the modified manifest as a guide to determine where you need to put the adapter file in the folder structure of your package.
In the imsmanifest.xml file for the SCORM package, each SCO is represented by a <resource> element, with a href attribute that specifies the URL to launch the SCO. The <resource> element also contains a list of files and other resources used to run the SCO. Each <resource> that describes a SCORM 1.2 SCO must be modified to launch the adapter instead of the SCO; this turns the resource into a SCORM 2004 SCO.
<resource ...
href="mysco.html">
<file href="mysco.html" />
...
</resource>
<resource ...
href="esas2004.htm?sco=mysco.html">
<file href="mysco.html" />
<file href="esas2004.htm" />
...
</resource>
Figure 2 - Modifying the manifest
If the original url in the href attribute of the <resource> included parameters, just add them to the list of parameters in the new URL, as in the example in Figure 3. The entire query string to the right of "sco=" will be treated as the URL to launch the SCO. If there is a name conflict with an existing parameter, a preset string in the script of the adapter can be modified to specify a different parameter name than "sco".
<resource ...
href="mysco.html?a=foo&b=2">
<file href="mysco.html" />
...
</resource>
<resource ...
href="esas2004.htm?sco=mysco.html&a=foo&b=2">
<file href="mysco.html" />
<file href="esas2004.htm" />
...
</resource>
Figure 3 - Merging parameters
Note how the & character used as separator between name=value pairs in the query string must be escaped as & in the manifest file to respect XML syntax.
If the original url in the href attribute of the <resource> includes a fragment or anchor identifier, the anchor separator (#) must be URL encoded as %23 because it is an unsafe character.
<resource ...
href="mysco.html#top">
<file href="mysco.html" />
...
</resource>
<resource ...
href="esas2004.htm?sco=mysco.html%23top">
<file href="mysco.html" />
<file href="esas2004.htm" />
...
</resource>
Figure 4 - Merging parameters with anchor
By default, the adapter uses its own path to create the URL to launch the SCO, unless the URL for the SCO is a fully qualified URL or the URL includes a relative path. If the URL includes a relative path, the adapter will treat it as relative to its own path. If your manifest is built with a nested directory structure, this may cause some difficulty. The easiest way to handle this is to just put the adapter in the same directory as the SCO itself. This may be less than optimal if you need to drop multiples copies of the adapter in multiple directories. However, depending on your situation, it may be easier than figuring out the proper relative path magic.
The current release of the adapter has been tested in Microsoft Internet Explorer 6.0 and Firefox 1.5. If you intend to use it on other platforms you should test it carefully. The author welcomes test reports.
The current release of the adapter has known issues, including:
Irresolvable specification issues
On the ADL web site at www.adlnet.org, you can download another adapter developed by the ADL technical team, the SCORM Version 1.2 to SCORM 2004 Conversion API Wrapper Version 1.1.
Like this adapter, the ADL Conversion API Wrapper "wraps" the SCO in a fake runtime environment that provides a logical translation layer. The main differences between the adapter described by this document and the ADL wrapper are:
Right-click here to download the esas2004.htm file (63KB). No other file is required to use this adapter with your SCOs.
Right-click here to download esas2004.zip (esas2004.htm file compressed in a 18KB zip file).
This document and the software described in this document are copyrighted but they may be used, distributed and modified freely under the terms of the LGPL (Lesser General Public License, http://www.gnu.org/copyleft/lesser.html). If you cannot live with the terms of the LGPL, please contact Ostyn Consulting at http://www.ostyn.com/contact.htm for special licensing terms.
Use at your own risk. The author and publisher of this document and of the described software shall not be responsible for any error, omission or any damage that may result from their use by you or anyone else. Publication of this document and of the described software does not imply a promise to update or maintain either of them in the future. By using this document or the software, you agree with these terms.
Customized versions of this wrapper can be ordered. You might need a customized version if you have SCORM 1.2 content that is not completely conformant, or if you need to adapt SCORM 1.1 or content that uses the AICC "API interface". A customized wrapper can sometimes fix those problems by judicious application of a little magic.