This article was written by team member Tim Krones

From fall of 2016 through summer of 2018, OpenCraft worked closely with the edX for Business team and Arbisoft to build out and improve several crucial features for the Open edX Enterprise Service. These features still exist today and are ready for everyone in the Open edX community to use, extend, and build upon. We’ll describe them in more detail below. But first, let’s have a quick look at what Open edX Enterprise Service actually is.

What is the Open edX Enterprise Service?

The Open edX Enterprise Service code base adds support for a number of different use cases to Open edX, mostly in the realm of B2B. It is included in standard Open edX installations by default, but nonetheless a lesser known (or at least a less talked-about) component of Open edX. 

It integrates with the ecommerce and course-discovery services. In fact, making use of all functionality provided by the Open edX Enterprise Service requires a working setup of ecommerce and course-discovery. The Open edX Enterprise Service code base also enables edX For Business

In a nutshell, the service enables alternative ways of accessing course content that is hosted on an Open edX instance: It supports LMS integrations with third-party systems such as SAP SuccessFactors, Degreed, and Cornerstone as well as direct integrations via the Open edX Enterprise Service Catalog API. It also allows customers to purchase course seats in bulk so that they can provide course access to their employees via individual-use enrollment codes or direct enrollment for specific courses with discounts/entitlements. Through data pass-back and customer reports, employers can get information about “learner behavior and outcomes,” i.e., information about their employees’ performance in relevant courses.

OpenCraft’s contributions

Integration channels for third-party systems

As mentioned earlier, one of the key features of the Open edX Enterprise Service is support for integrating Open edX with third-party systems. Aside from general improvements to the code enabling these integrations, OpenCraft’s work in this area mainly focused on two systems, namely SAP Success Factors and Degreed.

SAP SuccessFactors integration

OpenCraft expanded the existing integration for SAP SuccessFactors, adding features such as:

  • Support for gathering course data, converting it to an SAP-compatible format, and transmitting it to SuccessFactors. This feature was a fundamental building block for allowing SuccessFactors to display selected courses to employees of Enterprise customers.
  • Support for collecting completion data for individual learners, for both instructor-paced and self-paced courses as well as different enrollment tracks, and transmitting it to SuccessFactors. This feature was instrumental in enabling Enterprise customers to get insight into how their employees are performing in specific courses.

Our work also included implementing support for situations where specific learners no longer had a valid SuccessFactors account due to leaving the company or organization that had provided them with access to course content hosted on Open edX.

Degreed integration

Integration for the Degreed platform did not exist when OpenCraft was first onboarded to the Open edX Enterprise Service project. We built this integration from scratch and applied large-scale refactorings to optimize code reuse between different integrations of third-party systems. Aside from making it easier to implement additional integration channels for third-party services in the future, these refactorings included making data-passback functionality asynchronous by allowing commands for transferring different types of data to run on separate worker threads as Celery tasks.

Direct integration improvements

In addition to integrations utilizing specific third-party services such as SAP SuccessFactors and Degreed, Open edX Enterprise Service supports direct integrations via the service’s catalog  API. This increases flexibility for Enterprise customers by allowing them to connect their own learning management systems (LMS) to Open edX. However, not everyone wishing to make use of the Open edX Enterprise Service features has the ability to extend and/or modify their chosen LMS to establish an API integration. 

To improve the situation for these types of Enterprise customers (i.e., to allow them to access and work with relevant data from the service with minimal upfront effort), functionality for transmitting data in alternative formats was added to the Open edX Enterprise Service. For example, instead of creating their own solution for obtaining reports from the Open edX Enterprise Service Catalog API, Enterprise customers can choose to have the platform send these reports to them in CSV or JSON format. Reporting configurations for individual Enterprise customers can be changed via the Django admin.

Data Sharing Consent (DSC)

An important aspect to consider when integrating with external systems is that learners should be able to explicitly agree to their data being shared between Open edX and those external systems. 

The service provides learners with this ability through Data Sharing Consent (DSC) features. For example, one of the early features that OpenCraft implemented was to ask learners to consent to data sharing when attempting to access courses in which they had been manually enrolled by their organization or employer, and to deny access to these courses when consent was declined. Similarly, in the earlier stages of the project we built functionality for requesting data sharing consent from learners when they attempted to redeem a course coupon provided by their organization or employer.

Aside from implementing and refining user experience for different use cases involving the concept of data sharing consent, OpenCraft also helped create a generic consent API and unified data sharing consent database model, which ultimately made it possible to extend DSC functionality to cover programs.

Updates to registration, account activation, and login flows

Creating a smooth experience for Enterprise learners also involved making a number of fundamental changes to existing functionality for registering, activating, and logging in to learner accounts on Open edX. Most notably, OpenCraft worked on creating and improving a special landing page for learners coming to the Open edX platform through an Enterprise workflow. This page allows learners to obtain various kinds of information regarding the platform itself, and the course or program in which they are about to enroll.

For example, when a new Enterprise learner creates an account with the platform, the landing page allows them to view the terms of service of the platform without leaving the registration flow. In a sidebar next to the elements of the page that the learner can interact with, the landing page also displays an Enterprise-specific welcome message as well as custom branding for the Enterprise customer that the learner is associated with. This feature is not specific to the registration flow; it is integrated with login and enrollment flows as well. Branding for individual Enterprise customers can be configured via the Django admin.

When the landing page is shown as part of the process for enrolling in a specific course, the Enterprise learner can view extensive information about the course on this page — again without having to navigate to a different page. This is similar to the kind of information that the Open edX platform displays on the “About” page of a course.

In a later phase of the project, a landing page with similar capabilities was built for the use case of enrolling into programs. In addition to providing relevant information about the program in which the current learner is about to enroll, the Enterprise landing page for programs provides functionality for viewing information about each individual course that belongs to that program.

Another way the Enterprise learners’ experience with the Open edX platform was made as smooth as possible was by minimizing the number of steps required to register or log in to the platform and to enroll in a course or program. To this end, OpenCraft built functionality for hiding irrelevant fields from the registration form and for skipping identity provider selection during the login process. OpenCraft improved the workflow for enrolling into courses by adding functionality for dynamically changing behavior based on whether a learner had already joined a given course: If the learner was completely new to the course, they would be taken to the Enterprise landing page. But if they had enrolled in the course previously, the system would take them straight to the course, never showing the landing page.

Lastly, to further simplify registration flows for Enterprise learners, OpenCraft implemented support for live validation of learner inputs on the registration page. This work involved extensive changes to frontend and backend code for user registration, and the results were visible not just to Enterprise learners but also to regular learners signing up for an account on the Open edX platform.

Want to learn more about our contributions to the Open edX Enterprise Service? Drop us a line and let’s chat. We’d love to hear from you.

Header photo by Samson on Unsplash