Skip to content

COURSE_ENROLLMENT_CREATED signal fired twice for a single enrollment #39002

Description

@CodeWithEmad

Description

On a local tutor setup, enrolling one user into one course results in COURSE_ENROLLMENT_CREATED being emitted twice, each with a distinct event_metadata.id. This was observed via a downstream receiver (webhook forwarder) that logged two separate deliveries for what should be a single enrollment action:

event_type event_id timestamp
org.openedx.learning.course.enrollment.created.v1 b9fed4e4-9bb3-11f1-b47b-8665a19c74ef Aug. 19, 2026, 9:52 a.m.
org.openedx.learning.course.enrollment.created.v1 b9de5ffc-9bb3-11f1-91fa-8665a19c74ef Aug. 19, 2026, 9:52 a.m.

Since the two events have different event_metadata.id values, this isn't a case of a receiver being connected twice (that would redeliver the same event id) — the event is being emitted twice by edx-platform itself for the same enrollment action.

Steps to reproduce

  1. On a dev setup, enroll a single user in a single course (via UI or enrollment API).
  2. Have a receiver connected to COURSE_ENROLLMENT_CREATED (e.g. logging the metadata.id of each call).
  3. Observe two invocations with different event_metadata.id for the same enrollment.

Expected behavior

One enrollment action should emit exactly one COURSE_ENROLLMENT_CREATED event.

Actual behavior

Two events are emitted with distinct ids, seconds apart, for the same user/course enrollment.

Environment

  • tutor 22.0.0 openedx verawood.1
  • Open edX Events: openedx_events.learning.signals.COURSE_ENROLLMENT_CREATED

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions