Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents

...

  1. Check the Scorm version (see 5440507153)
  2. Check that the course link is published (see 5440507153) (only applies to 4.2.x)
  3. Check the SCOId and Resource Id for invalid characters (see No Error (infinite loading) or "No Links Specified" in the LMS, fixed in 4.3.0)
    1. v4.5 only: verify the custom ScoId does not contain any periods or spaces (see LINK )
  4. Check the SCOManifest.js and ensure a SCOId is mapped (see 5440507153)
  5. Check the browser's Console for errors and Network tab for external calls and or errors (including 3rd party cookies and if the course is using Flash).
    1. Note: Often, Scorm courses will cancel a web request for their entry point and then re-request it.  This is very common, and hasn't been known to cause any issues (and can be reasonably ignored as the problem):
  6. Check the Scorm calls by debugging the Scorm course via the browser's Sources tab and setting break points in API.LMSGetValue and API.LMSSetValue in MarineLMS-SCORM-API.js (see 5440507153)
  7. Try and import the Scorm course locally, and debug the extraction process to ensure the course contains activities and has a valid manifest (see 5440507153)
  8. Check the package works outside the LMS by verifying the package on the Scorm Cloud (see 5440507153)

...

Run the command locally against the imsmanifest.xml to find problematic files.  Once found, rename the asset on disk, and update the imsmanifest.xml reference with the updated file name (with the offending character removed).  Re-zip and importScorm again.

No Error (infinite loading) or "No Links Specified" in the LMS

We have seen an error where invalid characters in the SCO Resource Id have caused our 3rd party extractor to silently ignore the resource/course and not give any error (This is fixed as in 4.3.0

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4797
).  Ensure that no special characters are being used for the SCO Id in the imsmanifest.xml:

Image Removed

Note: Reserved html characters should be viewed with suspicion.  To fix this issue, remove the offending characters, and re-zip the packaged files with a new name, and re-import the course to the LMS.

No Error (infinite loading) alternative

We have also seen rare instances (e.g. NCLH) of Scorm course making external calls.  Normally this is not supported, but we have made exceptions (specifically for NCLH).  This can be seen in the Network trace in the developer window. It will manifest as 403 or 404 errors, and in rare cases, a Content-Security-Policy exception:
Image Removed

Note this has been fixed on NCLH by changing the CSP to use frame-src instead of script-src and whitelisting cloud.scorm.com. Additionally, this must be tested with https as external sites (e.g. cloud.scorm.com) will reject an unsecured http request. Use hotbackup for testing.

v4.5 Only: Custom ScoId is missing characters (period or space)

There is an issue with v4.5 removing periods or spaces from the custom ScoId stored in the LinkAttribute value.  If a period or space is desired as part of the custom ScoId, import the course as normal with the desired custom ScoId, then follow these steps:

  • Go to the actual Scorm course
  • Open DevTools, and click the Console tab
  • paste this in chrome's dev console (with the scope set to 'Top')
    $('.navbar.navbar-fixed-bottom').attr('style','display:block !important');
  • The admin bar should now be visible.  Click on Edit > Links.  
  • Right click the link and select Edit > Attributes
  • Manually add the period (or space) to the value of the mls_sco_id attribute and hit save.
  • Image Removed

Course Is Not Viewable By Students

There is currently an issue on 4.2.x with the importScorm command, caused by 

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4936
.  To fix this: 

  • After running importScorm, navigate to the course itself (final link).
  • Before changing the template to the SCORM course template as you normally do, you need to Edit > Links > Publish the link.
    Image Removed
  • Then you can change the template to the proper SCORM template. (Edit > Page > Change Template)

Currently the SCORM templates (at least SCORM.Course.Simple.cshtml) don't seem to be aware of this and so no error is shown anywhere in the console or network trace.

Debug the Scorm Extraction (ImportScorm command)

When debugging the ImportScorm command the first break point should be set in CoreClient.Scorm.cs on line 183 (CreateManifestJSFile()). If the sco_resources count is 0, the course either has multiple child activities (which isn't supported until 4.2.x

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4876
), or the manifest is incorrectly made/formatted.  If this method is unable to find any sco resources, the package is improperly made, and must be checked on Scorm Cloud (see next section) and/or bounced back to the client/vendor.

Known Issues with Extraction

...

File Reference Not Found During Search:

In some cases, SCORM courses built with different course creation tools may encode file names as Base64 strings. As a result, searching by file name might not return results.

Resolution: 

  1. Get the base 64 string it is usually located here "scormcontent\locales\und.js"

    Image Added

    This file contains base 64 string which looks like this: __resolveJsonp("course:und","SBase64String")
  2. Decode the Base64 string using an online tool (e.g., https://www.base64decode.org).
  3. Update the file name to include only valid characters.
  4. Re-encode the file name as Base64 and update it in the course files.

Invisible Invalid Characters in File Names:

At times, the file name might appear valid at first glance, but SCORM validation commands can flag hidden invalid characters.

For example, the sequence %E2%80%8B represents a zero-width space (Unicode character U+200B), which can cause issues. Following file contains invisible illegal character.

Image Added

Resolution:

  1. Rename the file to remove the invalid characters.
  2. Update all references to the renamed file within the SCORM package.
  3. Use the CheckScormPackageForIllegalFileNames command to identify and address such issues.

No Error (infinite loading) or "No Links Specified" in the LMS

We have seen an error where invalid characters in the SCO Resource Id have caused our 3rd party extractor to silently ignore the resource/course and not give any error (This is fixed as in 4.3.0

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4797
).  Ensure that no special characters are being used for the SCO Id in the imsmanifest.xml:

Image Added

Note: Reserved html characters should be viewed with suspicion.  To fix this issue, remove the offending characters, and re-zip the packaged files with a new name, and re-import the course to the LMS.

No Error (infinite loading) alternative

We have also seen rare instances (e.g. NCLH) of Scorm course making external calls.  Normally this is not supported, but we have made exceptions (specifically for NCLH).  This can be seen in the Network trace in the developer window. It will manifest as 403 or 404 errors, and in rare cases, a Content-Security-Policy exception:
Image Added

Note this has been fixed on NCLH by changing the CSP to use frame-src instead of script-src and whitelisting cloud.scorm.com. Additionally, this must be tested with https as external sites (e.g. cloud.scorm.com) will reject an unsecured http request. Use hotbackup for testing.

v4.5 Only: Custom ScoId is missing characters (period or space)

There is an issue with v4.5 removing periods or spaces from the custom ScoId stored in the LinkAttribute value.  If a period or space is desired as part of the custom ScoId, import the course as normal with the desired custom ScoId, then follow these steps:

  • Go to the actual Scorm course
  • Open DevTools, and click the Console tab
  • paste this in chrome's dev console (with the scope set to 'Top')
    $('.navbar.navbar-fixed-bottom').attr('style','display:block !important');
  • The admin bar should now be visible.  Click on Edit > Links.  
  • Right click the link and select Edit > Attributes
  • Manually add the period (or space) to the value of the mls_sco_id attribute and hit save.
  • Image Added

Course Is Not Viewable By Students

There is currently an issue on 4.2.x with the importScorm command, caused by 

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4936
.  To fix this: 

  • After running importScorm, navigate to the course itself (final link).
  • Before changing the template to the SCORM course template as you normally do, you need to Edit > Links > Publish the link.
    Image Added
  • Then you can change the template to the proper SCORM template. (Edit > Page > Change Template)

Currently the SCORM templates (at least SCORM.Course.Simple.cshtml) don't seem to be aware of this and so no error is shown anywhere in the console or network trace.

Debug the Scorm Extraction (ImportScorm command)

When debugging the ImportScorm command the first break point should be set in CoreClient.Scorm.cs on line 183 (CreateManifestJSFile()). If the sco_resources count is 0, the course either has multiple child activities (which isn't supported until 4.2.x

Jira Legacy
serverSystem JIRA
serverId23f523ea-1678-3ca2-a1e8-2de53fd3b74a
keyCOREDEV-4876
), or the manifest is incorrectly made/formatted.  If this method is unable to find any sco resources, the package is improperly made, and must be checked on Scorm Cloud (see next section) and/or bounced back to the client/vendor.

Known Issues with Extraction

Recently we have seen an issue were the identifier for the <item> within an <organization> used a Guid which was too long and therefore would fail trying to find the Activity.  Adjust the identifer to something smaller and re-zip the package.  E.g.:
Image Added

Scorm 2004 Standards

Sometimes, when a course is repackaged for Scorm version 1.2, it may still contain Scorm 2004 pieces, almost always as xml tags in the imanifest.xml at the root of the scorm package. Example:

Code Block
<?xml version="1.0" ?>
<manifest identifier="com.scorm.manifesttemplates.scorm12" version="1"
       xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
       xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd
                           http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd
                           http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">

	<metadata>
		<schema>ADL SCORM</schema>
		<schemaversion>1.2</schemaversion>
		<imsmd:lom>
      		<imsmd:general>
         		<imsmd:title>
             		<imsmd:langstring xml:lang="en-US">Inlingua Language Test English</imsmd:langstring>
         		</imsmd:title>
         		<imsmd:description>
         			<imsmd:langstring xml:lang="en-US">Language placement to test your language level according to the Common European Framework (CEF) of the Council of Europe.</imsmd:langstring>
         		</imsmd:description>
         		<imsmd:keyword>
         			<imsmd:langstring xml:lang="en-US">Englisch, English, language, placement, test</imsmd:langstring>
         		</imsmd:keyword>
      		</imsmd:general>
  		</imsmd:lom>
	</metadata>

	<organizations default="Inlingua Rostock">
		<organization identifier="Inlingua Rostock">
			<title>Inlingua Rostock</title>
			<item identifier="language test" identifierref="InlinguaSCO">
				<title>Language Test English</title>
			</item>
		</organization>
	</organizations>

	<resources>
		<resource identifier="InlinguaSCO" type="webcontent" adlcp:scormtype="sco" href="InlinguaSCO/index.html">
			<file href="InlinguaSCO/index.html"/>
		</resource>
	</resources>

</manifest>


The above will fail to be imported and the exception thrown from importScorm should indicate the position of the invalid tag:

Code Block
Invalid package: The package contains a manifest that contains badly formed XML.  Inner Exception: System.Xml.XmlException: 'imsmd' is an undeclared prefix. Line 13, position 4.

See: https://scorm.com/scorm-explained/technical-scorm/content-packaging/manifest-structure

cmi.core.score.min is not implmented/supported

We have no place to store “min” in our model. Our SRA modal has no notion of a “min” value.

We could implement the entry point as a no-op, which would sort of be a lie, and the course might still fail later if it tried to retrieve the min value (because we would not be able to return the same value as was passed in to the ‘set’ call).

Talk the course vendor and say that we don’t support ‘min’ and see if they can make it optional in the course.

Testing the Package Externally

...