Back to homepage

Moodle™ Upgrade Checklist

The step-by-step checklist we use when upgrading client platforms. Work through it top to bottom for a predictable, low-risk upgrade.

0. Security & end-of-life check

  • Check whether your Moodle version is still in support or already end-of-life

    Moodle 4.4 reached end-of-life in December 2025; 4.5 is the current LTS. An end-of-life version receives no security patches at all.

  • Confirm your PHP version is still receiving security updates

    Running Moodle on an end-of-life PHP (e.g. 8.1 after its EOL) means the whole stack is exposed, even if Moodle itself is current.

  • Cross-check your version against the published Moodle security advisories

    The 2025 advisories include remote-code-execution and SQL-injection fixes. If you have not patched since, assume you are exposed.

  • Audit installed plugins for ones that are abandoned or no longer maintained

    An unmaintained plugin is a standing vulnerability and often the single blocker that stops you upgrading at all.

  • Decide your target version: latest LTS for stability, or latest release for newest features

    LTS (4.5) gets security fixes the longest — the safest target for most organisations that upgrade infrequently.

1. Preparation

  • Determine your current Moodle version and the supported upgrade path

    Moodle only supports upgrading from specific versions (e.g. to 4.5 you must run 4.1 or later). Check the release notes for your target version.

  • Verify server requirements: PHP version, database version, and required PHP extensions

    Each major release raises minimums. Admin → Server → Environment runs this check for the new version automatically.

  • Make a complete inventory of installed plugins and their compatibility with the target version

    Uninstall plugins you no longer use before upgrading — every plugin is a potential blocker.

  • Identify custom code: theme modifications, core hacks, and bespoke plugins

    Core modifications are the most common cause of failed upgrades. Diff your codebase against a clean Moodle release to find them.

  • Plan a full backup strategy: database, moodledata, and code

    Test that the backup can actually be restored — an untested backup is not a backup.

  • Set up a staging environment that mirrors production

2. Testing on staging

  • Run the full upgrade on staging first and time how long it takes

    The measured duration determines your production maintenance window.

  • Smoke-test core flows: login, course access, assignment submission, grading, backups

  • Verify every third-party plugin works, or has an updated compatible release installed

  • Check the theme on desktop and mobile, including custom layouts and branding

  • Test all integrations: SSO/LDAP/OAuth, LTI tools, web services, and external enrolment

    Authentication breakage locks out every user at once — test with real accounts from each auth method.

  • Confirm scheduled tasks and cron run cleanly after the upgrade

  • Compare page-load performance before and after on representative courses

3. Go-live

  • Announce the maintenance window to users well in advance

    Pick a low-usage moment — your Moodle analytics show exactly when that is.

  • Enable maintenance mode and take a fresh, final backup

  • Run the upgrade, then walk through the same smoke tests as on staging

  • Have a tested rollback plan ready with a clear go/no-go decision point

4. After the upgrade

  • Monitor error logs and support tickets closely for the first week

  • Review the deprecation log and plan fixes for custom code before the next upgrade

    Fixing deprecations now is what makes the next upgrade cheap.

  • Inform users about relevant new features so the upgrade delivers visible value

  • Document versions, settings, and lessons learned for the next cycle

Rather have us do the upgrade?

Free 15-minute consult and a fixed quote up front. No surprises.

Let's Talk

Not sure where your Moodle™ environment stands? Request the free Moodle Quickscan