Convert SCORM 1.2 to AICC

1,410 views
Skip to first unread message

Philip Jeffery

unread,
Oct 3, 2014, 4:19:58 AM10/3/14
to elearning-technolo...@googlegroups.com
I currently have a bit of a dilemma, we're migrating from a Learning Management System to a new HR platform with a built in LMS component. The plan was to use the original LMS as a content server, and integrate with the new HR platform.

But we've hit on an issue, most of our important courses have been built to SCORM 1.2, this wasn't an issue with our old LMS as the content and LMS were hosted on the same domain, but now we're splitting the content and LMS to different domains we're hit with the problem regarding cross domain communication, essentially all the SCORM courses will no longer track back to the LMS.

We're looking at various options, but I was curious to understand just how difficult it would be to convert a SCORM 1.2 course to AICC, appreciate each course is designed differently but is there anyway of intercepting the SCORM communication and replacing with AICC?

Or, if anyone has seen this issue before I'd appreciate any feedback how they resolved the issue.

Thanks,

Phil

Ted Powers

unread,
Oct 3, 2014, 5:48:31 AM10/3/14
to elearning-technolo...@googlegroups.com
Phil
Do you know what the courseware is created with?
Here could be some easy configuration changes if it is articulate or captivate. 
Switching between the two is tricky if you are going to be recoding. 
What kind of web server is the is the new content server?
It might be possible to do some server side solution for redirection if it is Apache. 
Lastly you could host the courseware remotely on a service like scorm cloud. 

There are options, but it will take a little a little effort depending on what you have. 

Best regards 
Ted J. Powers
CEO
Workforce eLearning

Sent from my iPad
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Nathan McKinley

unread,
Oct 3, 2014, 7:47:47 AM10/3/14
to elearning-technolo...@googlegroups.com
Hi Phil,

Some of our customers use the Adobe Connect Pro LMS, which uses AICC, and they have "wrapped" our SCORM 1.2 courses to get them to interwork successfully. I'm not sure exactly how each of them achieves this, however I did find a post that offers a SCORM-to-Connect prototype.


Even if it's not directly useful, it may offer some insight as to what's involved.

Cheers, Nathan

Ethan Estes

unread,
Oct 3, 2014, 9:12:31 AM10/3/14
to elearning-technolo...@googlegroups.com
With the SCORM API the request will always eventually be executed by javascript in the HTML DOM so yes you could find where those calls are made and have them remapped to send requests via the AICC commands. Where SCORM sets/gets individual elements, AICC sends and recieves post data in a structured format:

error=0
error_text=Successful
version=3.5
aicc_data=[core]
student_id=joes...@gmail.com
student_name=Smith, Joe
credit=credit
lesson_location=
lesson_mode=normal
lesson_status=n,ab-initio
score=100,100,0
time=03:22:38
[core_lesson]
0x0xst=00%3A00%3A00$0x0xtt=00%3A08%3A08$0x0xpage=0$0x0xls=p$0x0xsuspendData=$0x0xscore=100$1x0xls=p$1x0xpage=0$1x0xst=00%3A00%3A00$1x0xtt=00%3A02%3A22$1x1xls=p
[objectives_status]
[student_data]
mastery_score=80
max_time_allowed=
time_limit_action=

So you'll need to add code to build each PutParam call and GetParam most likely in the Javascript. As well as parse the response data from a putParam to populate your element model when your runtime is running. Its doable, not always easy depending on how a given course is setup.

Philip Jeffery wrote:
--
You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elearning-technology-and...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

--
-EÆ

Raymond Sugel Sr

unread,
Oct 3, 2014, 9:32:38 AM10/3/14
to elearning-technolo...@googlegroups.com

Rustici Software has the SCORM Driver which is a wrapper that can allow SCORM 1.2 content to operate as AICC, SCORM 2004 or Tin Can.  See www.scorm.com

 

Raymond Sugel Sr

847-426-6163

rsug...@sugels.com

--

Ryan Meyer

unread,
Oct 3, 2014, 9:52:27 AM10/3/14
to elearning-technolo...@googlegroups.com
If you have the ability to tweak the network architecture in your organization, you might be able to set up a reverse proxy that makes it look like the content and server are delivered from the same domain, allowing the existing SCORM protocol to work with no additional customization.

Here's an early writeup of the approach from the late, great Claude Ostyn:
http://www.ostyn.com/standardswork/xdomain/scormxdomainoverview.htm

And here's a white paper describing the approach for Plateau, although it would be similar for all LMSs:
http://content.plateausystems.com/ContentIntegration/content/support_files/SCORM%20Cross%20Server%20solution%20by%20proxy-v0%206.pdf

Hope that helps,
Ryan

Ryan Meyer

unread,
Oct 3, 2014, 9:54:09 AM10/3/14
to elearning-technolo...@googlegroups.com
By the way, a google search for "reverse proxy scorm" will give you lots more results than just the two I sent in case you need more specific information.

Philip Jeffery

unread,
Oct 6, 2014, 4:17:24 AM10/6/14
to elearning-technolo...@googlegroups.com
Thanks for the feedback, I'll take a look at the options.

The reverse proxy should work, but I'm concerned that this wouldn't necessarily be well support by our two providers (The content and LMS are both cloud hosted).
I'll take a look at the other options, for me the simplest and most obvious answer is to buy content server storage from the LMS provider, they will be in the same domain and therefore no workarounds required.

Any other solution is going to have a cost against it and a minimum level of support, I guess the SCORM engine option would be supported by Rustici.

Philip Hutchison

unread,
Oct 6, 2014, 11:27:13 PM10/6/14
to elearning-technolo...@googlegroups.com
Back in 2008 I faced a similar cross-domain issue. My solution was to have the SCORM calls be made from the index file (hosted on LMS), but have the content pages load from an external server. The child pages could trigger scripts in the parent HTML via an iframe hack (I wrote about it on my blog).

The idea is still valid, but it's much easier today because you can drop kludgy iframes and use window.postMessage instead (and EasyXDM as a fallback).

Basically you build the course the same as you normally would, but you have an abstraction layer between the course content and the course parent. Let the parent handle SCORM communication on the same domain, and let the children (hosted in a different domain) invoke the SCORM contained in the parent via the abstraction layer, using window.postMessage.

VERY contrived example (untested pseudo code):

in index.html hosted on LMS (lms.com):

function SetValue(cmimodel, cmidata){
  //scorm stuff
}

window.addEventListener("message", receiveMessage, false);

function receiveMessage(event){
  if (event.origin !== "http://contentserver.com"){ return; }
  var arr = event.data.split(",");
  if(arr[0] === "SetValue" && arr[1] && arr[2]){
    SetValue(arr[1], arr[2]); //note I am not using eval() here, that would be unsafe.
  }
}


in child.html hosted on some other server (http://contentserver.com):

//assumes targetFrame is the parent frame (index.html)

function contactParentFrame(str){
   targetFrame.postMessage(str, 'http://lms.com');
}

function SetCourseScore(score){
   //instead of invoking SetValue(score) directly, pass it to parent frame via postMessage
   contactParentFrame("SetValue,cmi.score.raw," +score);
}


or something like that.  :)

- philip


--
Reply all
Reply to author
Forward
0 new messages