Course completed enrolment

Enrolment ::: enrol_coursecompleted
Maintained by RenaatRenaat Debleu
Enrol users upon completion of a course.
Latest release:
1932 sites
106 fans
Current versions available: 7

With this plugin it is possible to create a chain of courses. After completion of a course, the student is automatically enrolled in one or more other courses. But it is also possible to give a user another role in the same course when he/she completes the course.


As a teacher go to the course in which students will be enrolled in the future.  Navigate to Course Administration > Users > Enrollment Methods and add the Course Completed Enrollment method. Fill in the role - duration - start date - end date, and search for the course that needs to be completed.  Save your changes and do an extra check if course completion is enabled and working in the required course.

There is a nice and simple explanation by Mary Cooch how to use this plugin.

Course completion is something else than doing all activities, read the docs on first!

Sample use

  • If you want to enroll users in course2 after they complete course1, you have to add the enrolment method to course2 and choose course1 as the course parameter.
  • If you want to enroll users in course2 and course3 after they complete course1, you have to add the enrolment method to course2 and course3, with course1 as the course parameter.
  • If you want to enroll users in course3 after they complete course1 OR course2,  you have to add 2 instances to course3, one with course1 as requirement, one with course2 as requirement.
  • If you want to enroll users in course 3 after they complete course1 AND course2,  you can add the enrolment method to course3 and choose course2 as the course parameter. Add in course2 the completion of course1 (course completion - Condition: Completion of other courses) as a course completion requirement.
  • If you want to give a user a new role in a course1, add the enrolment method to course1, choose course1 as the course parameter and pick the new role for the participant.


  • Administrators can bulk modify and delete users (works only when 1 instance is installed MDL-66652).
  • When a user is part of a group in the first course, the user can also be part of the group with the same name in the second course.


  • copy the content of the package into the enrol/coursecompleted directory under the root of Moodle.
  • log in as administrator and complete the installation
  • enable the plugin under Settings, Site administration, Plugins, Enrolments
  • configure the default settings for this enrolment method when it is added to a course

Read the Plugin installation guide for complete steps about installing a new plugin in Moodle.

Actions Coverage Status


Screenshot #0
Screenshot #1
Screenshot #2


Renaat Debleu (Lead maintainer)
Please login to view contributors details and/or to contact them

Comments RSS


  • Renaat
    Mon, Oct 4, 2021, 4:05 PM
    Hello Vinay,

    THX for the feedback.

    This plugin enrols a user in course B after completing course A. If both courses contain the same groups and the option "Keep group" is selected, then the user is also added to the group. So normally there cannot be a compability issue with the auto group plugin. Which version are you using of this auto group plugin, I only find a plugin working in Moodle 2.5?.

    Please create a new issue ( in the bug tracker naming your Moodle and plugin versions, so I can reproduce the behaviour.


    Can you

  • Mon, Oct 4, 2021, 5:11 PM
    Hi Renaat,

    Thanks for responding

    Have added the issue. But as I said this behaviour is now consistent even after uninstalling both plugins and installing just course completion enrolment. What are the conditions under which a user is not auto added to the next course but is shown under + sign instead?

  • Renaat
    Mon, Oct 4, 2021, 10:06 PM
    Hello Vinay,

    this plugin does only work in the future, it does not automatically enrols people who completed a course in the past (Otherwise it would be impossible to unenrol people, as they would be reenrolled again and again automatically). Therefore you have to enrol the students who completed the course in the past manually.


  • Tue, Oct 5, 2021, 4:20 PM
    Hi Renaat,

    We have been trying with adding users afresh to course A and completing the course. The expectation is that they then get into course B, configured for this behaviour. So the users are not past users.

    I am really keen to know the conditions in which it shows them against the + sign instead of enrolling automatically. We can then modify our setup to avoid this issue. Right now we are blocked and thinking of looking at other options like listening for completion event ourselves.

  • Renaat
    Tue, Oct 5, 2021, 10:28 PM
    Hi Vinay,

    please continue this discussion in the tracker, providing steps and screenshots explaining your problem. For me it is impossible to know what you mean by "I see + sign".

  • Wed, Oct 6, 2021, 7:52 PM
    Many students in MEASA and APAC regions are having trouble accessing the next course in the sequence. I've tested this in the US and I do not have any issues. Does anyone know of issues relating to different geographical regions or have they experienced this issue?
  • Renaat
    Thu, Oct 7, 2021, 4:27 PM
    Hello Paul,

    what do you mean by MANY? I personally run this plugin on servers focusing on East Africa, the US, Mexico, Vietnam, Europe, but also globally, and we have no students complaining....

  • Thu, Oct 7, 2021, 5:10 PM
    Hello Renaat,

    If 180 students self enroll in course 1, then about 20% of those students say they can not access course 2. It seems to be regional, mostly in MEASA. Do you have any suggestions? Could a Firewall or Cisco VPN cause this?

    Other students in Europe, Latin America and the US reported problems early after I installed the plugin, but I was able to determine that they needed to wait a couple of minutes before accessing the next course so CRON could report the completions status.

  • Renaat
    Thu, Oct 7, 2021, 6:30 PM
    Hi Paul,

    can you open an issue in the tracker ( I will need screenshots and logs, but also your Moodle and plugin versions.

    I suspect it has nothing to do with a firewall or VPN, but with the timezone. Is your server configured using GMT? Most automatic tests are using the Australian time zone, so perhaps this issue remains undetected in Behat.

  • Fri, Oct 8, 2021, 12:08 AM
    Hi Renaat,

    I just had a look at the server time zone. It is not configured to GMT (UTC). It's configured to Europe/London. Do you think that this could be the problem?

  • Renaat
    Wed, Oct 13, 2021, 4:15 PM
    Hi Paul,

    I cannot reproduce the problem, not in a test environment (, but also not in real life. First I thought that users from time zones before the server timezone perhaps could have issues, but in my Moodle environments this is not happening.

  • Thu, Oct 14, 2021, 6:23 PM
    Hi Renaat,

    Do you think setting the server time to UTC would help?
  • Renaat
    Sat, Oct 16, 2021, 1:21 AM
    Hello Paul,

    As far as I can remember, Greenwich is located next to London, so changing the Europe/London into GMT (Greenwich Mean Time) will not work. One you can change the Moodle timezone, but also the PHP timezone and the Operating System timezone. But this is far too complex and to early in the problem solving process.

    I still do not know what you mean by "Many students in MEASA and APAC regions are having trouble accessing the next course in the sequence", What do they see? Which errors are in the logs? Why are some students enrolled and others not?

  • Wed, Nov 10, 2021, 5:20 AM
    Hello Mr. Debleu,

    Thanks for this nice plugin. It really make a difference for us!

    I was wondering about the 'enrolment Start date'...
    Is there a way to set it to the 'course Start date'? (just like for the manual enrollment method).

    This will allow us to only update the course Start date instead of going into the enrolment method.

    Best regards
  • Renaat
    Thu, Nov 11, 2021, 4:05 PM
    Hello Maxime,

    Thank you for your feedback.
    Please submit an feature request in the bug tracker ( Provide a full storyboard of how it could be implemented. But also find a good solution how a date change should be handled.

Please login to post comments