[Proposal] Enterprise Integration

[Proposal] Enterprise Integration

Open edX Enterprise Integration Requirements 

This document outlines the requirements to integrate the Open edX Enterprise platform with an enterprise HRMS (corporate) or SIS (academic), enabling catalog synchronization, user enrollment, SSO-based access, progress tracking, and xAPI event delivery. 

It is heavily based on capabilities that exist in edx-enterprise which is not commonly deployed for a variety of reasons.

Overview 

The integration supports the following primary use cases: 

  • Federated SSO access for enterprise users 

  • Just-in-time (JIT) user provisioning 

  • Catalog metadata delivery 

  • Enrollment provisioning  

  • Enrollment deep-linking 

  • Status reporting and xAPI event delivery 

Identity and Access Management 

SSO via SAML IdP 

  • Each enterprise customer is provisioned with a dedicated SAML Identity Provider (IdP) in Open edX. 

  • Open edX functions as a SAML Service Provider (SP). 

  • Users are authenticated via SSO upon clicking deep links to Open edX. 

Just-in-Time User Provisioning 

  • Users are JIT provisioned upon first successful SSO login. 

  • User attributes (e.g., email, name, external_id) are extracted from the SAML assertion, and the Open edX account is linked to the associated enterprise customer. 

SCIM 

The System for Cross-domain Identity Management (SCIM)specification allows for centralized management of identity across cloud-based applications and services. This can work in conjunction with JIT provisioning by providing enterprise customers with the ability to fully offboard their employees once their employment is terminated. Or it can be used instead of JIT provisioning allowing the enterprise explicit control of account registrations. 

Course Catalog Integration 

Catalog Format 

Open edX provides course metadata including: 

  • Course title 

  • Description 

  • Duration 

  • Delivery mode (e.g., self-paced, instructor-led) 

  • Enrollment URL 

  • Course image 

  • Tags 

  • Skills and other metadata 

Delivery 

  • Initial full push of the course catalog 

  • Subsequent incremental updates as course metadata changes 

  • Push initiated via webhook or integration adapter 

Enrollment Provisioning 

Deep Link Enrollment 

  • Each course in the catalog includes an enrollment URL. 

  • When clicked by an authenticated employee: 

    • If not already enrolled, the user is enrolled automatically 

    • If not yet provisioned, the user is JIT provisioned and enrolled 

API-Based Enrollment 

  • HRMS/SIS may call the Open edX Enterprise Enrollment API to enroll users in courses. 

  • Enrollment API accepts identifiers such as email, course run ID, and enterprise customer UUID. 

  • Users can be proactively enrolled ahead of first access (pending enrollment) 

  • Pending enrollments are visible in reporting and will be updated upon login  

Enrollment Lifecycle 

State 

Description 

Pending 

User is enrolled via API, but has not logged in 

Active 

User logged in and enrollment is fully active 

Completed 

User completed the course 

Failed 

User did not pass (if applicable) 

Expired 

Course run has ended 

Tracking and Event Delivery 

Bulk Data Retrieval 

Enrollment and progress data can be pushed via secure file delivery or can be retrieved through a data API. 

xAPI Support 

Open edX will emit selected xAPI statements to the HRMS/SIS Learning Record Store (LRS). 

Key Events 

Examples below are from edx-enterprise

Enrollment Created 

{ "id": "d0df8e65-f9ae-4c72-951e-7ae25cc69157", "actor": { "objectType": "Agent", "mbox": "mailto:staff@example.com", "name": "staff" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/registered", "display": {} }, "context": { "extensions": {} }, "timestamp": "2018-08-15T09:18:31.066Z", "stored": "2018-08-15T09:18:31.066Z", "authority": { "account": {}, "objectType": "Agent", "name": "Test Account" }, "version": "1.0.1", "object": { "id": "http://adlnet.gov/expapi/activities/course", "definition": {}, "objectType": "Activity" } }

Course Completed 

{ "id": "90cd19fd-73aa-475d-82ba-117c7ea04756", "actor": { "objectType": "Agent", "mbox": "mailto:staff@example.com", "name": "staff" }, "verb": { "id": "http://adlnet.gov/expapi/verbs/completed", "display": {} }, "result": { "score": {}, "success": true, "completion": true }, "context": { "extensions": {} }, "timestamp": "2018-08-15T11:22:52.113Z", "stored": "2018-08-15T11:22:52.113Z", "authority": { "account": {}, "objectType": "Agent", "name": "Test Account" }, "version": "1.0.1", "object": { "id": "http://adlnet.gov/expapi/activities/course", "definition": {}, "objectType": "Activity" } }

Delivery Method 

  • xAPI events will be delivered via HTTPS to the HRMS/SIS xAPI LRS endpoint 

  • Open edX will buffer and retry on delivery failures 

Additional Features 

Enterprise Connectors 

As it is likely that Open edX service providers are likely to encounter the same HRMS, SIS and LMS platforms, connectors that build on top of the core capabilities of catalog, enrollment, data and identity would enable turnkey integrations. 

Detailed requirements for enterprise connectors are out of scope of this document. 

Enterprise Portal 

  • View learner data 

  • Manage enrollments 

  • Manage enrollments 

Enterprise Roles 

  • Admin – manage enrollments 

  • Data – view enrollment and progress data 

Enrollment Codes 

While not a core capability, the ability to distribute enrollment codes is often requested by enterprise customers. 

Group-Based Access 

  • Enterprise learner groups can be defined to assign employees to distinct groups within the enterprise customer (customer-scoped cohorts). 

Insights 

  • Course, class and learner insights from Aspects. 

  • Data segregated by enterprise customer