Previous Topic

Next Topic

Book Contents

Book Index

Processing Assets

Skillsoft recommends following the specified table actions as a best practice.

Current State of the Course in Third Party Learning Managements System

Returned Status Value

Action

Installed

entitled

Ignore or treat as modified

Not Installed

modified

Treat as entitled

Not installed

not_entitled

Ignore

Table: Entitlement Exceptions

There are rare circumstances where OLSA might return false positives for entitled, not_entitled, and modified status values.

Skillsoft recommends coding the course-processing-loop defensively to make this exceptional circumstance transparent to your LMS. The LMS should check if a course is installed or uninstalled before performing the respective install or uninstall action as illustrated in the following:

        // course-processing-loop-B
    while (there-are-courses-to-process-in-the-zip-file) {
                if (OLSA-course-status-is-entitled) {
                     if (course-is-uninstalled-in-LMS) install the course;
                }
                if (OLSA-course-status-is-not_entitled) {
                     if (course-is-installed-in-LMS) uninstall the course;
                }
                if (OLSA-course-status-is-modified) update the course;
   }

If an a priori check is not possible, then Skillsoft recommends wrapping the install and uninstall actions in an exception-handling block so that the LMS can ignore the relevant exception that may occur as shown below:

        // course-processing-loop-C
    while (there-are-courses-to-process-in-the-zip-file) {
                if (OLSA-course-status-is-entitled) {
                     try {
                       install the course;
                     } catch (AlreadyInstalledException) {
                        //ignore
                     }
                }
                if (OLSA-course-status-is-not_entitled) {
                     try {
                       uninstall the course;
                     } catch (NotInstalledException) {
                        //ignore
                     }
                }
                if (OLSA-course-status-is-modified) update the course;
   }

The update-action is an idempotent operation; the operation has no real impact, therefore you can update redundantly without any special checking or handling.

The only drawback of the recommendation is that if this circumstance should arise then the subsequent Initiate-Poll-Ack cycle will run a little longer than usual because the LMS will iterate through the data it has received before.However it will ensure the LMS and OLSA will remain in synchronization.