Skip to content

Data Flows — xPRO Open edX

Generated 2026-06-24 17:02 UTC · c4gen dev

Each scenario below replays one interaction as a C4 Dynamic diagram. Amber steps are asynchronous (queued / scheduled / event-driven).

How to read these diagrams

These are C4 model diagrams (C4-PlantUML). Read them top-down: System Context (the whole SOA) → Container (one system's runtime units) → Dynamic (a single data flow, step by step).

  • People are rounded boxes; systems and containers are rectangles; databases and queues have distinct shapes.
  • Each arrow is a data flow labelled with what moves.
  • Solid arrows are synchronous (request/response, caller blocks).
  • Amber dashed arrows are asynchronous (queued, scheduled, or event-driven — caller does not block).
  • Drag to pan, scroll to zoom. Boxes with a link drill into the next level.

Learner takes a course (synchronous)

A learner works through courseware in the LMS. The LMS loads course structure from the modulestore (MongoDB), reads/writes state in MySQL, proxies forum activity to the comments service, and stores annotations in the Notes API.

Course authoring & publish (synchronous + async)

An author edits a course in Studio. Studio writes structure to the modulestore, stores uploaded assets and (on demand) course export archives to S3, and indexes content into edx-search.

xPRO SSO & user provisioning (synchronous)

xPRO authenticates learners through this Open edX deployment via social-auth (ol-oauth2). On first login/signup xPRO creates the corresponding edX user and an OpenEdxApiAuth access token, used later for enrollment and grade reads.

xPRO enrollment, grade & run sync (cross-service, mixed)

xPRO enrolls learners in the LMS on order fulfillment and, on a daily cron, repairs failed enrollments/faulty users and pulls grades and course-run data (titles/dates) from this deployment to generate certificates.

Ingestion sources (ETL)

Every external source the edx_content / default Celery workers pull from, with transport and cadence. ⚠️ marks brittle linkages (HTML/token scrapes, hardcoded URLs).

Source Transport Cadence Data Source of truth
MITx Pro (grades/course-run API consumer) REST (edx-api-client) daily cron grades + course-run data courses/tasks.py