Skip to main content

Integrating your Learning Management System

Note

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

Integrating Codebashing with LMS?

You can integrate your LMS with Codebashing and track your developers' progress on the platform.

Codebashing does not support out-of-the-box integration with any specific LMS, but can be customized to integrate with your own.

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 organization’s 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 the 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 the configuration of a custom SSO/SAML field to ensure that the necessary fields are captured in Codebashing.

Walkthrough LMS Integration

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 the 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 a JSON packet which answers my request:

[
{
    "email":"user1@dummy.com",
    "primary_course_lessons_count":5,
    "primary_course_completed_lessons_count":3,
},
{
    "email":"user2@dummy.com",
    "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 in 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).