Live This site runs Joomla 6.1.2
JoomClub

News, security and craft for the Joomla ecosystem

Migration & Upgrades

Moving a Legacy Joomla Site to Joomla 6

A site on Joomla 1.5, 2.5 or 3 cannot be updated to Joomla 6 by pressing a button. The data moves, the extensions mostly do not, and the work is a rebuild with content transfer rather than an upgrade. Knowing that up front changes how you…

The upgrade path, honestly

Joomla's in-place updater carries a site along a supported chain — within a series, and from the previous major version when a compatible route exists. It does not reach back to 1.5 or 2.5. Those sites are migrated, meaning: install Joomla 6 fresh, move the content into it, and rebuild everything else.

That sounds worse than it is. Articles, categories, users and menu structure transfer with reasonable reliability. The cost is elsewhere.

The extensions decide everything

Before estimating anything, list every installed extension and find out, for each one, whether a Joomla 6 version exists. Then sort the list into four groups:

  • Has a current release — reinstall and reconfigure. Straightforward.
  • Replaced by core. A decade of core development absorbed a lot: custom fields, redirect management, multilingual associations, structured data output, workflow. Some sites lose half their extension list here.
  • Has a modern equivalent from someone else — a migration of that data, plus new URLs.
  • Abandoned, no equivalent. This is where projects stall. Either the functionality is rebuilt, or dropped, and both are decisions for whoever owns the site, not for you.

Do this list first. It determines whether the project is a fortnight or a quarter, and it is the only part that cannot be discovered later without wrecking the schedule.

Custom code will not run

Anything written for Joomla 2.5 or 3 needs work beyond a version bump. JFactory, JHtml, JRoute and their relatives were replaced by namespaced classes. jimport() is gone. Models, views and controllers moved into namespaced structures. PHP itself has moved several major versions, and code from that era will hit removals and stricter type handling.

Template overrides deserve particular attention: they are copies of core layouts frozen at the version they were taken from. A ten-year-old override will produce markup missing everything the core layout gained since.

Doing the move

The shape that works:

  1. Stand up Joomla 6 alongside the live site — a subdomain or a local environment. Never in place.
  2. Rebuild the structure: categories, menus, access levels, the settings that matter.
  3. Transfer content. Migration extensions exist for the common paths; for anything unusual, a script reading the old database and writing through Joomla's own models is more predictable than SQL that bypasses them.
  4. Rebuild the template against current markup rather than porting the old one.
  5. Map the URLs, and check the map against real traffic.
  6. Switch, with the redirects live from the first minute.

URLs are the part that costs money

Whatever else changes, the addresses in search results and other people's links are an asset. Export the current URL list — from the sitemap, from analytics, from server logs — before starting, and treat the redirect map as a deliverable rather than a cleanup task.

Our piece on mapping old query-string URLs covers the mechanics, including the case where the old site had no readable URLs at all.

Is the site worth migrating?

A question worth asking before the work starts. A site running on Joomla 1.5 has been unsupported for many years: its content may be stale, its structure may reflect a business that has changed, and its extension list may describe features nobody uses.

Sometimes the honest answer is that the content is worth moving and the site is not. That is a cheaper project than a faithful reproduction, and usually a better one.