I am looking for details on the database changes specifically relevant to the users from 1.5 and 3.x.

I need to move 40K users manually, and want to write a script to convert all the registered user data and authentication (not anything to do with articles) from version 1.5 to 3.x, but am not certain of the changes that I have to take into consideration in the tables, and the new layout of user and authorization relations.

Has anyone done this, know this? I'm not looking for a tool, but the details on the joomla database variations specific to the users between versions 1.5 and 3.x so that I can write a php script to migrate.

FYI, the reason i need to do this manually is that I have to also run an audit on the accounts and cross-reference them with an external member-status table to confirm their migration.


  • 1
    But there are already scripts, why to write new one from scratch? SP Upgrade will do this easily. As for the db changes, you could simply compare the involved tables between the 2 versions.
    – FFrewin
    May 29, 2015 at 18:55
  • FFrewin, I am not looking for a tool (someone else's packaged script). I am looking to write the single php script that is customized to our specific needs. As mentioned in the original post, I actually have to record/audit the migration as well as cross-reference external data to determine if the account should be migrated/manipulated. I am basically writing my own ETL script for users.
    – Lance
    May 29, 2015 at 18:58
  • 1
    You know you can simply migrate with any of the available scripts the users to Joomla 3 and then deal with cleaning up which users to keep with a custom script. It sounds more efficient to me, if you would have only to write a script to work with the db in Joomla3.
    – FFrewin
    May 29, 2015 at 20:26

1 Answer 1


So what I did was export the J1.5 jos_users table (minus the usertype and gid), and then process all the accounts through our audit and update processes, then imported them all into the J3.4 jos_users table.

SELECT `id`, `name`, `username`, `email`, `password`, `block`, `sendEmail`, `registerDate`, `lastvisitDate`, `activation`, `params` FROM `jos_users`;

Luckily for us, every user that was imported was grouped as registered, so we only needed to insert a row for every user into the jos_user_group_map with the appropriate group_id equal to the "id" from the jos_usergroups table where the "title='Registered'" (which was 2, for me).

INSERT INTO `jos_user_usergroup_map` (user_id, group_id) SELECT id, 2 FROM jos_users;

Doing it manually like this allowed us to run several transformations on the records before loading them back into the new system. As well, we had several other tables that were populated via the load, but we didn't share that detail here.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.