The 12th Open edX community release will be named Lilac.

Put stuff here that we have to remember when we start packaging up for Lilac.  Especially important is information that system installers or operators will need to know. Please include your name when you add an item, so that we can get back to you with questions.


  • The open-release/lilac.master branches were created on April 9th 2021.

  • The official release is scheduled to be June 9th 2021.


  • Tracking metrics based on the anonymized session ID will experience a discontinuity or other anomaly at the time of deployment, as the anonymized IDs will change. [PR] This will likely appear as if everyone logged out and back in again, although only from a metrics perspective. In a green-blue deployment scenario, it may briefly appear as if there are twice as many sessions active. (@Tim McCormack)

  • Use of edx-proctoring now requires a setting PROCTORING_USER_OBFUSCATION_KEY – it should be initially set to the same value as SECRET_KEY, in both LMS and Studio. This allows it to be changed independently, although there is not yet a way to rotate it without breaking integration. (@Tim McCormack)

  • Upgraded to mongo 4(point-of-contact: @Cory Lee (Deactivated) )

    • No changes were needed for us to move from mongo 3 to mongo 4 , but mongo 4 features may be used by edX developers going forward.

  • Import unqualified packages from lms/djangoapps, cms/djangoapps, or common/djangoapps is no longer supported. Doing so will cause instances of import_shims.warn.DeprecatedEdxPlatformImportError to be raised. See for details and context.

  • LMS/Studio: Changes to edx-organizations (point-of-contact @Kyle McCormick )

    • Uniqueness constraint added to Organization.short_name

      • This was added in edx-organizations 6.0.0. See release notes for details.

      • For instances that did not enable FEATURES['ORGANIZATIONS_APP'], this is a no-op

      • For instances the DID enable FEATURES['ORGANIZATIONS_APP'], any Organizations with conflicting short_names need to be removed (can be done via Django admin), else the migration for edx-organizations 6.0.0 will fail to apply.

    • Organizations feature globally enabled for all LMS and Studio instances.

    • Added ORGANIZATIONS_AUTOCREATE Django setting for Studio.

      • Defaults to True.

      • When True, creating a new course run or content library with an unrecognized org slug (that is, “edX” in course-v1:edX+DemoX+2T2020 will silently auto-create an organization in the background.

      • When False, creating a new course run or content library with an unrecognized org slug will raise an error. This is helpful if you wish to restrict the set of organizations under which course runs and content libraries may be created.

    • The FEATURES['ORGANIZATIONS_APP'] is no longer supported.

      • The Organization and OrganizationCourse model are now available on all instances.

      • If you previously enabled FEATURES['ORGANIZATIONS_APP'], then you should override the Studio setting ORGANIZATIONS_AUTOCREATE to Falsewhen upgrading to Lilac to achieve the same functionality.

    • Added Studio management command: ./ cms backfill_orgs_and_org_courses

      • This back-populates the organizations_organization and organizations_organizationcourse tables, for Open edX instances that did not previously enable FEATURES['ORGANIZATIONS_APP'].

      • It is not critical to run this for the Lilac upgrade, since no features depend on these tables being populated yet.

      • However, future releases may make use of the data in these tables; hence, it is best to run the backfill now.

  • The sysadmin dashboard is no longer supported (point-of-contact @Hamza Farooq).

Feature Changes

  • The Learning Micro-Frontend (MFE) may be installed for opt-in usage (@Kyle McCormick).

    • By default, the course experience is still run in the legacy LMS templated frontend, so this should not affect the out-of-the-box Lilac experience.

    • If the Learning MFE is installed using the MFE Deployer Ansible role (I lack the details on what entails) then certain features can be opted in to the Micro-Frontend, as noted below.

    • These LMS CourseWaffleFlags can be toggled on (globally, per-user, or per-course) to switch certain features over the Learning MFE:

      • courseware.courseware_mfe : Enable to host courseware (ie, the learning sequence experience) in the MFE.

      • courseware.microfrontend_course_team_preview : Enable to show global and course-level staff members the ability to preview courseware in the MFE. Does not affect learners.

      • course_home.course_home_mfe and course_home.course_home_mfe.1: Enable both of these in conjunction with one or more of the following (contact @Michael Terry (Deactivated) or @Jason Myatt (Deactivated) for details):

        • course_home.course_home_mfe_dates_tab : Display the “Dates” course tab in the MFE.

        • course_home.course_home_mfe_outline_tab : Display the course outline (the target of the “Course” course tab) in the MFE.

        • course_home.course_home_mfe_progress_tab: Display the “Progress” course tab in the MFE.

  • Switched from Elasticsearch 1 to Elasticsearch 7 across Open edX. This may require some syntax changes for custom scripts that used search APIs. (@Michael Terry (Deactivated) )

    • Please change queries that used __not to __exclude

    • Please properly URL-encode any plus signs in query URLs (like in course run key parameters) to %2b. Our Elasticsearch 7 implementation is more strict in that regard.

    • Please change queries against course-discovery that used pacing to pacing_type

  • Xblock URL token signing can now be migrated to use a new multi-key mechanism rather than being tied to SECRET_KEY. It is recommended that you perform this migration, as it permits easier rotation of SECRET_KEY. (@Tim McCormack)

  • Various bug fixes and updates around course certificate generation (@crice (Deactivated))

    • In an effort to be more inclusive, code referencing the course CertificateWhitelist model is being updated to instead refer to a Certificate Allowlist. The model itself has not yet been renamed.

    • Temporary CourseWaffleFlag added to control access to updated behavior of the CertificateWhitelist (aka Certificate Allowlist)

    • Temporary CourseWaffleFlag added to control access to updated behavior of the course certificates

    • The management command named create_fake_cert has been removed. The Certificate Allowlist should be used in its place.

    • The management command named gen_cert_report has been removed. To view the status of generated course certificates, query the certificates_generatedcertificate database table.

    • A user can no longer be added to both the Certificate Allowlist (meaning the user should be granted certificate) and the Certificate Invalidation list (meaning the user should not be granted a certificate) for the same course run.

    • Removal of the allow_certificate field on the UserProfile model has begun ()

  • Added a new export-course-metadata-to-storage feature. In order to use it set COURSE_METADATA_EXPORT_BUCKET and COURSE_METADATA_EXPORT_STORAGE. Useful for external services you might have that want to scrape course data.' (@Matthew Piatetsky (Deactivated))

  • In common.djangoapps.student.models, the save parameter is deprecated for functions anonymous_id_for_user and unique_id_for_user, and these functions will always save generated IDs to the database. This allows future decoupling of ID generation from SECRET_KEY. Including the parameter will result in a DeprecationWarning; after Lilac we plan to remove the parameter (which will be a separate breaking change – DEPR-148). (@Tim McCormack)

Deprecations and Removals


key summary type created updated due assignee reporter priority status resolution


key summary type created updated due assignee reporter priority status resolution