Enterprise Integrated Channels

raw JSON →
0.1.57 verified Fri May 01 auth: no python

A Django application for edX enterprises to integrate with third-party systems (e.g., Blackboard, Canvas, Cornerstone, Degreed, Moodle, SAP SuccessFactors) via API, transmitting learner data. Version 0.1.57 is current; release cadence is irregular (multiple releases per month).

pip install enterprise-integrated-channels
error ImportError: cannot import name 'IntegratedChannelApiClient' from 'integrated_channels'
cause Incorrect import path; the client is in a submodule.
fix
Use 'from integrated_channels.integrated_channel.api import IntegratedChannelApiClient'
error OperationalError: no such table: integrated_channels_enterprisecustomerpluginconfiguration
cause Migrations not applied.
fix
Run 'python manage.py migrate integrated_channels'
error AttributeError: 'NoneType' object has no attribute 'transmit_learner_data'
cause Query for EnterpriseCustomerPluginConfiguration returned None (no configuration exists for given enterprise).
fix
Check that an EnterpriseCustomerPluginConfiguration object exists for the enterprise UUID.
breaking Upgrading from <0.1.50 may break due to changes in Cornerstone and Skillsoft payload handling.
fix Review release notes for v0.1.51 and v0.1.54; update your integration code if you use Cornerstone or Skillsoft.
breaking In v0.1.57, the API for Org ID management changed the model schema. Existing migrations must be applied.
fix Run `python manage.py migrate integrated_channels` after upgrading.
gotcha Python 3.11+ required. Older Python versions will cause installation failure.
fix Use Python 3.11+ and ensure your environment meets the requirement.
gotcha The package is designed to be used as part of an edX enterprise installation; standalone usage may require additional configuration (e.g., Django settings, OAuth tokens).
fix Follow the edX enterprise integration guide; ensure Django settings include 'integrated_channels' in INSTALLED_APPS.

Basic usage to transmit learner data for a configured enterprise customer.

from integrated_channels.integrated_channel.api import IntegratedChannelApiClient
from integrated_channels.integrated_channel.models import EnterpriseCustomerPluginConfiguration

# Example: fetch configuration for a specific enterprise customer
config = EnterpriseCustomerPluginConfiguration.objects.filter(
    enterprise_customer__uuid='uuid-here'
).first()

if config:
    client = IntegratedChannelApiClient(config)
    # Trigger transmission
    client.transmit_learner_data()