Merge user accounts

Administration tool ::: tool_mergeusers
Maintained by Jordi Pujol-Ahulló, Nicolas Dunand
This administration tool will merge two Moodle user accounts into one.
Latest release:
2652 sites
3k downloads
89 fans
Current versions available: 6

The intent is to assign all activity & records from user A to user B. This will give the effect of user B seeming to have done everything both users have ever done in Moodle.

This tool replaces the old report_mergeusers, which is now obsolete.

Help us

We do not give support in the comments section below. For any issue on the plugin, please, refer to GitHub and:

  1. Check if a related issue is already created with the exact detail or similar to the failure you're facing. Add your own experience too. Or
  2. Build a new issue clicking on https://github.com/jpahullo/moodle-tool_mergeusers/issues/new and add the necessary detail to replay the failure or the trace to help you out, and/or
  3. Contribute to the plugin with a PR addressing the problem you're solving.

Help us manage this plugin in a more comfortable way in our spare time by using GitHub. Thanks in advance!

Potential privacy issues

This plugin does not store any personal data.

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3

Contributors

Jordi Pujol-Ahulló (Lead maintainer): author
Nicolas Dunand: author
Please login to view contributors details and/or to contact them

Comments RSS

Comments

  • Jose Galindo
    Wed, 19 Apr 2017, 1:20 AM
    First of all, congratulations on the great plugin,
    I had 2 doubts:
    1. How can I do so that the user origin data is not deleted?
    2. How can I choose which data I want to merge?
    A greeting and thanks in advance.
  • Jordi Pujol-Ahulló
    Thu, 20 Apr 2017, 2:34 PM
    Hi Jose!

    Thanks for your comments.

    An overall idea (with few exceptions):

    * What this plugin does is just replace the origin user id by the targer user id, so that is reflects as if all activity into Moodle was performed by the target user.
    * There are only few exceptions where this plugin deletes useless records. See de README.md from the plugin for more details.

    1. By now, only in certain cases records are deleted, and mainly only the user.id value is replaced by the target user.id. So that, actually, the records remain the same. I insist, with few exceptions.
    2. There is no possibility to choose wich data to merge, except user_preferences, user_private_key and user_info_data, which you can say (from plugin settings) that those records remain linked to every separated user.

    Hoping that helps on clarifying your doubts.

    Regards and thanks for asking!

    Jordi
  • Lai Wei
    Tue, 25 Apr 2017, 4:37 PM
    Just to let you know, the latest version of the plugin doesn't work with Moodle versions before 2.5 inclusive despite it declares it does. The issue is with the event triggering. Before 2.5 are triggered using events_trigger(), while after 2.6 it's replaced by $event->trigger(). I know 2.5 is aged but it may be better if the version information can be fixed.
  • Jordi Pujol-Ahulló
    Tue, 25 Apr 2017, 6:21 PM
    Hi!

    Thanks for the feedback!

    We will update it, as you suggested!

    Jordi
  • Petr Khl
    Sat, 2 Sept 2017, 3:16 PM
    Hello.
    Thank you for your plugin, it is really great but something went wrong in our case.
    We are testing it right now before applying to a real system and there is one problem we faced with. It is about forum grades.
    After merging two user accounts it has happend that the user does not have grades for any forum.
    When I started digging into the problem, it turned out that the grades have left in ratings table but not in grade_grades table?

    Can you please help me with this problem? May be I am doing something wrong?
    Serenely, Petr.
  • Petr Khl
    Sat, 2 Sept 2017, 3:18 PM
    Sorry, forgot to mention that we are using moodle 3.1 and have just moved from 1.9
  • Jordi Pujol-Ahulló
    Mon, 4 Sept 2017, 2:31 PM
    Hi!

    It may be possible, but this is the first time it was known for us. When you told us about the tables (grades and grade_grades or something like that), would you please explain a bit more about that? Which table was updated and which table was not?

    We dealt about grades on quiz attempts to be updated correspondingly, thanks to a contribution. Maybe this is a particular case to be updated too.

    Jordi
  • Simon Allison
    Sun, 10 Sept 2017, 5:15 PM
    I'm getting Fatal error: Class '\tool_mergeusers\event\user_merged_success' not found in E:\moodle\admin\tool\mergeusers\lib\mergeusertool.php on line 221

    Moodle 2.5.9 (Build: 20141110)
  • Jordi Pujol-Ahulló
    Tue, 12 Sept 2017, 2:18 PM
    Hi Simon!

    Thanks for the feedback. There is a point to consider on Moodle, that classes autoloading (https://docs.moodle.org/dev/Automatic_class_loading) is available only from Moodle 2.6 and on. If you are using the last version of this plugin, this will not work properly. Consider using an older version or using a newer Moodle version.

    Thanks for sharing.

    Jordi
  • Bruno Tavares
    Wed, 11 Oct 2017, 8:48 PM
    Greetings.

    On Moodle 2.6.11+ (build 20150619), either using v1.14.1 and v1.12 of the plugin, I'm getting the following error:

    Coding error detected, it must be fixed by a programmer: level must be specified in init() method of each method

    Debug info:
    Error code: codingerror
    Stack trace:
    line 427 of /lib/classes/event/base.php: coding_exception thrown
    line 489 of /lib/classes/event/base.php: call to core\event\base->validate_before_trigger()
    line 231 of /admin/tool/mergeusers/lib/mergeusertool.php: call to core\event\base->trigger()
    line 135 of /admin/tool/mergeusers/index.php: call to MergeUserTool->merge()

    What other information can I provide, to help getting to the problem's origin?

    Thanks in advance.

    Bruno Tavares
  • Roland Sherwood
    Fri, 24 Nov 2017, 10:36 AM
    Hi,

    Many thanks for this plugin (which really should be in Moodle core, imo). Unfortunately, we've just tried to merge two users and have hit this error:

    Exception thrown when merging: 'Can not find workshop activity with id 23".

    Trace:
    #0 /var/www/html/moodle/admin/tool/mergeusers/lib/mergeusertool.php(291): MergeUserTool->updateGrades('14592', '5162')
    #1 /var/www/html/moodle/admin/tool/mergeusers/lib/mergeusertool.php(216): MergeUserTool->_merge('14592', '5162')
    #2 /var/www/html/moodle/admin/tool/mergeusers/index.php(135): MergeUserTool->merge('14592', '5162')
    #3 {main}


    ×
    Merge failed!
    Your database engine supports transactions. Therefore, the whole current transaction has been rolled back and no modification has been made to your database.

    I've checked within the database and the message is correct about there being no workshop activity with ID 23 (presumably it was deleted at some stage). Do you have any ideas on on how we can proceed?
  • Jordi Pujol-Ahulló
    Fri, 24 Nov 2017, 3:33 PM
    Hi!

    Thanks for the comments and for giving us feedback.

    The case you show is a bit weird. It's like the course module was deleted but not its related grades (from tables grade_grades and grade_items). This is why the process hangs up.

    Did you proceed the workshop deletion properly?

    Meanhile, if you want to try it out and pass through this incongruence, you could change the line at admin/tool/mergeusers/lib/mergeusertool.php, lines 486 and 489 where there is a "throw new \Exception(...);" for a "continue;", to just omit this grade item.

    Better if you can test in a test instance, prior to run it in production.

    Let us know!

    Jordi
  • Jordi Pujol-Ahulló
    Tue, 27 Feb 2018, 2:05 AM
    Hi! Several rounds ago, and also for the round of January-July 2018 we are proposing this issue as a MUA project here: https://tracker.moodle.org/browse/MDL-61542

    Looking to see you there and also voting!
  • Beto de Oliveira
    Tue, 13 Mar 2018, 4:48 AM
    Hi,

    Does the plugin works with external db accounts?
  • Constance Horne
    Tue, 13 Mar 2018, 4:50 AM
    It merges two users in a moodle database.
Please login to post comments