Upgrading Joomla from 1.5 to 2.5

Joomla 2.5 has been out for a while and I’ve been waiting for it to stabilise. I’ve been putting it off for some time, but with Joomla 1.5 support being withdrawn and many of the extensions becoming obsolete, it looks like it’s going to be time to upgrade the ORC website. I’m planning to use the Joomla jUpgrade extension to do this but I reckon it will require some tweaking afterwards!

ORC has around 200 members, as I’ve taken the steps of removing any accounts that haven’t logged in for over a year. This should reduce the number of profiles to copy over that may have issues. For obvious reasons, I want to keep the user data, the forum posts, events, downloads, and functionality.

Current Joomla Configuration

The site currently runs Joomla 1.5 on PHP 5 and MySQL. It  also links to a Mediawiki 1.18 install. The template is JS Optimus Free (customised) by JoomlaShack, that will likely need some alteration again.

Modules installed

  • Admin Tasks (mod_comprofilermoderator – sys admins/mods only)
  • ORC Info (mod_cb_login)
  • Shout Box (Batjo’s mod_shoutbox)
  • Latest Posts (mod_kunenalatest)
  • Main Menu (mod_MainMenu)
  • ORC Calendar (mod_eventlistcal15q which won’t exist any more)
  • Upcoming Events (mod_eventlist)
  • Who’s Online (mod_whosonline)


I’ll have to reinstall any component marked with an asterisk (*), as a version for Joomla! 2.5 exists. Those marked in bold shouldn’t need migrated as they are supposed to be migrated by jUpgrade (however I suspect they will need checked or reinstalled).

  • Akeeba Admintools*
  • Akeeba Backup*
  • Community Builder – it does work but may need reinstalled.
  • Eventlist*
  • jUpgrade
  • Kunena – doesn’t migrate rankings cleanly and you may need to reset category permissions.
  • Newsfeeds
  • Remository*
  • UddeIM*
  • Weblinks
  • XMap*


  • CBCaptcha for Community Builder
  • User – Mediawiki login (Harold Prins‘ mediawiki plugin)


Right, first I put the site into maintenance mode. I’ve also done some basic housekeeping, cleaning out old messages, checking the database, and making sure that everything is as up to date as I can make it. I’ve also emptied the caches and trash for the forum, menus, and modules. I’ve made a full backup of both the database and file structure (as well as using Akeeba Backup to create a JPA download), and also moved the folder structure to a test folder. The phpMyAdmin Synchronize facility works well for creating a quick and easy backup of the databases.

I’ve created a place-holder index.htm  for the site which says it is undergoing an upgrade – for some reason, the default option for putting a site off-line in Joomla still allows logins (which is why I’ve moved folder to a test environment as well). It is pretty easy to do –  create a blank index.htm folder then create the following text within it:

<head>Site Offline<head>
<p>It is being upgraded.</p></body>

That at least lets people know what going on.

I have also created a test sub-domain and database (which uses the same login criteria). So the “production” site is off-line, and the test site is now the one I’ll be working upon.

Phase 1: Using jUpgrade

I’ve copied the necessary folder structure to the test site, but haven’t made any modifications yet to the config files or database. If you’ve used Akeeba Admin Tools to create a customised htaccess file, rename .htaccess in the root of your website folder to .htaccess.live (or similar). If you don’t, jUpgrade will stall.

Change paths to test server.

Make sure configuration.php is writeable (CHMOD 644) and open it in a  text editor. There are two variables you need to change for the full path to the test folder

var $log_path = ‘/path to test/logs’;
var $tmp_path = ‘/path to test/tmp’;

Note that we’ll also need to change the path to the database at some point but leave it as it is right now. We’ll come back to it later. Righto

“Whichever way you look at it, it’s brown trousers time” – Holly, Red Dwarf

Performing the jUpgrade

Backup your site AGAIN just to be safe. If you haven’t already install the jUpgrade module from RedComponent. Note this requires registration to download so create a throw-away password rather than you own sysadmin one (but you knew that already, right?) .

The defaults are usually OK, but you can check the parameters to see what you can do with them. I’m leaving them to the defaults as I’m not expecting problems, but three are worth looking at ( you might also like to make sure that the template positions are set to be saved as well!):

  • Target Directory is usually the path to your test server/jupgrade
  • Prefix for old database – by default is “jos_”. If you’ve changed this (which is a smart move – it is a security risk), make sure the correct prefix is set here.
  • Prefix for new database – by default is “j25_”. We’ll be changing this later on so you can leave it as is.

First of all make sure you’re connected to the internet. Once you’ve saved these parameters, run the jUpgrade. It took a few minutes, but downloaded Joomla 2.5 and installed it to the jupgrade folder. If successful you should see

Joomla 2.5 Upgrade Finished!

You can check your new site here:
Site and Administrator.

If the upgrade fails for any reason, you can run a clean update by switching on the “Delete Previous Migration” parameter and trying again. Remember to rename the .htaccess file and reset the permissions on configuration.php.

Phase 2: Moving to the new site

Righto. We’ve now got a working Joomla 2.5 installation, in a folder called jupgrade. The database has also migrated to a new set of j25_ prefix tables. This isn’t ideal for me, so I’m moving them to a new folder at the root of the web-server and will also move the database as well. I’ve renamed the older folder and migration on the test server. I’ll have to clean these up later, but they are there if I need them.

I’ve opened the configuration.php site and altered the following variables:

var $log_path = ‘/path to new test/logs’;
var $tmp_path = ‘/path to new test/tmp’;

As I’m also using a new database I’ll also need to redo the following paths:

public $user = ‘database username‘;
public $password = ‘new db password‘;
public $db = ‘new db‘;

Phase 3: Tweaking the Joomla install

Now the screaming starts! I’m now ready to go in as the administrator, as there’s a few steps I need to do there.

Global Configuration – Site

  • Site Offline – Yes
  • Offline Message – “Use Site Language Default Message” selected
  • Use URL rewriting set to “Yes” (rename htaccess.txt. to .htaccess afterwards)
  • Include Site Name in Page Titles set to “After”

Global Configuration – System

Nothing needs tweaked here by me.

Global Configuration – System

  • Gzip Page Compression set to “Yes”
  • Server Time Zone set to “London”

Run Joomla! Update from the control panel and make sure it has been applied. Right! So far, so good…

Phase 4: Templating, Modules, & Menus

This could be a bit of a sod. I have a 2.5 version of JS Optimus Free, but can’t install it as the old template is still there 🙁 . I’ve made a backup and gone into website path/templates and deleted the old template from there. This has allowed me to install the new template, but I now have two styles for js_optimus_free within the  Template Manager styles. Neither are ideal as I want a new setting to use a fluid look of 90%, so I’ve had to tweak the template a little, as well as copying the logo and modifying the style sheet. I’ve had to reassign the menu positions again in the template, but that’s easy to sort out.

Phase 5: Modules and Plugins


The ranks didn’t copy across so I’ve had to truncate the j25_kunena tables and import them in using a SQL dump from the original database.

TRUNCATE `j25_kunena_announcement`;
TRUNCATE `j25_kunena_attachments`;
TRUNCATE `j25_kunena_categories`;
TRUNCATE `j25_kunena_config`;
TRUNCATE `j25_kunena_config_backup`;
TRUNCATE `j25_kunena_favorites`;
TRUNCATE `j25_kunena_groups`;
TRUNCATE `j25_kunena_messages`;
TRUNCATE `j25_kunena_messages_text`;
TRUNCATE `j25_kunena_moderation`;
TRUNCATE `j25_kunena_polls`;
TRUNCATE `j25_kunena_polls_options`;
TRUNCATE `j25_kunena_polls_users`;
TRUNCATE `j25_kunena_ranks`;
TRUNCATE `j25_kunena_sessions`;
TRUNCATE `j25_kunena_smileys`;
TRUNCATE `j25_kunena_subscriptions`;
TRUNCATE `j25_kunena_subscriptions_categories`;
TRUNCATE `j25_kunena_thankyou`;
TRUNCATE `j25_kunena_users`;
TRUNCATE `j25_kunena_users_banned`;
TRUNCATE `j25_kunena_version`;
TRUNCATE `j25_kunena_whoisonline`;

I’ve installed the plugin/modules for Kunena Latest (and enabled a Latest Posts module) and Kunena Statistics as well. I also had to reset the permissions on the forums, so jUpgrade doesn’t seem to work properly with Kunena.

Community Builder

CBseems to have worked, but I’ve taken the opportunity to reinstall it as it doesn’t seem quite right (the icons didn’t show correctly).


I installed the new version and enabled the Xmap – Content, Xmap – Kunena and Xmap – Weblinks Plugins. I had to create a new sitemap and also recreate the Menu link.


I migrated the data from the old database creating the j25_eventlist_xxxx database entries, then installed the component. Aside from recreating the Menu link and also the uploads directories in the Remository config, all migrated OK.


I reinstalled this – I’ll need to redo the CSS from a backup.


I migrated the data from the old database creating the j25_eventlist_xxxx database entries, then installed the component. I had to set the date manually to use a UK date format in the Eventlist Basic settings (Format date set to %A %d-%b-%Y). I also had to recreate the ORC Events module.


This is the one module that had me worried as it had many of the PMs for the site members. However, I migrated the xxxx_uddeim data across to j25_uddeim_xxxx tables, then I reinstalled the components, and rebuilt the Menu item.


Although the Mediaiwki bridge works, there appears to be an undocumented bug with Joomla! 2.5 within the AuthJoomla section of the Local Settings file for Mediawiki. The index.php?option=com_user link will generate a 404 error as Joomla 2.5 uses com_users (see below). I’ve changed them as follows:

$wgAuthJoomla_LoginURL = $wgAuthJoomla_domain .'index.php?option=com_users&view=login&return=' . $wgAuthJoomla_LoginLink;
$wgAuthJoomla_LogoutURL = $wgAuthJoomla_domain . 'index.php?option=com_users&task=logout&return=' . $wgAuthJoomla_LogoutLink;

Web Links

The Web Links menu needed rebuilt and there are no Categories. A bit time-consuming but not too much of a hassle.


I definitely don’t want to do this again. jUpgrade works to a certain extent, but isn’t quite the solution to move the Kunena Forum, nor did it move the categories successfully – as it’s the only product out there that’s free to use, I guess there’s nothing else to migrate users. Upgrading to 2.5 took me over a day, with fairly intensive work required. If I were to do a similar upgrade again, I’d likely un-install the Kunena Forum software and reinstall it after I’d run jUpgrade.

“No plan survives contact with the enemy” – Helmuth von Moltke the Elder (trans.)

Also it’s taught me that no matter how prepared you are, something always goes wrong. Despite testing everything out upon a new test site initially, I still needed to rely on backups. Also, although I’m not much of coder I’ve learnt quite a bit about the Joomla backend and MySQL as a result!

Published by Bill Heron

Wannabe game designer and would-be author. I've been playing RPGs for over 25 years and have recently started creating my own RPG called Mandragora: Ashes of Freedom. I also run a number of RPGs: Cthulhutech, Call of Cthulhu, WFRP, and D&D. I'm active in the Edinburgh RPG community at http://orcedinburgh.co.uk and regularly play RPGs.