Authentication: Autoenrol cohort

Maintained by Picture of Dan Marsden Dan Marsden, Picture of Catalyst IT Catalyst IT
This Authentication plugin automatically assigns users into cohorts based on information in their user profile fields.
499 sites
33 fans
Moodle 2.2, 2.3

Build status moodle-auth_mcae.svg?branch=v3.1

Release notes

Auto cohort authentication plugin for moodle 2.x

This authentication plugin automatically assigns users into cohorts.

Cohort name depends on user profile field.

Cohorts are created in CONTEXT_SYSTEM.


  • Download the archive and extract the files, or clone the repository from GitHub
  • Copy the 'mcae' folder into your_moodle/auth
  • Visit Site administration - Notifications page and follow the instructions


  • Replace the your_moodle/auth/mcae folder with new one
  • Visit Site administration - Notifications page and follow the instructions
  • !!! If you update to version 2.9 you must rewrite templates! See configuration section.


Template for cohort name

1 template per line.

In the template you may use any characters (except '{' and '}') and profile field values. To insert a profile field value, use {{ field_name }} tag.

An email field have 3 variants:

  • {{ email.full }} - full email
  • {{ email.username }} - only username
  • {{ email.domain }} - only domain
  • {{ email.rootdomain }} - root domain

By default moodle provides this fields

{{ id }}, {{ auth }}, {{ confirmed }}, {{ policyagreed }}, {{ deleted }}, {{ suspended }}, {{ mnethostid }}, {{ username }}, {{ idnumber }}, {{ firstname }}, {{ lastname }}, {{ email.full }}, {{ email.username }}, {{ email.domain }}, {{ email.rootdomain }}, {{ emailstop }}, {{ icq }}, {{ skype }}, {{ yahoo }}, {{ aim }}, {{ msn }}, {{ phone1 }}, {{ phone2 }}, {{ institution }}, {{ department }}, {{ address }}, {{ city }}, {{ country }}, {{ lang }}, {{ calendartype }}, {{ theme }}, {{ timezone }}, {{ firstaccess }}, {{ lastaccess }}, {{ lastlogin }}, {{ currentlogin }}, {{ lastip }}, {{ secret }}, {{ picture }}, {{ url }}, {{ descriptionformat }}, {{ mailformat }}, {{ maildigest }}, {{ maildisplay }}, {{ autosubscribe }}, {{ trackforums }}, {{ timecreated }}, {{ timemodified }}, {{ trustbitmask }}, {{ imagealt }}, {{ lastnamephonetic }}, {{ firstnamephonetic }}, {{ middlename }}, {{ alternatename }}, {{ lastcourseaccess }}, {{ currentcourseaccess }}, {{ groupmember }}

Additional tags become available if you have some custom profile fields. For example if you create custom profile fields

  • checkboxtest - type Checkbox
  • datetimetest - type Date/Time
  • droptest - type Dropdown menu
  • textinputtext - type Text input
  • and textareatest - type Text area

You be able to use this tags: {{ profile.checkboxtest }}, {{ profile.datetimetest }}, {{ profile.droptest }}, {{ profile.textinputtext }}, {{ profile_field_checkboxtest }}, {{ profile_field_datetimetest }}, {{ profile_field_droptest }}, {{ profile_field_textareatest.text }}, {{ profile_field_textareatest.format }}, {{ profile_field_textinputtext }}

> Note: Profile field templates is case sensitive. {{ username }} and {{ UserName }} are two different fields!

Split arguments: Synopsis: %split(fieldname|delimiter)

Returns multiple cohorts, each of which is formed by splitting field on boundaries formed by the delimiter.


  • fieldname - Profile field name. The same as tag, but without '{{' and '}}'
  • delimiter - The boundary string. 1 - 5 signs.


User John set custom profile field "Known languages" to "English, Spanish, Chinese"

Main template contains string "Language - %split(knownlanguage|, )"

John will be enrolled in 3 cohorts: Language - English, Language - Spanish and Language - Chinese

Replace empty field

If profile field is empty then it's replaced with this value.

Replacement array

You can change the cohort name after it's generation.

1 replacement per line, format - old value|new value

very long cohort name|shortname

Note: The name must not be longer than 100 characters or it will be stripped


Unassign users from cohorts after profile change.

To use an unassign feature:

  • Go to Plugins - Authentication - Autoenrol cohort and enable unenrol function
  • Go to yourmoodle/auth/mcae/convert.php and convert cohorts you want to "auth_mcae".

Convert only cohorts that are created by the "auth_mcae" module!

At yourmoodle/auth/mcae/convert.php page you may view, delete or convert cohorts into "manual" or "auth_mcae" mode.

Ignore users

List of users to ignore. Comma separated usernames.


Usage example

You have a custom profile fields "status" (student, teacher or admin) and "course".

You wnat to enrol many users into cohorts like "course - status" than enrol cohorts into courses.

At configuration page set:

Main template to {{ profile_field_course }} - {{ profile_field_status }}

Empty field text to none


  • When 1st course student logins, he enrol to cohort named "1 - student"
  • When 1st course teacher logins, he enrol to cohort named "1 - teacher"
  • When admin logins, he enrol to cohort named "none - admin" (Course not set, status - admin)

To rename "none - admin" cohort to "Administration" you must set a replacement array field at the configuration page In our case: none - admin|Administrator


When admin logins, he enrol to cohort named "Administrator"


Screenshot #0
Screenshot #1
Screenshot #2


Picture of Dan Marsden
Dan Marsden (Lead maintainer)
Picture of Andrew Kama
Andrew Kama: Previous maintainer
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Tim Tarbotton
    Sun, 30 Apr 2017, 8:03 AM
    Hello, I am looking for a plugin that will automatically add a Email-based self-registration to a specific 'cohort' based on the users 'local club' field. I want to add the 'local club' as a mandatory field during self-registration.

    Is this something this plugin can do? I am not a developer but I would like some clarification to make sure this is what this plugin will achieve. I am using Moodle 3.3.

    Appreciate the help!
  • Picture of Dan Marsden
    Mon, 1 May 2017, 5:43 AM
    this plugin creates cohorts based on user profile information - for example if you have a local club field in the user profile it will create a site-wide cohort with the club name and assign everyone with the same club name into a site-wide cohort. You can then use other plugins/mangement to assign those cohorts to courses etc.
  • Picture of Tristan daCosta
    Thu, 11 May 2017, 5:01 PM
    Hi Dan. I wonder how big a task it would be to add the ability to create cohorts from user Badges? ie. {{badge_badgename}} into cohort "badgename".

    This could then allow site role assignment / other functionality to users based on badges earned (sometimes through the use of other plugins ie. Cohort Role Syncronization).

    For myself, the end goal would be for users to gain additional permissions once they have completed online training.
    Complete training -> Earn Badge -> Enrolled in Cohort -> Cohort assigned custom role (Cohort Role Syncronization) -> Additional permissions with custom role

    Anyone have any thoughts on this?

  • Picture of A Guy
    Fri, 12 May 2017, 4:47 AM
    I am using this plugin and it works great with the exception of one process. The user has to log in and then log out. Then log back in in order for the user to be enrolled in the cohort/course. How can I get this to allow the user to be enrolled in the course via the cohort upon first logging in? Thanks
  • Picture of Dan Marsden
    Fri, 12 May 2017, 7:15 AM
    @A Guy - try using the version in github to see if that is better - there are a few changes there that improve the process a bit.
    @Tristan - it's not something I'm planning to work on at the moment, but feel free to submit a pull request if you work it out - or if you're willing to fund the time for someone to look at this drop me a private message and I can provide information on our rates (I work for the Moodle Partner Catalyst IT)
  • Picture of srikanthi akula
    Wed, 5 Jul 2017, 5:08 PM
    Hi Dan... I would like to use this plugin.. But my requirement is, is it possible to enroll to cohort as soon as the user is created. And not after user has logged in.. Thank you
  • Picture of Dan Marsden
    Thu, 6 Jul 2017, 6:56 AM
    @srikanthi - I added a patch to the version in github that does that but didn't release it here - feel free to give it a go.
  • Picture of srikanthi akula
    Fri, 7 Jul 2017, 7:12 PM
    Thanks a lot Dan... I had installed Github version, it's working smile
    But what if the user profile was edited and user fields were updated!!
    Will the user Shift to other cohort..

    As of now what I observed is, user been added to the updated cohort group, but was not removed in the old cohort..
    is there any way to do that..(to remove from the old cohort when the user profiles fields are updated)

    Thank you
  • Picture of Dan Marsden
    Mon, 10 Jul 2017, 6:16 AM
    I thought it was removing the old cohort enrolment - if not, there might be a bug, feel free to contact me privately if you are willing to pay for my time to investigate. (I work for the Moodle Partner Catalyst IT)
  • Picture of Francis Vendrell
    Tue, 8 Aug 2017, 6:57 PM
    Version mcae 3.1 (2016022900) doesn't seem to work with Moodle 3.3.1.
    Is the Github version compatible with Moodle 3.3.1?
  • Picture of Bas Harkink
    Tue, 15 Aug 2017, 11:46 PM
    We are setting up a Moodle site where a user makes their own account through a version of the email self registration. In this form the user choses a cohort that we have setup beforehand. (create cohort, than convert to mcae cohort using /mcae/convert.php).

    At first that process seemed to work perfectly. Now we are noticing that mcae is creating new cohorts with the same name and assigning users in that cohort instead of the cohort we setup beforehand (and added to courses as a enroll method). Do you have any idea what could be the problem?

    And thank you for taking the time to maintain this plugin, Dan!
    Best, Bas Harkink
  • Picture of Luka Torby
    Sat, 13 Jan 2018, 8:15 AM
    I have github version and Moodle 3.4. All is ok but the cohort's name. Why the cohort's name is wrong? It seem that doesn't recognizes the any field, and it uses the empty field text. Thank you.
  • Picture of Dan Marsden
    Mon, 15 Jan 2018, 3:38 AM
    @Luka - it's not clear what your issue is - you could try asking for help in the community forums where you can also include screenshots - alternatively you purchase support from your local Moodle Partner who might also be able to help further.
  • Ricardo Caiado
    Tue, 13 Mar 2018, 10:03 PM

    Is it compatible with Moodle 3.4?

  • Picture of Dan Marsden
    Wed, 14 Mar 2018, 5:12 AM
    @Ricardo - it should work ok, but I haven't tested it on anything other than 3.1 myself. Feel free to report any issues you have with it to the issues tracker. Thanks.
1 2 3 4 5
Please login to post comments