Enrol by user profile fields

Enrolment ::: enrol_attributes
Maintained by Nicolas Dunand
This plugin allows users to be enrolled according to any value stored in their user profile.
Latest release:
1337 sites
114 fans
Current versions available: 4

This plugin allows users to be enrolled according to any value stored in their user profile. If you use an external authentication scheme (LDAP, Shibboleth), you can store values in hidden user fields of the users' Moodle profile, and then use these values to automatically enrol users if some courses.


Screenshot #0


Nicolas Dunand (Lead maintainer)
RISET Université de Lausanne: Supporting institution
Please login to view contributors details and/or to contact them

Comments RSS


  • Fri, Feb 5, 2021, 10:48 PM
    I've run into an issue with the Enroll by profile field. While testing the plugin, I found an issue with the Auto unenroll when attribute expires. Once my test user was unenrolled from the test course used for testing this enrollment method, no matter what I've tried, he can not be enrolled in any course using Enroll by profile field.

    Course: Test Course #1
    Custom Profile Fields: Field 1 (first, second, third), Field 2 (1, 2, 3)
    Enrollment Method: Enroll by profile field, Field 1 = first
    User: User One
    Profile Fields: Field 1 = First, Field 2 = 2

    User enrolled.
    Changed Field 1 to second
    User unenrolled
    Changed Field 1 to First
    User not added to course.
    Purged all enrollments, ran tasks, cron job, forced enrollments, user not enrolled.
    Created New Test Course
    Configured the Enroll by profile field the same as for Test Course 1
    Users enrolled, but not Test User 1.
    Changed enrollment rule to use Field 2 = 2, users enrolled, but not Test User 1.

    I can verify that the user profile fields contain the expected values, that users can be enrolled and unenrolled, but not re-enrolled or enrolled in other course once a attribute changes and the user is automatically unenrolled.

    Any ideas? I'm at a loss.
  • Sat, Feb 6, 2021, 12:52 AM
    Hello Niall,

    Thanks for reporting this, this is not as it should work. Could you please post this in the bug tracker ? see link on this page. This way I can keep track on things that need looking into or be corrected.

  • Tue, Mar 23, 2021, 10:17 PM
    What triggers the enrolment? Is the user required to login for the enrolment to happen? Are there any settings to adjust how/when the enrolment happens? Will running cron update the enrolments according the rules we create with this plugin?
    We would like the rule to run often enough that a login is NOT required for the enrolment to happen. We want to rely on this plugin to enrol users as the rule is completed and/or users pass the crtieria - often enough so we can see who is enrolled (expected according to the rule) and the records and statistics.
  • Mon, Mar 29, 2021, 2:55 PM

    You'd have to test and play around a little to see how this works for your particular setup. By default, the checks are made upon each login, but as in my case this could seriously slow down logins I made this optional. Then the cron job runs as specified under your Admin menu > Scheduled tasks, so you could change the frequency of this specific task. However be aware that for large site using many rules each task run could take several minutes. So it remains to be checked whether this is feasible at all. To discuss any specifics, please open an issue in the bug tracker (whether there is an actual issue or you make a request for enhancement).
  • Wed, Mar 31, 2021, 3:12 PM
    Hello, Nicolas.

    I installed the plugin and made the necessary changes. My scenario is that students must view the course based on a custom user field that I created. I don't see the course when I log in, but I do if I click the force enrolment now button in the plugin settings. Is there anything else I'm overlooking?
  • Tue, Apr 6, 2021, 2:13 PM
    Hello Sree Vishnu,

    In the main plugin settings in the Moodle administration, you can check the "Enrol users immediately at login" checkbox; this will process the rule immediately upon each login. In all other cases, the rules are processes periodically as specified in the scheduled task's schedule under Administration > Server > Scheduled tasks > "Process all rules and enrolments for Enrol by user profile fields". HTH
  • Thu, Apr 15, 2021, 7:49 PM
    Hello Nicolas,

    I've got a small question. Where in the db is are, the selected profilefields wich you want to use for enrolment, stored? (enrolsettingsattributes)

    kind regards Koen
  • Thu, Apr 15, 2021, 9:16 PM
    Hello Koen,

    it should be either in the mdl_config or mdl_config_plugins table.
  • Fri, Apr 16, 2021, 5:46 PM
    Thanks a lot!!!

  • Mon, Apr 19, 2021, 11:31 PM
    Hi Nicolas,

    I have found the data table with the enrol attributes.

    What I'm actually looking for is where the data / profile fields are stored that may be used for the enrollment on the course page.

    When I have created a profile field and placed it manually in the db config_plugins, this profile field is not yet visible at Enrol by user profile fields in the course.

    Hopefully you can provide me with an answer.

    Is it stored in de cache or a other db table?

  • Sun, May 30, 2021, 10:18 PM
    So how do you use this plugin? I have it installed and activated in available course enrollment plugins but when I go to set it on a course it is not in the available list. I'm using a fresh install of Moodle 3.11.
  • Fri, Sep 17, 2021, 9:21 PM
    Hi there.
    I have the same problem, @Aaron Harker could you activate it?
    Could someone help me how to activate it in the course?
    Thanks !
  • Fri, Oct 1, 2021, 6:33 AM
    Where and how do I release this lock: Unable to get task lock for enrol_attributes\task\processenrolments_task.
  • Aaron Cauchi
    Mon, Jan 10, 2022, 11:43 PM
    Have set enrolment methods to following:
    Manual Enrolments
    Self enrolment
    NurseEnrol (Enrol by user profile field)

    Seems plugin is not working as have set NurseEnrol to a specific user field which is the Grade. This grade is Nurse
    If a grade is a doctor he still is able to register into course. What am I doing wrong?
  • Wed, Feb 23, 2022, 6:50 AM
    Hello, congratulations for this plugin. It's really helpful.
    Question: Is it possible to filter suspended users with the enrol by user profile fields plugin so that they are not enrolled in a course?
Please login to post comments