[Proposal] Configurable Un-enrollment Survey

[Proposal] Configurable Un-enrollment Survey

Related Github Issue/PR:

Summary

This proposal introduces configurability to the course un-enrollment experience in Open edX by allowing operators to control whether learners are shown an un-enrollment survey or are unenrolled immediately after confirmation. The proposal adds a feature flag, SHOW_UNENROLL_SURVEY, to make the survey optional and environment-configurable.

This change aligns with recent scope updates to the Improved Un-enrollment Experience for Enhanced User Satisfaction proposal and provides greater flexibility for operators with different UX, compliance, or data-collection needs.

Motivation

The current un-enrollment flow always presents learners with a survey asking for reasons before completing un-enrollment. While this can provide useful feedback, it may not be appropriate or desirable for all.

Problem Statement

Currently:

  • The un-enrollment survey is always shown after the initial confirmation step

  • There is no configuration option to bypass the survey

Proposed Solution

Introduce a new environment-level feature flag:

SHOW_UNENROLL_SURVEY

This flag controls whether the un-enrollment survey is displayed to learners.

Behavior

  • SHOW_UNENROLL_SURVEY = true (default)

    • Learners see the unenrollment survey

    • They are asked for reasons before unenrollment is completed

  • SHOW_UNENROLL_SURVEY = false

    • Learners are unenrolled immediately after the confirmation modal

    • No survey or reason collection is shown

Impact Analysis

Learners

  • Potentially faster and less disruptive un-enrollment experience

  • No change in default behavior unless configured by the operator

Operators

  • Ability to disable surveys without custom code

Platform Maintainers

  • Minimal risk due to feature-flagged behavior

  • Cleaner separation of concerns in un-enrollment flow

Backward Compatibility

  • The default value of SHOW_UNENROLL_SURVEY is true

  • Existing installations will see no behavior change unless explicitly configured