Joomla 2.5 to 3.x Step by Step Migration


The migration from Joomla 2.5 to 3.x is considered a mini-migration. This is because the Joomla core extensions will upgrade with a “one-click” upgrade via the Joomla! Update component in the backend administrator side of Joomla. Many third-party extensions are a one-click upgrade too. Some are not. You need to look at each one and determine what path the extension needs to follow to get from 2.5 to 3.x. If you haven't already, you might be interested in reading the Self Assessment and Planning for 2.5 to 3.x Migration prior to following the steps below.

Joomla Core Extensions:

  • Categories
  • Articles
  • Menus
  • Modules (core modules - not third-party)
  • Banners
  • Contacts
  • Messaging
  • Newsfeeds
  • Redirect
  • Search
  • Smart Search
  • Weblinks

For very large or complex 2.5 to 3.x migrations

The one-click update will be fine and work well for many. For some larger, more complex sites, the one-click update may not be the best route. For large or very complex sites, you may want to follow instructions for a regular migration and bypass the one-click update functionality. To do this, follow the same instructions for planning 1.5 to 3.x and migrating from Joomla 1.5 to 3.x, simply substitute 2.5 for 1.5 while reading.

Step by Step

Set up a Development Location

  1. Take a backup of your live 2.5 site. You can use a suggested tool (see bottom of page) or you can do this manually
  2. Make sure your environment meets the technical requirements for Joomla 3 before proceeding
  3. Create a new database and new user to restore your 2.5 site to.
  4. Create a testing site or build area to work in and restore the back up copy of your 2.5 site in one of the following places:
  5. In your test location, update your Joomla 2.5 instance to the latest maintenance release (currently 2.5.28).
  6. Make sure you have the latest database schema updated to latests version 2.5.28 by going to: Extension Manager → Database tab. If your schema is not up to date like in the following image, click the Fix button:
  7. Test.
  8. Backup again.

Assess Each Extension

  1. You are going to be looking at every single extension installed on your site. You will be determining if they need to update to the latest version or be uninstalled. In Joomla 2.5.28 you can go to Extension Manager  Update tab and click Find Updates which will add a tooltip in the Manage tab giving some compatibility information from the backend. This functionality only supports extensions that update via the Extension Manager Update tab. If you have extensions installed that do not use the Joomla extension update then they need to be assessed manually as detailed below. The same goes for those extensions that have a tooltip. You will still need to check the type of package and migration path with the extension developer to verify how to upgrade/migrate.
  2. Go to Extension Manager  Manage tab
  3. Click the drop-down for Type.
  4. Select Package from the drop-down.
    Selecting Package first is recommended because if there is something you need to uninstall in a package, it will automatically uninstall the associated Modules, Plugins, or anything else in the package at one time.
  5. Uninstall any Packages that are no longer needed or will not be migrating to Joomla 3.
  6. Repeat this process of going through the Manage tab for all Types in the drop-down: Component, File, Language, Library, Module, Plugin, and Template. If the Author states Joomla! Project, then leave those extensions alone. Smart Search is a Joomla core supported extension even though the Author fields are blank. For all others, make sure that you uninstall those not in use or not compatible with Joomla 3.x.
    NOTE! You will not be able to uninstall a Template that is set as default. You will need to select a Core supported template like Beez or Atomic and then uninstall the template if you need to do so.
  7. Make a note of any versions of Packages and Components currently running that you will be keeping on your site. You can use the Third-Party Extension Inventory Worksheet or just copy/paste them into a document for reference.
  8. Update all extensions to the latest versions.
  9. Before and as you update, note if the extensions have both 2.5 & 3.x versions in the same package. If so, they will be fine to "one-click update." If not, and 2.5 and 3.x have different packages, you need to look at them case by case. They will normally fall into one of the following scenarios:
    • The extension has separate packages but upon upgrading to 3.x, they automatically detect this and still work. Make sure the developer confirms this.
    • The extension has separate packages that need to be uninstalled in 2.5 and then installed with the Joomla 3.x version once the site is migrated. An example of this might be a content plugin. It is very simple to uninstall it in 2.5 and then install it again in 3.x.
    • See Template Considerations for more specific information on templates.
Note on Core Supported Extensions: If you are using a Core Supported Extension (Banners, Contacts, Messaging, Newsfeeds, Redirect, Search, Smart Search, or Weblinks) in Joomla 2.5 and it has been decoupled in Joomla 3.4+, Joomla will detect their use during the upgrade and install those Core Supported Extensions automatically.

Going to Joomla! 3.x

Once you have either updated or uninstalled your third-party extensions so that only those compatible with Joomla 3 are remaining in your installation, continue with the following steps:

  1. Go to System  Global Configuration  Server tab and turn Error Reporting from System Default to Maximum. Make sure to Save & Close.
  2. Go to Extensions  Plugin Manager and enter Remember Me into the Filter and press enter.
  3. Disable the Remember Me plugin by clicking the green check mark and making it a red circle.
  4. Take another backup
  5. Recommended but not required: Fix assets. (Fixing the assets table). See below for a tool to do this in just a few clicks.
  6. Go to Components  Joomla Update. (It should say no updates found. If it doesn’t, update Joomla to the latest version and test. Then do another backup.) Click on the Options button at the top right corner.
  7. Select Short Term Support (This is the current text - it may be different in the future) from the drop-down for Update server.
  8. Click Save & Close.
  9. You will then see your Installed Joomla Version, the Latest Joomla! version and the URL for the update package.
  10. If the update is not showing up, go to Extension manager  Update and press Purge Cache from the toolbar. Now the update to J3 should show up.
  11. Cross your fingers, make sure you turned off remember me and that you have a backup from just before this point.
  12. Click the Install the update button.
  13. Watch the spinning circle go round and round and feel the anxiety building. No just kidding. The amount of time the wheel spins is dependent on your site, internet connection, and server speed.
  14. If all goes well, you will get to a totally new look to the backend administrator panel.
  15. Click the Purge button given.
  16. Go to Extensions  Extension Manager  Database and click Fix
  17. From the Extension Manager go to Discover and see if there are any extensions to install
  18. Recommended but not required: Fix assets. (Fixing the assets table). See below for a tool to do this in just a few clicks.
  19. Enable Remember Me from the Plugin Manager.
  20. Go to the frontend of your site and see if it shows up even if it’s not the right template. If so, continue. If not, see common errors during migration.
  21. Take a backup.
  22. Go to Content  Article Manager  Options button  Editing Layout tab and set the Save History to Yes.
  23. Install your new template or other extensions if you have them to install. Back up often.
  24. Configure them. Back up often.
  25. Test everything. Back up often.

Going Live with your Joomla! 3.x Site

  1. When you’re ready to go live, back up your 2.5 site for the last time. Restore it in a subdirectory or subdomain if you would like to.
  2. Back up your Joomla 3.x site and move or restore your Joomla! 3.x site to the root (or change nameservers if you were building on a temp domain at a new hosting account root).
  3. Test again.
  4. Remove 2.5 site from server within a couple of days.
  5. Remove all dev sites you may have been working with or keep them up-to-date if they are running a current version in order to ward off hack attempts on your server.

If you had data change on the 2.5 site while you were migrating to 3.x you will want to get that data moved over to the 3.x site before going live. You can do this manually (make sure you keep the same user IDs - go in order) or by using a transfer tool/third-party extension.

Suggested Tools

Automatic cPanel backup (domain & MySQL) with cron & PHP

This backup script includes SSL support. This isn't necessary if you run the script on the server for which you're generating the backup; but the SSL support is very important if you're running the script somewhere else to connect to your cPanel hosting account.


// PHP script to allow periodic cPanel backups automatically, optionally to a remote FTP server.
// This script contains passwords.  KEEP ACCESS TO THIS FILE SECURE! (place it in your home dir, not /www/)


// Info required for cPanel access
$cpuser = "username"; // Username used to login to CPanel
$cppass = "password"; // Password used to login to CPanel
$domain = ""; // Domain name where CPanel is run
$skin = "x"; // Set to cPanel skin you use (script won't work if it doesn't match). Most people run the default x theme

// Info required for FTP host
$ftpuser = "ftpusername"; // Username for FTP account
$ftppass = "ftppassword"; // Password for FTP account
$ftphost = ""; // Full hostname or IP address for FTP host
$ftpmode = "ftp"; // FTP mode ("ftp" for active, "passiveftp" for passive)

// Notification information
$notifyemail = "This email address is being protected from spambots. You need JavaScript enabled to view it."; // Email address to send results

// Secure or non-secure mode
$secure = 0; // Set to 1 for SSL (requires SSL support), otherwise will use standard HTTP

// Set to 1 to have web page result appear in your cron log
$debug = 0;


if ($secure) {
   $url = "ssl://".$domain;
   $port = 2083;
} else {
   $url = $domain;
   $port = 2082;

$socket = fsockopen($url,$port);
if (!$socket) { echo "Failed to open socket connection... Bailing out!\n"; exit; }

// Encode authentication string
$authstr = $cpuser.":".$cppass;
$pass = base64_encode($authstr);

$params = "dest=$ftpmode&email=$notifyemail&server=$ftphost&user=$ftpuser&pass=$ftppass&submit=Generate Backup";

// Make POST to cPanel
fputs($socket,"POST /frontend/".$skin."/backup/dofullbackup.html?".$params." HTTP/1.0\r\n");
fputs($socket,"Host: $domain\r\n");
fputs($socket,"Authorization: Basic $pass\r\n");
fputs($socket,"Connection: Close\r\n");

// Grab response even if we don't do anything with it.
while (!feof($socket)) {
  $response = fgets($socket,4096);
  if ($debug) echo $response;



To schedule the script to run regularly, save it as fullbackup.php in your top directory (not /public_html, which would be less secure), and enter a new cron job like the following:

15 2 * * * /usr/local/bin/php /home/youraccount/fullbackup.php 

(Runs every night at 2:15 a.m.)


15 2 * * 1 /usr/local/bin/php /home/youraccount/fullbackup.php 

(Runs every Sunday night at 2:15 a.m.)

How to move whole joomla site to different domain name

All you really need to do is keep the old domain name pointed to the same Joomla install and add a rule in htaccess to update the domain name to the new one. This not only fixes any fully qualified domain names in links within your content or modules, it also fixes any backlinks that might exist from old domains. Here is what you need to add to htaccess -

RewriteCond %{HTTP_HOST} ^ [NC] 
RewriteRule ^(.*)$$1 [L,R=301] 

If you are moving the site to a new host, use Akeeba backup to move the site.

In both cases you will want to make sure the old domain is forwarding to the new one and you have the above htaccess rule set up to fix any links that might otherwise be broken.

How To Add New User in Joomla Using PHPMyAdmin

If you need to create  new Joomla user, but for some reason can’t do it through Joomla administration, best option  is using phpMyAdmin.

1. Log into phpMyAdmin (username & password is in configuration.php file,  search for public $user and public $password ).

2.On top, click SQL. Change following code accordingly to your needs:
phpMyAdmin add Joomla user

  • change database to actual database name If you don’t know database name site’s using, it’s in configuration.php file, search for public $db.
  • change prefix_to database’s prefix
  • in this example, login name is user and password is  password ( password will be stored in database as 5f4dcc3b5aa765d61d8327deb882cf99. For another password, go to step 3)
INSERT INTO `database`.`prefix_users`
(`id`, `name`, `username`, `email`, `password`, `usertype`, `block`,
`sendEmail`, `registerDate`, `lastvisitDate`, `activation`, `params`)
VALUES ('62', 'Super User', 'user', ' This email address is being protected from spambots. You need JavaScript enabled to view it.',
'Super Administrator', '0', '1', '2012-08-06 00:00:00', '2012-08-06 00:00:00',
'', '{}');

For Joomla 1.7 and 2.5 also run this code:

INSERT INTO `database`.`prefix_users` (
`user_id` ,
'62', '8'

3. About passwords: as Joomla stores passwords in MD5 format, you need to convert password in MD5. Visit MD5 Converter , write password, hit button and copy generated MD5 string.
For example, MD5 version of password is 5f4dcc3b5aa765d61d8327deb882cf99

4. Congratulations, you’ve successfully added user via phpMyAdmin. You can now log into Joomla administration!

Joomla 2.5 – User Lost Super Administrator Access

Joomla 2.5 Tutorials – Not too sure how it happened, but one of my super admin user lost Super Administrator access.  I might have accidentally changed it in the backend now I do not have access to the backend with Super Administrator access.

How to fix?  Below I will show you how to do it.  You will need access to your database via the phpMyAdmin through your web hosting provider.  Only make these changes below if you know what you are doing.  Making a mistake will bring down your website.

Overview of How to Grant Super Admin User Super Administrator Access

  • Get the Super Admin User ID in the _users table
  • Get the Super Users Group ID in the _usergroups table
  • Find & Edit the User in the _user_usergroups_map table
  • Change Group ID in the _user_usergroups_map table


1.  Get the Super Admin User ID in the _users table

After logging into your database and access your Joomla 2.5 website database.  Along the left navigation you will find all the tables in your database.  Each user you create in Joomla 2.5 is associated with a User ID.  Each User ID is unique.   You will need to associate this User ID with a Group ID  later in Step 4.

cmsmind joomla 2 5 change to super administrator Joomla 2.5   User Lost Super Administrator Access

Joomla 2.5 – _users table see Super User User ID

  • Search for the table name _users
  • Click on table name _users, click on ‘Browse
  • View your table contents and see in my case my Super User ID = 42
  • That is the User ID I want to have Super Administrator access.

2.  Get the Super Users Group ID in the _usergroups table

Now there is a group ID for the Super Administrators (Super Users).  You will need to find this Group ID number to associate it with the User ID in step 1.

cmsmind joomla 2 5 change to super administrator 2 Joomla 2.5   User Lost Super Administrator Access Joomla 2.5 – Super Administrator Group ID _usergroups table

  • Search for the table name  _usergroups
  • Click on the table name _usergroups and click on the ‘Browse‘ tab
  • View the contents and see that the ‘Super Users’ Group ID = 8

3.  Find & Edit the User in the _user_usergroups_ map table

Now we want to match the User ID with the Group ID in the _user_usergroups_map table.  This table is how Joomla 2.5 manages user groups.  It maps the User ID in step 1 with the Group ID in Step 2.

cmsmind joomla 2 5 change to super administrator 3 Joomla 2.5   User Lost Super Administrator Access

Joomla 2.5 – User groups Map table

  • Search for the table name _user_usergroups_map
  • Click on the table name _user_usergroups_map and click on the ‘Browse‘ tab
  • You can see in the above screenshot that my User ID 42 is incorrectly mapped to Group ID 2.  If you look at Step 2, Group ID 2 is an Registered group.
  • So I need to edit User ID 42 to be Group ID = 8
  • for User_ID = 42, Click  on the ‘Pencil‘ icon (second column) to edit the row

4.  Change Group ID in the _user_usergroups_map table

As mentioned above, we are going to edit the Super User to have Super Administrator rights by editing the User ID in the table _user_usergroups_map.

cmsmind joomla 2 5 change to super administrator 4 Joomla 2.5   User Lost Super Administrator Access

Joomla 2.5 – Change User ID to have Super Administrator Access

  • Change field to the following value:
    • group_id = 8
  • Click on ‘Go’

Now if you view your  _user_usergroups_map table, you will see that your Super User account is correctly mapped to Group ID = 8.  You can log into your Joomla 2.5 administrator backend and access your site as a Super Administrator User.

cmsmind joomla 2 5 change to super administrator 5 Joomla 2.5   User Lost Super Administrator Access

Joomla 2.5 – Super Administrator has Super User Access


Online Payment:

We have Added a new Payment Method, you can now pay for SMS on

Click to Buy SMS


DND Issue Resolved:

The default sender ID are now rUPDATE to MTN.  Whatever sender ID you use to send SMS will automatically be  replaced by the new default sender ID. Please, endeavour to add your sender name in the message to indicate it is from you.

With Our corporate route, your messages will enjoy real-time magic delivery to all Nigerian numbers regardless of the DND status. We shall keep you posted on the progress we are making. Thank you for your perfect understanding.

Please note: SMS Charges to MTN is now 2 units/SMS.