Note: You are currently viewing documentation for Moodle 1.9. Up-to-date documentation for the latest stable version is available here: Enrolment FAQ.

Enrolment FAQ

From MoodleDocs

How do I prevent students from enrolling themselves in a course?

Student-initiated enrollment (also known as Internal enrolment) is one of the standard enrollment methods supported by Moodle. In fact, it is the only method that cannot be disabled sitewide by the administrator. Fortunately, there are a few methods you can use to effectively prevent students from enrolling themselves in your course.

  • Set Course enrollable to No in the course settings. This disables internal enrollment for your course.
  • Set an enrolment key in the course settings. Students will only be able to enroll if they know the key. Naturally, you will keep the key secret.

Note that neither method prevents teachers from manually enrolling students (Course administration -> Assign roles).

Why are users being unenrolled for no apparent reason?

Please check the following:

  • The longtimenosee variable in Site Administration > Server > Cleanup (or Administration > Configuration > Variables in Moodle 1.6) which specifies the time limit for which, if users (teachers as well as students) haven't logged in, they are unenrolled from courses.
  • The Enrolment duration in the Course settings which unenrols students after the specified time has elapsed.

(See Unenrolment for a full list of what controls unenrolment.)

Why are all students enrolled in all courses?

If the default role for all users in Site Administration > Users > Permissions > User policies is set to student rather than authenticated user (the default setting), this will result in all students being enrolled in all courses.

Another possibility is that users are assigned the system role of student. Check Site Administration > Users > Permissions > Assign system roles and unassign users as necessary, then reassign them the role of student in the course context.

Why can't I select "External Database" from the enrolment plugins drop-down menu in the course settings?

Only interactive enrolment methods may be chosen in the course settings. Non-interactive enrolment plugins are set for the entire site in Site Administration > Courses > Enrolments. Please refer to the interactive enrolment section of Enrolment plugins.

How do I enable students to unenrol themselves from courses?

To enable students to unenrol themselves from any course:

  1. Access Site Administration > Users > Permissions > Define roles.
  2. Click the edit icon opposite the student role.
  3. Change the moodle/role:unassignself capability from not set to allow.
  4. Click the "Save changes" button at the bottom of the page.

See Unenrolment for instructions on how to enable students to unenrol themselves from a particular course.

How do I prevent teachers from unenrolling themselves from their course by mistake?

  1. Access Site Administration > Users > Permissions > Define roles.
  2. Click the edit icon opposite the teacher role.
  3. Change the moodle/role:unassignself capability from allow to not set.
  4. Click the "Save changes" button at the bottom of the page.

How do I change the spelling of "enrol" to "enroll"?

Simply install the American English language pack (en_us) then choose it as the default language for the site. Or edit your language settings.

How can the name of the person holding the enrolment key be changed?

In Moodle 1.8.3 onwards, the keyholder role may be set in the Internal enrolment settings (via Administration > Course > Enrolments). Use the following steps:

  • Create a completely empty role called Keyholder (or whatever you like)
  • In Course > Enrolments > Internal set the keyholder role you just created in the dropdown
  • In your courses, assign people to this role (as well as their "proper" role).
  • You may want to allow one lecturer to assign another lecturer to the role "Keyholder" on a course. To do this, go to Site Administration > Permissions > Define roles > Allow role assignments. Select the appropriate check box.

In versions of Moodle prior to 1.8.3, a Keyholder role may be created.

Is there a way for teachers to be notified when students enrol in a course?

No notifications will be sent when students are allowed to enrol by the Internal enrolment process. It can be done by changing the open source code, but not by through the interface. Other enrolment methods (for example Flat file) can allow emails when enrolment is complete but these are not student initiated.

When a student self-enrols, they get a welcome email message. Can a teacher customise this at the course level?

Entering text for the message is described Documentation here. But at the course level, not possible without a hack.

How can the course welcome message be disabled?


In Moodle 1.9.3 onwards, the course welcome message may be disabled by setting "Send course welcome message" to No in Administration > Courses > Enrolments.

Where in the database is the relationship between user and course?

Prior to Moodle 1.7, enrollments were represented by two simple tables: mdl_user_students and mdl_user_teachers. Under the new Roles and Capabilities System introduced in Moodle 1.7, the concept of enrollment has been generalized. The word "Enroll" should literally be read as "Assign a role to." To accomodate this flexibility, the database model has changed. There is now a mdl_role_assignments table that holds the equivalent information. For more information, see the roles development documentation

Help! Now Admin login does not work

Have you switched from internal to external enrolment and now nobody can log into your Moodle site? Site login has to do with authentication but an error with enrolment can produce a fatal error. You will have to solve this by altering the MySQL database (preferably with phpMyAdmin). Forum discussion here.

Look in the mdl_config table the name of the setting is "enrol_plugins_enabled". Edit the value list to remove the value database from the list of comma separated values, save, and you should be able to access your site again.

Alternatively the following MySQL command line should work, but is not recommended.

mysql -u username -p moodle_db_name
UPDATE `mdl_config` SET `value` = 'manual' WHERE `mdl_config`.`name` ='enrol_plugins_enabled' ;

See if you have merely forgotten your password.

When users access a course, Moodle returns 'This course does not allow public access'. What does this mean?

This could mean the course is a Metacourse and does not have, or no longer has, any courses associated with it. A metacourse ONLY gets its enrollments from other courses. See the "Child courses" link in the course administration block. Or check Course Administration > Settings > Is This a Meta Course? and set it to the default which is "no".

What is new in enrolments in Moodle 2.0?

See Enrolments 2.0.

See also

Using Moodle forum discussions: