Table of Contents |
---|
...
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 | ||||||
---|---|---|---|---|---|---|
|
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:
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.
Course Is Not Viewable By Students
There is currently an issue on 4.2.x with the importScorm command, caused by
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
- 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.
- 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
), 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. Jira Legacy server System JIRA serverId 23f523ea-1678-3ca2-a1e8-2de53fd3b74a key COREDEV-4876
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.:
Scorm 2004 Standards
...
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:
- Get the base 64 string it is usually located here "scormcontent\locales\und.js"
This file contains base 64 string which looks like this:__resolveJsonp("course:und","SBase64String")
- Decode the Base64 string using an online tool (e.g., https://www.base64decode.org).
- Update the file name to include only valid characters.
- 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.
Resolution:
- Rename the file to remove the invalid characters.
- Update all references to the renamed file within the SCORM package.
- 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 | ||||||
---|---|---|---|---|---|---|
|
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:
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.
Course Is Not Viewable By Students
There is currently an issue on 4.2.x with the importScorm command, caused by
Jira Legacy | ||||||
---|---|---|---|---|---|---|
|
- 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.
- 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
), 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. Jira Legacy server System JIRA serverId 23f523ea-1678-3ca2-a1e8-2de53fd3b74a key COREDEV-4876
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.:
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 <imsmd:keyword> <imsmd:langstring xml:lang="en-US">Englisch, English, language, placement, test</imsmd:langstring> http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd"> <metadata> <schema>ADL SCORM</schema> <schemaversion>1.2</schemaversion> <imsmd:lom> </imsmd:keyword><imsmd:general> </imsmd<imsmd:general>title> </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> |
...
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. |
...
<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
...