Integrations
Overview
Integrations covers the mechanisms through which Open edX connects to external systems — LTI (Learning Tools Interoperability), SCORM, webhooks, enterprise system connectors, and API-based integrations with HR, CRM, and other institutional tools.
LTI is the primary standards-based integration protocol and Open edX is both a consumer (embedding external tools in courses) and a provider (offering courses as LTI content to external platforms).
Current State (2026)
- LTI Consumer:
xblock-lti-consumersupports LTI 1.1 and LTI 1.3; allows embedding external tools as XBlocks in course content - LTI Provider: Open edX can serve as an LTI provider (exposing courses to other LMS platforms); built into
edx-platform - Webhooks:
openedx-webhooksprovides outbound webhooks for platform events (enrollment, completion, etc.) - Enterprise integrations:
enterprise-integrated-channelsconnects to SAP SuccessFactors, Degreed, Canvas, Cornerstone, and other enterprise systems - Event bus:
event-bus-kafka/event-bus-redisenables event-driven integration with external systems via Open edX Events
Architecture
- LTI Consumer XBlock:
xblock-lti-consumerrenders as a content block; manages OAuth2 (LTI 1.1) or OIDC (LTI 1.3) handshake; handles deep linking - LTI Provider:
edx-platformimplements the LTI provider protocol; serves course content to external consumers - Webhooks: Configurable outbound HTTP POST to external URLs on platform events; payload defined per event type
- Enterprise channels: Per-integration Django modules in
enterprise-integrated-channels; polling-based sync for learner progress data - Event bus: Kafka or Redis Streams event bus carries Open edX Events (OEP-41) to external consumers
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/xblock-lti-consumer | LTI 1.1 and 1.3 consumer XBlock | High | Most-used integration |
| openedx/openedx-webhooks | Outbound webhook system | Low | Event-driven integration |
| openedx/enterprise-integrated-channels | Enterprise system connectors | Medium | HR/LMS sync |
| openedx/event-bus-kafka | Kafka event bus backend | Medium | Async integration |
| openedx/event-bus-redis | Redis Streams event bus backend | Medium | Lighter-weight alt |
| openedx/openedx-platform | LTI provider, API endpoints for integration | High | Core integration surface |
Recent Changes
- LTI 1.3 support maturation in
xblock-lti-consumer - Event bus becoming the preferred integration mechanism for async workflows
History
Origin
- Year introduced: ~2013–2014 (LTI support added early; enterprise integrations came with B2B growth)
- Initial implementation: LTI 1.1 consumer as an XBlock; basic outbound API for integration
- Context: Educational institutions required interoperability with their existing systems; LTI was the emerging standard
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2013–2014 | LTI 1.1 consumer XBlock added | Unknown |
| ~2016–2017 | Enterprise integrated channels development | Unknown |
| ~2019–2020 | LTI 1.3 support added | Unknown |
| ~2021–2022 | Event bus (Kafka/Redis) for async integration | Unknown |
People Who Shaped This Area
- Engineering: Unknown — open question for interview
- Product: Unknown — open question for interview
- Design: Unknown — open question for interview
Open Questions
- [ ] When was LTI support first added and who drove the implementation?
- [ ] Which enterprise integrated channels were built first and for which customers?
- [ ] How does the LTI 1.3 OIDC flow work in
xblock-lti-consumer? - [ ] What drove the decision to build
event-bus-kafkavs. using existing messaging solutions? - [ ] What are the most common integration patterns in production Open edX deployments?