Elearning with AICC

AICC cross domain tracking


The AICC standard was a breakthrough in online learning. With the AICC standard the communication between items of learning content and systems that managed that learning (Learning Management Systems – LMSs) was standardized. This came from the need in the airline industry for a method of allowing different airlines to use common standards for online learning, and hence the name AICC – Aviation Industry CBT Committee. To explain that a little further – CBT stands for Computer Based Training. Way before there was online training there was Computer Based Training too – usually distributed on floppy disks, or later on CD-ROM.

Nowadays it is rare enough to hear about AICC as the SCORM standard really took off with version 1.2 and since 2015 the AICC group ceased to exist. Yet even with the rise of SCORM and the end of the AICC as an active body, there is one part of the AICC standard which is still extremely useful to online learning – its ability to deal with the cross domain problem that has plagued LMS developers and e-learning managers for decades.


The LMS cross domain issue comes about when you have more than one system in place and you want them to talk to each other. That is a relatively easy thing to do on the network level – it is the whole basis of how the internet works: one server talks to another, passing the information you need to you, pulling and pushing information to facilitate interactions.

The problem comes when you have a JavaScript based protocol for e-learning such as SCORM 1.2. Internet browsers are built with the privacy and security of the person using them in mind, and to help achieve this they allow information to be passed by JavaScript between pages on one website (domain) but do not allow this information to be passed between different domains. At a very simple level, a lot of eLearning works by having a frameset of pages – that is, a number of different pages in one –  where one frame holds the learning content and another holds the functionality that communicates with the Learning Management System (LMS) to store tracking, scores, etc.

A lot of eLearning structures work by having a frameset of pages – that is, basically, a number of different pages in one –  where one frame holds the learning content and another holds the functionality that communicates with the Learning Management System (LMS) to store tracking, scores, etc. This works well in most cases because those frames can ‘speak’ to each other, but when the different frames (pages) are on different domains the browser will (correctly) prevent them passing information between the two domains.

Side note: Why do browsers stop cross domain scripting? They do so to prevent a website you visit being able to carry out actions on your behalf on other websites you visit (like say transferring out of your online bank account) and they prevent websites being able to read your data related to different websites (think saved passwords, cookie data, etc.).


In 1998 the AICC standard added a web interface called HACP (HTTP-based AICC/CMI Protocol). AICC’s HACP can work across different domains because it uses HTTP requests rather than JavaScript/ECMAScript requests as SCORM does. That is simplifying the solution, as many AICC instances actually overcome it with signed Java Applets too, but in essence, they don’t need to.

With AICC you have two call types: getParam and putParam. They are used similarly to SCORM calls getValue and setValue, one for getting a value and one for setting a value. The difference between the two standards is in where and how they call. SCORM is reliant on finding the LMS API relative to itself in JavaScript, and so is unable to get or set values if the target is on a different domain. AICC HACP, however, is able to make the call to a totally different location altogether – it does not even need to be visible in the browser stack.

I have made a lot of different cross domain scripting solutions to cross domain communication using AICC, AICC and SCORM hybrids, and even ones to bypass the limitations of SCORM 1.2 (although to do so you break the ‘self-contained’ idea of SCORM because you do need server side scripting). If you would be interested in seeing an article outlining how any of those can be achieved let us know in the comments and we will try to provide an article that solves your problem.

Reporting from an LMS

What Reporting do you need in a Learning Management System (LMS)?


When organisations decide to go the LMS route in providing learning for their teams the core focus is so often on types of learning, standards supported, mobile capabilities and how learners can be organised. It is often an afterthought to consider reporting. This approach is utterly incorrect. If you think about the core aim of an LMS it becomes clear that an LMS is a solution to managing assignment and tracking of learning for a group of learners. That means that once yo have the basic of being able to assign your learning to learners out of the way (if an LMS can’t do that, well – it isn’t an LMS!), then it is all about how useful the reporting is.

I have been on both sides of the LMS sales process and have seen how often fancy looking reports are shown and genuinely impress the potential buyer. I have sadly also seen the long term results of a hasty purchase without analysis against real use cases for your business needs. As a first step to finding the exact reporting capabilities you need in your LMS you really need to find out what information you will want, and the format you will want it in.

To help you towards this decision I have listed to some of the different types of reporting that I feel you should be looking for in a potential LMS. If you have others you think should be included please let me know if the comments.

Detailed Reporting with Filters

This is essential in an LMS – without the ability to see trends in your learner’s behavior it is impossible to know how effective your training programs are. The level of reporting capability varies hugely across different Learning Management Systems, and you really need to dig deep to see how good each one is. Before you have a demo of an LMS from a salesperson you should create a set of scenarios that you want to have demonstrated – to help you get started here are some key reporting requirements that came up in our research –

Report on learner engagement

This functionality is where you can see how many users started each course, and of those what % completed it, as well as the rates for passing and failing, number of exam attempts and study duration averages. A best of breed LMS will allow you to see this across all courses as well as a subset of courses. For example, if you have 10 IT related courses you should be able to report on those and identify if a higher percentage of students drop out of one course – suggesting it is failing for some reason. Perhaps it is too difficult, or poorly presented, or simply is not suitable for your learners (maybe it covers a technology framework that differs to the one you use in your IT department). These insights are vital to your learning officer(s) in managing your library of learning and ensuring it has maximum impact on the skills of your staff.

Report on groups of individuals

If you have 100 staff you probably don’t just want to see what every person has done all in one report, instead you would like to select the members of a particular team, or who fulfill a distinct job role. Your LMS should allow you to select specific users and generate a custom report on them.

Report on Specific Courses

A common complaint I have heard is that when you run a report on courses you only have two options – one course in lots of detail or all courses in limited detail. A few LMSs out there have something in between where you can pick a couple of courses and compare them. This seems like an insignificant ask, but think it through – supposing you have licensed two courses from different providers covering Project Management. The licenses are coming up for renewal and you want to see the full stats for both, ideally in a rich visual way to clearly see the impact each has. If you can only report separately you have to do all the work yourself to map one against the other. Isn’t that what you are paying a small fortune for your LMS to do for you?

Time based custom reporting

This is an absolute must have for any LMS reporting capability. You need to be able to run every single report over custom time frames. You need to see how an individual studied over a study break, how a course was studied over a quarter, how a team studied over a year. Do not purchase an LMS that will not give you this level of customization as you will really regret it!