Preparing Open edX for the Willow release

Verawood is the current named Open edX release, and Willow is listed for December 2026. This page sets out what Verawood sites must change before Willow, the supported upgrade path and the work that drives effort.

On this page

Open edX Willow upgrade: why Verawood sites should prepare now

A Verawood site should plan its move to Willow now. Open edX supports only the latest named release and cannot support more than one release at a time. Verawood was published on 30 July 2026, and Willow is listed for December 2026. When Willow becomes the latest named release, a site still running Verawood is outside support, so the upgrade has to be dated and staffed before that point. The work is more than a version bump. It depends on which custom pieces your site has built or enabled, and those are where most of the preparation effort sits.

This page covers five areas where Verawood sites commonly have custom work that Willow will affect. The first is the MinIO plugin, which needs a replacement path for file and media storage. The second is edx-val storage, which moves to Django STORAGES, so any custom storage settings in your deployment need review. The third is the set of extracted XBlocks, which each need their own test pass. The fourth is RBAC course authoring, where course team permissions must be checked against the roles your organization uses. The fifth is the legacy catalog, which needs a retirement plan and a check of any pages still linking to it. The Ulmo to Verawood steps are covered on their own page.

The supported path for this work runs through Tutor. The edx-platform maintainers recommend running Open edX in production through a service provider or with Tutor, and Tutor is the official Docker-based distribution, with a plugins and hooks system for site-specific changes. If your site was built on Tutor, start by inventorying every plugin, custom image layer, theme and settings override, and record the version each one is pinned to. Then check each item for compatibility with Willow. Sites that maintain their own forks of edx-platform should expect more rebasing work than sites that rely on Tutor plugins alone.

Several items cannot be confirmed from this page and must be checked against the Willow release notes once they are published. Confirm the list of breaking changes and deprecations, any required data migrations, and the minimum versions of Python, MySQL, MongoDB and Node.js that Willow expects. Also confirm whether the MinIO replacement or the edx-val storage change requires a specific sequence, the exact behavior of RBAC course authoring, and the timing for removing the legacy catalog. Put these questions to your delivery partner or to the Open edX community before the scope is fixed, because the answers determine the test plan and the window you need.

Which Willow changes affect Verawood sites and what to do

This table lists the Willow changes most likely to affect sites running Verawood, with the impact of each and the action to take before the December 2026 release. Read each row as a checklist item, and confirm exact file, setting and version details in the Willow release notes and Tutor documentation. The main takeaway is that storage, plugin and authoring changes need testing in a staging copy before any production upgrade is scheduled.

ChangeImpactAction needed
Replacing the MinIO pluginSites that store uploads through a MinIO-based plugin need another storage path. Missing files appear as broken assets for learners and authors.Find every installation using the plugin, choose a replacement backend, and test uploads and playback in staging.
Moving edx-val storage to Django STORAGESStorage settings for video data move to the Django STORAGES format. Old settings may be ignored, breaking video delivery or transcripts.Map current edx-val storage settings to the new format in the release notes, then test playback and transcripts in staging.
Testing the extracted XBlocksExtracted XBlocks must be installed as separate packages at matching versions. Missing or mismatched packages break courses that use them.List courses using these blocks, install the versions the release notes specify, and check editing and learner views in staging.
Testing RBAC course authoringRole-based access control changes who can author, edit and publish. Course team assignments may not carry over as expected.Export current course team roles, review them against the new model, and test author, reviewer and admin accounts in staging.
Retiring the legacy catalogThe legacy catalog is being retired. Pages, links and integrations that read from it stop returning course listings.Find every consumer of the legacy catalog, move listings to the supported option named in the release notes, then remove references.
Tutor image and plugin rebuildsWillow sites need rebuilt Tutor images, and custom plugins must be rebuilt against them. Outdated plugin pins can break builds or running sites.Pin the Tutor version for Willow, rebuild images in a test environment, and record the image tags deployed to each environment.

Why the latest named release is the only supported path

Open edX states that the latest named release is the only supported release and that it cannot support more than one release at a time. Verawood is the current named release, published on 30 July 2026, so a Verawood site has no supported version to wait on. The next releases, Willow and Xylon, are listed for December 2026 and June 2027. A site that waits for Xylon would spend the gap running software the project no longer supports, because Willow ends Verawood's supported status when it ships. The planning question is therefore not whether to move to Willow, but how much preparation fits before the Willow release. Confirm the exact Willow release date in the Open edX release notes before you fix a calendar.

Staying on Verawood after Willow ships means the site owner carries the consequences alone. Core fixes for the release stop coming from the project, so any security patch, dependency update or bug fix must be written, tested and maintained by your team or a provider. You also lose the community answers and the compatibility work that follows the supported release, including support from newer Tutor versions and from plugins that move to Willow. Infrastructure cost continues while the platform stops changing with the ecosystem. Ask your team to list every plugin, fork and custom image that pins a Verawood-specific behavior, because that list is the real measure of how much staying put would cost you.

The move to Willow should be planned as a dated project with a named owner for each dependency. Start with the items that block the upgrade: replacing the MinIO plugin, moving edx-val storage to Django STORAGES, testing the extracted XBlocks and confirming RBAC course authoring behaves as your course teams expect. Set a content and customization freeze date so that course authors and developers stop changing code paths you are about to test. Record each decision in a short plan that names who tests what, which environment holds the staging copy, and who signs off the cutover. Confirm each dependency's Willow compatibility with its maintainer rather than assuming it from the Verawood release notes.

Choosing between an in-place Tutor upgrade and a rebuild depends on how far the running site has drifted from stock Tutor. An in-place upgrade suits a site that runs standard Tutor configuration, uses plugins with Willow-compatible releases and keeps its data in a predictable state. A rebuild suits a site with heavily modified forks, custom images that no longer match upstream, or settings edited by hand outside Tutor's configuration. Illustratively, a site with one maintained plugin and no forks may upgrade in place, while a site with three diverged forks may find a fresh Willow build with migrated data is easier to test. Ask for a written assessment and a test upgrade on a copy of production before committing to either path, and check the upgrade steps for your Tutor version in the Tutor documentation.

What to back up and inventory before the Willow work starts

Willow is listed for December 2026, and Verawood, the current named release, was published on 30 July 2026. Before any Willow change is tested, the team needs a restorable copy of every data store and a complete list of what runs on top of stock Open edX. These six items form the baseline that the upgrade is measured against.

LMS and Studio database backups

Take a full backup of both the LMS and Studio databases, then prove that it restores. Open edX development requires MySQL 8.0, so confirm the engine and version your production databases run before choosing a backup method. Record the schema state and the restore time, since any rollback plan depends on both. The database or platform team owns the backups, and the operations lead signs off on the restore test.

Media and object storage copies

Back up course assets, uploaded files and every object storage bucket that the LMS or Studio reads from. The Willow preparation work includes replacing the MinIO plugin and moving edx-val storage to Django STORAGES, so list each bucket, its access policy and the setting that points to it. Keep the copy separate from the storage being migrated. The infrastructure team owns the inventory, and the platform team confirms the settings.

Configuration and secrets export

Export the Tutor configuration, environment overrides and the secrets that feed them into a controlled location with access logged. Include the shared cache settings used by multi-node deployments, which must point to a backend such as Redis or Memcached. Keep the export outside the cluster being changed so that it survives a failed upgrade. The security or platform lead owns the export and approves who can read it.

Custom XBlocks, themes and frontend plugins

List every custom XBlock, theme and frontend plugin with its pinned version, source repository and maintainer. Verawood extracted some XBlocks from the core, so check each custom block for overlap with a packaged replacement before Willow testing begins. Record which frontend plugin slots each item uses, because slot changes can break a plugin without any error in the build. The course engineering or frontend lead owns this list, and every entry needs a named maintainer.

Tutor plugins and Docker images

Record every Tutor plugin with its version, and every Docker image built from your Tutor project, including base images and custom builds. Plugin versions decide whether a plugin supports the target release, so match each one to the Tutor version it targets. Keep image digests so that any build can be rebuilt or rolled back. The platform engineer owns this register, and it belongs in version control alongside the Tutor project.

Staging environment with production-scale data

Build a staging environment that holds a copy of production data at a comparable volume, with the same Tutor version, plugins and storage backend. Migration timing and failures depend on data size, so a small sample can hide problems that appear only in production. Limit access to the copy and mask personal data where your policy requires it. The QA or platform lead owns the environment, and the test plan names who approves the results.

Replacing the MinIO plugin and moving edx-val storage to Django STORAGES

Storage is the first item to check because it is the most likely to block a Willow upgrade from starting. Verawood sites that use the MinIO plugin to hold uploads, video assets, course exports and other files in object storage need a replacement path before Willow arrives in December 2026. Confirm in the Open edX release notes and the Tutor plugin documentation whether the MinIO plugin is still supported on Willow, and whether any Tutor-level settings change with it. Start by listing every place your deployment writes files: the LMS and Studio media stores, edx-val video storage, and any custom XBlock or plugin that saves to a bucket. This inventory turns a broad dependency into a finite list of settings to move.

The replacement has to do more than accept uploads. It must keep the object paths that existing course content and video records point to, serve public and private assets under the access rules your courses already use, and authenticate with credentials held in your secrets store and kept out of configuration files. Decide early whether the new backend will be another S3-compatible service in your infrastructure, such as a Ceph deployment or a MinIO instance operated separately, or a service from a different provider. Confirm with the replacement package's documentation that it supports the S3 API features your media pipeline uses, including object metadata and content types. Test those assumptions before any settings change reaches staging.

edx-val stores video metadata and encoded video files, and its file storage has to be configured through Django's STORAGES setting, the framework's mechanism for naming storage backends and their options. Moving edx-val onto STORAGES means replacing any older storage-class setting with a named backend entry, then confirming which entry edx-val reads for video files and which one handles default media. Confirm the exact setting names, backend class paths and any edx-val override against the Willow release notes and the Tutor documentation before you write them into your settings overrides. Keep the change in one reviewed commit so the MinIO-era and STORAGES-era configurations can be compared line by line.

Configuration changes are the smaller part of the work. Existing objects must be copied from the old bucket to the new backend with their keys unchanged, and each copy must be verified by object count, total size and sampled checksums. Measure volume before you plan the window, because the number of objects and bytes in each bucket determines how long the copy runs and how much bandwidth it uses. Video storage is often the largest share. Keep the old bucket readable until the new backend passes verification, then switch settings in a planned window. Ask the release notes and Tutor documentation whether the Willow upgrade rewrites any storage keys. If it does, that step belongs in the same plan.

Test in staging with a copy of production-shaped data, including a meaningful sample of existing videos. Upload a course image and a file asset in Studio, upload a video and confirm it processes and plays in the LMS, export a course and re-import it, and download a file as a learner would. Check that URLs and permissions behave the same for public and enrolled users, and that certificates and other generated files still render. Record each result against the inventory from the first step. Keep the MinIO plugin and the old bucket in place as the rollback path until production has run cleanly for a period your operations team agrees on. When you request a quote, ask for the inventory and settings work, the data copy and verification, and the staging test cycle as separate lines, with the responsible party named for each.

Testing extracted XBlocks, RBAC course authoring and the legacy catalog

Willow moves some blocks out of the core platform and into separately installed packages. Start by identifying which custom, bundled and third-party blocks your sites use, then confirm the exact list of moved blocks in the Willow release notes before you plan any installs.

  • Inventory every block in use: list custom blocks, bundled platform blocks and third-party blocks, with the number of courses that use each one.
  • Map each affected block: match your inventory against the release notes to find the replacement package and the version to pin.
  • Build a matching staging environment: install the replacement packages on a deployment built from the same Tutor configuration and plugins as production.
  • Test against real course content: import a copy of production courses into staging, then open each affected unit in Studio and the LMS.
  • Compare results: check rendering, grading, and saved learner responses for each problem type, and log every difference as a defect.

Before production is scheduled, confirm that every affected course renders and grades the same way in staging as it did before the change.

Open edX Willow upgrade sequence with rollback points

This sequence moves a Verawood site through a staged path to Willow, with a verified backup and a rollback point at every stage. Each step closes with a check that the team records before moving on. Production changes happen only after staging and the cutover rehearsal have passed.

  1. Freeze configuration and take a full backup

    Set a configuration freeze on the Verawood site so that the Tutor configuration, plugin list, custom image definitions and theme code are recorded in one version-controlled state. The platform lead takes a full backup of the databases, document stores, object storage, media and Tutor data volumes. Verification: a restore of that backup to an isolated host completes, and a test account can sign in to the LMS and Studio. Rollback point: this backup is the fallback for every later step, so it is kept until the cutover is accepted.

  2. Rebuild the staging copy from production

    Restore the latest production backup into a staging environment that matches production's network paths, identity provider settings and object storage layout, running the same Tutor version as production. Confirm the backup point so the copy is consistent with production at that moment. Verification: staging accepts a course edit in Studio, a learner enrollment and a sample graded submission, and row counts for key tables match the backup manifest. Rollback point: staging is disposable, so a failed rebuild has no production impact and is repeated from the same backup.

  3. Apply storage and plugin changes in staging

    Replace the MinIO plugin with the storage configuration your environment uses, and move edx-val storage onto Django STORAGES settings as the Willow changes require. Remove or port any plugin hooks that no longer match the release. Developers make these changes in the version-controlled configuration and plugin repository, so every change is reviewable. Verification: the edx-val video upload and playback path works in staging, and a test file round-trips through the configured storage backend. Rollback point: reverting the commit restores the prior storage configuration on the next staging deploy.

  4. Upgrade Tutor and images in staging

    Move Tutor to the version that targets Willow, rebuild custom images from the frozen configuration and redeploy to the staging host or cluster. Pin image tags so the build is reproducible. Before you start, confirm the Tutor version and release details in the Open edX release notes and the Tutor documentation, because Willow is listed for December 2026 and details may change. Verification: all services report healthy, database migrations complete without errors in the logs, and the Studio and LMS pages load. Rollback point: redeploy the Verawood images with their pinned tags, and restore the staging snapshot from the second step if a migration fails.

  5. Run smoke and authoring tests

    Run an automated smoke suite that covers sign-in through each configured identity provider, course enrollment, video playback, certificates and the learner dashboard. Then have course authors run Studio tests: create and edit a unit, use each extracted XBlock your courses depend on, and check course authoring roles for every team under role-based access control. Decide whether the legacy catalog is retired or kept for a stated purpose. Verification: a signed test checklist with pass results, and each failure logged against a named owner. Rollback point: a blocking failure returns the work to the storage or Tutor steps, and staging can be rebuilt from the backup without touching production.

  6. Rehearse the production cutover

    Write a cutover runbook that lists maintenance window actions in order: stop writes, take a final backup, deploy images, apply migrations, switch the load balancer or DNS record, and run the smoke checklist. Rehearse the full runbook in staging from a fresh copy of production, noting how long each action takes and comparing the total with the maintenance window your organization has agreed. Verification: the rehearsal ends with the same checklist passing, and every operator knows which command runs at each step. Rollback point: each action names its reversal, and the rollback decision time is fixed before the window opens.

  7. Confirm restore timing before go-live

    Measure how long a full restore takes from the production backup onto fresh infrastructure, using the same method your team would use under pressure. Compare the measured time with the maintenance window and with the rollback decision time in the runbook. Ask your backup tooling vendor or platform team to confirm restore throughput for your data volumes, since no single figure applies to every site. Verification: a measured restore time recorded in the change record, with a go or no-go decision signed by the platform owner. Rollback point: if the restore cannot finish inside the window, postpone the cutover and repeat the rehearsal.

How to roll back a failed Willow cutover

The rollback plan depends on three restore points that must exist and be verified before the Willow cutover starts. The first is the database snapshot taken immediately before any migration runs. For a Tutor-managed site, this covers the relational data behind the LMS and Studio, and it should be taken with writes frozen so that it is internally consistent. The second is the state of object storage, which holds course assets, uploads and, once the edx-val storage move to Django STORAGES is complete, the video files that the platform resolves through that configuration. Confirm whether your storage backend supports versioning or snapshots, because a database rollback that leaves storage pointing at newer objects will break course pages. The third is the previous Tutor configuration, plugin list and container images, kept in version control with the exact tags that ran in production.

Set the rollback criteria in writing before the window opens. Name the person who makes the decision, list the checks that must pass after migrations, and record the point after which rolling back costs more than fixing forward. Likely triggers include failed migrations, errors on a smoke test of course launch, broken video playback once the storage change is live, and failed sign-in through your identity provider. Note the time by which the decision must be made, because every hour of learner activity after cutover adds data that a rollback must reconcile. Assign one person to own the rollback runbook and rehearse its commands in the order they will run. Ask your internal team or implementation partner to confirm how long a restore takes at your data volume, since that depends on your own infrastructure.

An untested restore gives no assurance. Before cutover, restore the pre-migration snapshot, the storage state and the saved Tutor configuration into an isolated copy of the environment, using the same images and plugin versions that production runs. Then check what learners and course teams notice first: sign-in, course outline and unit rendering, a sample of graded assessments, discussion threads, Studio access for an author, and playback for a sample of video assets. Confirm that the database and storage come from the same point in time by comparing a few known records, such as the most recent enrollment and the most recent asset upload. Repeat the same checks after any restore in production, and record the results so the team can show what was verified and when.

Any data written between the snapshot and the rollback must be reconciled before users return. This includes new enrollments, certificate issuance, grades, forum posts, Studio edits, uploads and analytics events. Start by listing what the platform wrote during the window, using database transaction logs if you keep them and application logs otherwise. Then decide, for each data type, whether to replay the records into the restored system, ask learners or authors to resubmit, or accept the loss and tell stakeholders. Grades and certificates usually need the most care because they affect credentials. If you run Open edX Aspects, analytics pipelines may already hold events that the restored database no longer contains, so plan how those will be corrected. Document each decision so the change record is complete.

What drives the cost and length of an Open edX Willow upgrade

This table lists the factors that move a Verawood to Willow preparation project up or down in scope. Read the effect column to see which direction each factor pushes the work, and use the confirm column to gather facts about your own environment before asking for a fixed-scope quote. Custom code, data volume and the state of your test environment usually have the largest effect.

DriverEffect on effortWhat to confirm
Custom XBlocks and pluginsEach custom XBlock or plugin that touches storage, the MinIO plugin or extracted XBlocks adds review, rework and tests.Which XBlocks and plugins exist, who maintains them, and which depend on the changing storage and extracted code.
Course and media data sizeLarger course and media stores lengthen backup, storage migration rehearsals and checks of the edx-val move to Django STORAGES.Course count, video and file volume, and where course media is stored today.
Number of sites and languagesEach LMS, Studio instance and live language adds a verification pass across content, roles and catalog pages.How many instances run, which languages are live, and whether instances share a database or storage bucket.
Reliance on the legacy catalogSites that still serve the legacy catalog need data mapping and a replace or retire decision before the upgrade.Which catalog features learners and partners use, and whether a replacement has been agreed.
RBAC course authoringTeams whose course-author roles depend on current permissions need role mapping and retesting in Studio.Which course-author roles exist, who assigns them, and which teams author courses in production.
State of the test environmentA test site that lags production, lacks a current data copy or runs different custom images adds setup work and can hide defects.Whether staging matches production versions, data and images, and how quickly it can be rebuilt from scratch.
Who owns sign-offUnnamed or slow approvers extend test cycles and push back the cut-over window.Named business and technical approvers, written acceptance criteria and the change freeze window.

Questions buyers ask before hiring help for the Willow upgrade

How much does an Open edX Willow upgrade cost?

DeployOpen does not publish a price list, so a quote follows the written scope. The cost comes from several components: inventory of your customizations, a staging environment that matches production, work on plugins and XBlocks, data migration and test cycles, cutover and rollback planning, and handover documentation. Most of this is one-time project work. Recurring costs are your hosting and any ongoing support retainer. To compare quotes, ask each one to list components separately, state which environments are included, say who runs the test cycles, and explain how a blocker found late in testing would be handled and priced.

How long does a Willow upgrade take for a site like ours?

Duration depends on the drivers, not on a fixed number. The biggest ones are how much your site departs from the stock platform, how many plugins and custom XBlocks need replacing, the size of your data, the number of integrations to retest, and whether a staging environment is ready on day one. Willow is listed for December 2026, so a planning window is set by that date. Illustrative example: a site with a stock configuration and one working staging copy will move faster than a site running a fork with several custom components. Ask for a timeline built on milestones, with the dependencies on your side marked.

What does our organization need to provide for the upgrade?

The work needs decisions and access from your side, not only infrastructure. Name one owner for product decisions, one technical owner for the deployment, and one person who can sign off on data protection or compliance impacts. Provide access to the cloud accounts, data centers or networks where the site runs, the Tutor configuration and code repositories, and a staging environment you control. Supply test users with the roles your courses depend on, sample courses, and the list of integrations to check. Agree in advance who signs off each test phase and cutover, and how many hours per week those people can give.

Can our own team upgrade Open edX to Willow without a partner?

Yes, a team with the right skills can do it alone, using Tutor documentation and disciplined staging work. The team needs engineers who can read Django and Python changes, experience with Tutor plugins and configuration, a staging copy refreshed from production, a written test plan, and a tested rollback path. The difficult parts are usually custom XBlocks, forks, and third-party sign-in. Read the Willow release notes and Tutor documentation before estimating your own effort, and be honest about whether the team has time for test cycles alongside normal operations.

Can we skip Willow and stay on Verawood?

Open edX states that the latest named release is the only supported release and that it cannot support more than one release at a time. Verawood was published on 30 July 2026, and Willow is listed for December 2026, so a site that stays on Verawood will run an unsupported release once Willow ships. That means your team carries the risk of fixes and security updates on its own. Confirm the current support statement with the Open edX community, and record a formal decision with your risk owner if you choose to stay. Xylon is listed for June 2027, so the same question returns in the next cycle.

Which parts of a Verawood site usually break during the move to Willow?

Focus testing on the areas already flagged for Willow: replacing the MinIO plugin, moving edx-val storage to Django STORAGES, testing the extracted XBlocks separately, checking RBAC course authoring permissions, and retiring the legacy catalog. For each one, record the expected behavior before the change, run the same checks after it, and compare logs for errors. Add smoke tests for enrollment, course publishing, certificate issue, sign-in through each identity provider, and any integration that writes data. A failure in one of these areas is easier to isolate when each change is tested alone.

How do we know a staging environment is ready for upgrade testing?

A staging environment is ready when it matches production closely enough that test results mean something. Check that the Open edX, Tutor and plugin versions match what you plan to deploy, that the object storage, email, identity providers and caches are configured the same way, and that the data copy is refreshed from production under your data handling rules. Personal data in staging should be masked or limited to what the test needs. Confirm that the deployment pipeline can rebuild the environment from code, and that someone other than the builder can run the test plan.

How DeployOpen works on this

DeployOpen treats the Willow upgrade as a planned change to your own Tutor-based site, starting from a written scope that names each item to check before December 2026. We build and test changes in a copy of your environment, document what changed, and hand the site back with runbooks your team can follow. Engagements are fixed-scope, and ongoing support is available as a retainer.

How we scope

  • The written scope lists each Willow change for your site, including the MinIO plugin and edx-val storage.
  • Engagements are fixed-scope, so deliverables and timelines are agreed in writing before work starts.
  • Scope also records which custom themes, plugins and forks must be tested against Verawood and Willow.

How we build

  • Build work starts from your current Verawood configuration, with changes made in Tutor-based code you can review.
  • Replacement storage for edx-val and the MinIO plugin is tested against your object storage before cutover.
  • Extracted XBlocks and RBAC course authoring are exercised with test courses modeled on your own content.

How we hand over

  • Handover includes a written record of every change, the test results and the open items your team owns.
  • Runbooks cover the Tutor commands, configuration and rollback steps your operators need after cutover.
  • Legacy catalog retirement is documented with the data checks and sign-off steps your compliance owner requests.

How we support

  • Ongoing support, upgrades and testing are available as a retainer after the Willow cutover.
  • Confirm with DeployOpen which Willow release notes items fall inside the scoped work and which need separate quotes.
  • Ask for the support boundary in writing, including who applies Willow point releases and who reviews the change.

Sources and further reading

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.