Restriction by course completion

Availability restriction ::: availability_coursecompleted
Maintained by RenaatRenaat Debleu
Restrict module and section access based on course completion.
Latest release:
2575 sites
104 fans
Current versions available: 9

This availability condition makes it easy to show modules or sections only when a user completed a course. A course certificate is a good sample, but it can also be used to close discussion forums, hide quizzes or exams when a user finished a course.

Course completion is something else than doing all activities, read the docs on using course completion first! Also check the global documentation about conditional availability conditions.


  1. Unpack the zip file into the availability/condition/ directory. A new directory will be created called coursecompleted.
  2. Go to Site administration > Notifications to complete the plugin installation.


  1. Goto "Administration" > "Advanced features", and ensure that "Enable completion tracking" is set to yes.
  2. Make sure "Enable completion tracking" is set to "yes" in the course settings.
  3. Goto "Administration" > "Course administration" > "Course completion", and configure the the conditions required for course completion. Note: you must set some conditions, you cannot just set the "completion requirements" option at the top. Save.
  4. Goto "Administration" > "Course adminiatration". Make sure you can now "Course completion" listed under "reports". If you cannot see this report, then course completion has not been set correctly.
  5. Start restricting


Coverage Status tests



Screenshot #0
Screenshot #1


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

Comments RSS

Show comments
  • Pingtao Ye
    Thu, Jan 4, 2018, 5:23 AM
    Hi, why this plugin is not available for MDL 3.0?
  • Renaat
    Thu, Jan 4, 2018, 4:46 PM
    Sorry about this, somewhere I forgot to include a Moodle 3.0 version. This problem should now be fixed.
  • Ryan Bernstein
    Mon, Feb 12, 2018, 10:24 PM
    Hi Renaat, Thanks for this great plugin. I didn't quite know where to post this, but we were wondering if there's ever been discussion of setting a restriction at the course level. This plugin lets us restrict activities/modules, but we want to restrict an entire course based upon the completion of another course. Hoping you can provide insight. Thanks! Ryan
  • Renaat
    Tue, Feb 13, 2018, 12:15 AM
    Hello Ryan,

    Restricting at course level is default for Moodle courses: as long as a person is not enrolled into a course, he/she does not have access to this course. So I do not understand your question as nobody can access your course as long as he/she is not enrolled.

    But it is possible to enroll someone only upon course completion: have a look a the course completed enrolment plugin. This plugin enrolls users who successfully complete course 1 into course 2. This way access to course 2 is restricted until participants complete course 1.
  • Ryan Bernstein
    Tue, Feb 13, 2018, 1:19 AM
    Thank you Renaat. I will check out the course completed enrolment plugin. We don't want to restrict enrollments, we want to restrict access to a course. Our Moodle syncs with our registration software, and we want students to be enrolled in classes they register for. We have created an online learning course that is a prerequisite for online courses. We don't students to have access to courses they've registered for until they complete the online learning course. I hope that makes sense. Thank you very much.
  • Ricardo Caiado
    Thu, Apr 19, 2018, 2:24 AM
    I got this error message when I try to upload...

    Downloading availability_coursecompleted ... OK
    Validating availability_coursecompleted ... Error
    [Error] Required Moodle version [2017111302]
    Installation aborted due to validation failure
  • Renaat
    Thu, Apr 19, 2018, 11:54 AM
    Sorry about this, I will downgrade the required Moodle version from 2017111302 to 2017111300 so the problem should disappear.
  • User Mens
    Mon, Nov 4, 2019, 12:53 AM
    Hi All
    I have 2 Course A and B Student Already Enroll Both course I need B course or B Course activity only access student must complete A course how to achieve this thing ? any Idea please help me
  • Renaat
    Mon, Nov 4, 2019, 1:15 AM
    Hi Shiraz,

    this plugin only restricts access to activities upon completion of this course. If you want to enrol a student when they complete a course, you can use the plugin.

    Course A: configure course completion
    Course B: add enrolment upon completion of course A
    => When a student completes course A, he/she is enrolled into course B
  • Tom Arild Sørli
    Mon, May 25, 2020, 5:08 PM
    I can't get this plugin to work..
    If I add the restriction "Course completed", I only get to choose "Yes" og "No".. There is no box to choose which course I want the student to have passed..
    I have moodle version 3.8
  • Renaat
    Tue, May 26, 2020, 12:26 AM
    Hi Tom,

    this plugin restricts access until or after THIS course is completed. If you want to restrict access upon another course, you will need another plugin: restrict access upon other course completion.

  • Viviane Vicente
    Wed, Jun 29, 2022, 9:32 PM
    meu plugin apareceu esse erro, o que fazer?
    exceçao - class availability completion/condition not found
  • Renaat
    Wed, Jun 29, 2022, 9:58 PM
    Hello Viviane,

    Sorry my Portuguese in non existing.
    You have an problem with the availability_completion plugin, not with this this plugin (we use availability_coursecompletion)

    What to do?
    - undo the changes you made to the availability_completion plugin
    - check if other availability plugins depend on the availability_pluin are up to date

  • Daniel
    Fri, Feb 3, 2023, 10:13 PM
    3.11---> 4.1
    Exception : Class '\availability_coursecompleted\frontend' not found
  • Renaat
    Fri, Feb 3, 2023, 11:53 PM
    Hello Daniel,

    THX for the problem report. Can you report a complete error report in the tracker ( I'm particularly interested in your PHP version.

    Because the exception starts with a \ this is an auto load problem that should go away after you purge your caches.

    Can you confirm?
1 2 3
Please login to post comments