Skip to main content

Integrating your Learning Management System

Notice

Throughout these pages and the application, Learning Management System is often abbreviated and referred to as LMS.

What are the steps to integrate my LMS?

Many customers enjoy the benefit of integrating their LMS with Codebashing. This allows customers to “pull” data from Codebashing and into their LMS, the primary reason for doing this is that it allows customers to track training progress and completions within the organization’s solution of choice for their learning management.

Codebashing does not support out-of-the-box integration with any specific LMS, however there is a straightforward process to achieve a successful Codebashing/LMS integration with a custom “connector” as outlined below.

Background

  • Codebashing provides various API endpoints for programmatic access to training progress data.

  • All enterprise grade LMS systems provide a “loading” mechanism to upload/import training data from external or 3rd party systems for which native integrations do not exist.

Custom Connector ETL Pattern

  • The connector can make use of Codebashing API endpoints to Extract training data.

  • The connector then needs to apply a Transform to the data to ensure it is in the correct format for your organizations’ LMS.

  • The connector then needs to utilize the LMS data Load functionality to import/upload the Codebashing training data.

Additional Considerations

Typically, when making use of data Load functionality of an LMS, there is a requirement to ensure the loaded data is indexed by the same unique key the LMS requires. In practice this usually means the Unique Employee Identifier used at the customer-end, rather than the corporate email address of the user that is stored in Codebashing by default. The solution to this is straightforward, and requires configuration of a custom SSO/SAML field to ensure that the necessary fields are captured in Codebashing.

Example Walkthrough Explaining LMS Integration

The LMS integration is explained in several steps.

Step 1

I read my LMS documentation and decide the minimum I need to pull out from Codebashing is an email based identifier and something that allows me to calculate the percentage completion.

I look at Codebashing API spec and see that I can do that with the sign_in_and_course_info API, specifically with the following fields… You find the link to the API reference in the admin menu to the left.

primary_course_completed_lessons_count
primary_course_lessons_count
email

Step 2

To do that, the documentation instructs me to run a command like:

curl 'https://learn.codebashing.com/api/v1/users/sign_in_and_course_info?fields=email, 
primary_course_completed_lessons_count, primary_course_lessons_count ' 
-H "X-API-KEY: XXXXXX" -H 'Authorization: Token token="XXXXXXX"'

Step 3

I will get some JSON packet back that contains all the stuff I asked for:

[
{
    "email":"[email protected]",
    "primary_course_lessons_count":5,
    "primary_course_completed_lessons_count":3,
},
{
    "email":"[email protected]",
    "primary_course_lessons_count":5,
    "primary_course_completed_lessons_count":1,
},

Step 4

The missing piece is knowing what format the data needs to be transformed into.

As a simple example let’s say my LMS has a CSV import function.

The format for the file is just “email, percentage complete”.

So I need to add some code that converts JSON to CSV and calculates the percentage complete based on the lesson count and ‘lessons completed’ count.

The output is then the LMS friendly file format.

Step 5

Obviously I can easily automate this whole thing by sticking it in some cron job or similar in order to:

  1. Run the script to extract and transform the data.

  2. Initiate the LMS loading process (how this trigger can be called will vary but it’s an entirely non-Codebashing dependent piece).