Moodle 3.5 → 5.x Upgrade Path: Multi-Hop Risk Controls
Moodle 3.5 is long end-of-life. You cannot jump directly from 3.5 to 5.3 without breaking database schemas, gradebooks, and PHP 8.3 runtime dependencies. Here is our exact technical runbook, staging protocol, and data checksum verification method.
The 4-Step Version Ladder (3.5 → 4.1 → 4.5 → 5.3)
Direct version jumping causes corrupted database tables and fatal PHP crashes. We enforce a strictly audited 4-step migration sequence.
Stabilizes legacy PHP 7.2/7.4 database schemas, resolves legacy UTF-8 MB4 charset conversions, and validates `mdl_quiz_slots` and `mdl_grade_items` structure before 4.x.
- Target PHP: PHP 7.4.33
- Database Floor: MariaDB 10.2+ / MySQL 5.7+
- Focus: Legacy Atto editor & `auth_db` audit
Executes the major Moodle 4.x Question Bank DB refactoring (moving from course-level to category/system context question storage) and upgrades PHP stack to 8.1.
- Target PHP: PHP 8.1.28
- Database Floor: MariaDB 10.4+ / MySQL 8.0
- Focus: Question bank context migration & Quiz attempt locks
Upgrades system to Moodle 4.5 LTS, transitions editor from Atto to TinyMCE 6, refactors custom PHP 8.2 code, and deprecates unsupported legacy blocks.
- Target PHP: PHP 8.2.18 / 8.3
- Database Floor: MariaDB 10.6+ / PostgreSQL 14+
- Focus: TinyMCE migration & PHP 8.2 deprecation warnings
Deploys the Moodle 5.3 LTS release on hardened Linux VPS / AWS Graviton / GCP Cloud SQL. Ensures full compliance with strict PHP 8.3+ floors and modern Boost theme.
- Target PHP: PHP 8.3 / 8.4
- Database Floor: MariaDB 10.11+ / MySQL 8.0.30+
- Focus: Full site verification, cron OPcache optimization & SLA cutover
Staging, Backups & Rollback SLA
We never perform major version upgrades directly on production servers. Our staging-first protocol guarantees zero student downtime and zero risk.
1. Isolated Staging Clone
We clone your complete production database, `moodledata` filedir, and custom code onto a private staging server. You receive a private URL to test courses, grades, and quizzes before live cutover.
2. Triple-Lock Backups
Before cutover, we create complete compressed backups: SQL database dump + full `moodledata` directory + PHP code directory. Backups are stored in encrypted off-site cloud storage.
3. Tested Rollback SLA
Every upgrade runbook includes a pre-tested rollback procedure. RTO (Recovery Time Objective) target: < 2 hours. RPO (Recovery Point Objective) target: 0 data loss.
Data Integrity & Checksum Verification Protocol
To ensure zero student grade loss, quiz attempt corruption, or missing course completions, we run automated SQL row-count & hash checksum comparison scripts before and after each hop:
| Moodle Core Table | Target Verification Point | Verification Method | Acceptance Criteria |
|---|---|---|---|
| mdl_grade_grades | Student Final & Raw Grades | MD5 Checksum of `finalgrade` + row count | 100% Exact Match |
| mdl_quiz_attempts | Finished & In-Progress Quiz Attempts | Row count by state + user ID mapping | 0 Rows Discarded |
| mdl_course_completions | Historical Course Completion Certificates | Timestamp & completion status audit | 100% Exact Match |
| mdl_user_enrolments | Active & Suspended Student Roles | Role assignment context audit | 100% Role Retention |
Plugin Compatibility Audit & Remediation Matrix
In a 3.5 → 5.x upgrade, many third-party plugins are end-of-life or lack PHP 8.2 support. We audit every plugin before touch and provide clear action paths.
| Plugin Category | Typical 3.5 Setup | Moodle 5.3 Status | LMSOps Remediation Action |
|---|---|---|---|
| Text Editors | Atto HTML Editor | Deprecated / Removed | Migrate content filters & buttons to TinyMCE 6 core |
| Auth Plugins | Legacy `auth_db` / MNet | Requires Refactoring | Refactor to modern OAuth2, SAML2, or modern Auth API |
| Activity Modules | Old Attendance / Certificate / H5P | Upgrade Available | Upgrade to official Moodle 5.3 compatible versions / Core H5P |
| Site Themes | Legacy Essential / More / Adaptable | Incompatible | Rebuild on modern Boost / Moove / Edwiser PHP 8.2 architecture |
| Custom Local Code | Bespoke local/ block plugins | PHP 8.2 Warnings | Refactor PHP 8.2 dynamic property & function signature deprecations |
Ready to Upgrade Your Moodle Site Safely?
Send us your current Moodle version, plugin list, and server environment. You'll receive a written version ladder, risk assessment, and transparent fixed quote within 1 business day.