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.2 without breaking database schemas, gradebooks, and PHP 8.2+ 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.2)
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 latest Moodle 5.2 release on hardened Linux VPS / AWS Graviton / GCP Cloud SQL. Ensures full compliance with strict PHP 8.2+ floors and modern Boost theme.
- Target PHP: PHP 8.2+ / PHP 8.3
- 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.2 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.2 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.