Wednesday, February 28, 2007

Why does my SCORM course display an "Unable to find an API adapter" message?

When a SCORM course is packaged in a zip file (sometimes called a PIF, which stands for Package Interchange Format), the package needs to contain a manifest file named imsmanifest.xml. This file is used by delivery systems such as EKP to understand the contents of the package.

A SCORM course contains one or more resources (roughly speaking, the "lessons" in the course). In SCORM 1.2, each resource is either a sharable content object (SCO) or an asset. A SCO is specially designed to communicate with a learning management system (LMS)—for example by informing the LMS about the learner's test scores or other progress information—which it does using JavaScript calls. On the other hand, an asset is not specially designed to communicate with an LMS—essentially, it is just regular web content.

The manifest file contains information about each resource, together with an indication of whether each resource is a SCO or an asset. A typical XML element for a resource might look as shown below.

<resource identifier="R1" type="webcontent"
        adlcp:scormtype="sco" href="sco01.html">

Note the adlcp:scormtype attribute. There are two possible values for this attribute, sco and asset, corresponding with the two resource types described above. If the type is specified as sco, EKP will provide a JavaScript object called the API adapter, which the SCO can use to communicate with EKP. If the type is specified as asset, EKP assumes that the resource is not designed to communicate with an LMS using JavaScript, and therefore does not provide the API adapter. (Instead, EKP provides a button labeled Mark As Completed, which the learner can use to indicate that they have completed the activity.)

In particular, note that if the adlcp:scormtype attribute is omitted, EKP assumes that the resource is an asset, and therefore does not provide the API adapter.

If you see an error message that reads Unable to find an API adapter or similar when launching a course that has been imported from a content package, it might be that either the resource has incorrectly been tagged as an asset, or the adlcp:scormtype attribute is missing entirely. In this case, the problem can be fixed by manually editing the imsmanifest.xml file to include the correct attribute values for each resource.

There's one final XML technicality to be aware of. In order ensure that the attribute name adlcp:scormtype can be understood without ambiguity by an XML processor, it's necessary to ensure that the XML file contains a namespace declaration that corresponds with the namespace prefix adlcp. This declaration takes the form of an XML attribute that is usually placed on the root element of the file. The attribute is as shown below.


The initial opening tag of a manifest file that contains this attribute might look as shown below.

<manifest identifier="M1" version="1.1"


Anonymous said...

What about the error "Applet ApiAdapter notinited", Rob ?

Rob said...

What about the error "Applet ApiAdapter notinited", Rob ?

First of all, make sure you have Java installed on the desktop, as this is required to run SCORM courses.

The latest EKP builds work with practically any desktop Java version, but some older builds had compatibility issues with older versions of Java. So, if Java is installed on the desktop and you're still seeing problems, try upgrading to the latest version of EKP.

If that doesn't resolve the issue, perhaps you could let us know what appears in the browser's Java console.

Anonymous said...

Hai rob i would try your suggest "upgrading the latest version of EKP" could you please tell me the step to upgrading new EKP version? how to i get the new version? thanks

Peter Moricz said...

Hi Rob,
We're facing a really weird issue with one of our clients. As far as I know, they use the "Enterprise Knowledge Platform by NetDimensions". They recently upgraded to Windows 7 and IE8 and all the sudden some of the Flash based SCORM modules stopped working. All the modules worked perfectly fine before the upgrade. According to them, some of the modules still work, but others just won't start (I haven't had a chance to test them from their office yet). The modules are set to open in a popup window. Two different things happen:
1.) The module doesn't load at all, and there's a message in the bottom left corner saying "Applet APIAdapter notinited".
2.) The module gets loaded in the popup window, the API is found (there's a JavaScript code that updates the status bar with different messages), but then a JS error comes up and I guess it stops the rest of the code being executed (Object doesn't support this property or method).
Their system is pretty much locked down, users can't install software (browsers or plugins), everything is centrally managed by their IT team. They insist that there's no problem with the installs and that it can't be a Java issue, although the first issue seems to be related to the Java plugin. I've read somewhere that certain versions of the Java applet or a corrupted install can cause these kinds of issues.
Also, I was told that the modules run properly when SCORM tracking is turned off. I'm not sure how they can launch a module from within the LMS without SCORM communication though.
Can you suggest anything that may help me troubleshooting this issue?
Thank you,
Peter Moricz