Inventory the installation that actually runs
Record the installed Joomla, PHP and database versions, then list components, plugins, modules, languages and the active template. For each extension, identify its purpose, vendor, version, update access and business owner. Include disabled extensions and custom changes; something unused today may still contain old data or influence an update. Keep the inventory tied to the actual production installation rather than an old handover document. Unknown ownership is a task to resolve before scheduling the change.
Capture hidden dependencies
List scheduled jobs, email delivery, login providers, forms, search, commerce connections and custom template overrides. Record which customer task would fail if each stopped working.
Choose a supported path for every dependency
Check the migration guidance for the exact starting and target versions, plus each extension vendor’s compatibility information. Core readiness does not establish that the complete site is ready. Joomla’s compatibility policy has defined limits, and its policy does not promise unchanged rendered markup. A template override therefore deserves a visual and functional check even when the update completes. Treat uncertain vendor support as an unresolved dependency, with a choice to replace, revise or retire the affected feature.
Plan the upgrade as a project
Use the dependency inventory to separate core upgrade work from extension replacement, template changes and content migration.
Explore Plan the upgrade as a projectRehearse on an isolated and representative copy
Create a protected copy with the required files and database, then reproduce the intended hosting configuration closely enough to test the upgrade. Keep private records protected and disable real outbound actions before running journeys. A test form must not email customers; a commerce check must not use live charging credentials. Run the selected upgrade sequence and record warnings, repairs and duration. Keep those instructions reproducible so the final release does not depend on remembering which manual fix worked during rehearsal.
Worked decision: an unsupported form extension
Consider a site whose core has a supported upgrade route but whose request form depends on an extension with no confirmed target compatibility. Simply removing the extension could lose stored submissions and break a business process. First identify the fields, recipients, stored records and downstream actions. Then assess a supported replacement and migrate only what is required. Test field validation, delivery and staff access independently. This makes the replacement an explicit part of the release scope rather than an unpleasant discovery after updating core.
Verify journeys, permissions and destinations
Review more than the homepage. Check article editing, navigation, search, account access, forms and any commercial integration. Compare important old URLs with their intended destinations and inspect the template at narrow and wide widths. Check who can see restricted content and whether a logged-out visitor receives the correct view. Have the content owner perform ordinary administration tasks; a technically successful upgrade can still leave the team unable to publish.
Protect search continuity
If extension or routing changes alter public URLs, prepare and test a URL map instead of accepting new addresses accidentally.
Explore Protect search continuityKeep performance separate
If the site is slow after the upgrade, measure its specific bottleneck before adding unrelated optimization changes.
Explore Keep performance separateRestore the prior state instead of improvising a downgrade
Joomla’s policy does not support downgrading after an upgrade; it advises restoring a backup made before the change. Verify that the backup contains the matching database and files and that someone can restore them in the target environment. Agree the editing freeze or final synchronization, public verification steps and rollback decision owner. Decide how to preserve records created after cutover if rollback becomes necessary. Close the upgrade only when the site’s users and operators can complete the agreed journeys and the final dependency inventory is recorded.