Teaching with Moodle

Best way to | drip feed sections to a group

Just wondering . . .
Best way to | drip feed sections to a group
Group Particularly helpful Moodlers

I know how to do this (lots of groups, and change the permissions each week etc) but I'm curious about if there is a better way.


  1. Clusters start each Monday in a seven week class.
  2. They need access to a new section in the course each week (on a Monday) - as well as remaining with access to the previous sections.
  3. ie A new cluster starts each Monday, and progress their way through with an additional section each week.
  4. Once they finish they go into an alumni course.

Clear as mud?  I'm wondering what is the approach that has least administrative overhead each Monday.

It seems to me I have seven actions each Monday:

  1. Set up new cluster into a group (1).
  2. Add access to a new section for each group (2) - (6).
  3. Close off access to the final group (7), add them to an alumni course.

This is just using standard Moodle, and changing the settings each week.

What I am curious about is if I can have seven groups that just make their way through the sequence with NO action required from me.

Then each Monday I empty the group that is finished, start a new group for the new entrants, and every other group advances with a new section each week, with no intervention from me.

Maybe there is a plugin or a secret knack, but I don't want a core hack.


Average of ratings: -
Picture of Just H
Re: Best way to | drip feed sections to a group
Group Particularly helpful Moodlers

Hi Derek, have you had a look at the periods plugin? From memory it could take care of your 1-3 but not sure about pushing them into a new course requirement.


If that doesn't work for you read on ...

We've had a very similar scenario for the past decade or so:

  1. 17 "Block" course where each block is eight days long
  2. Each block has multiple topics within it
  3. Every eight days the students needs to be granted access to the next block and retain previous block access
  4. At end of the course the students need to be enrolled in another course

Only real difference in our scenarios I can see, other than length of course, is we can have multiple cohorts going through the course at the same time (a block or two apart), and due to lack of equipment, the blocks need to automatically be shuffled around for a given cohort sad

We handle it using groups, groupings and access restrictions (not surprisingly) and a script called nightly by a cron job:

  1. 17 groupings set up named by block i.e. Block 1 to Block 17
  2. Each cohort is put into their own group
  3. Access restrictions for each topic are set up based on group and groupings
  4. Cron job set to run every day at midnight
  5. At the start of the course for a given cohort their group is put into the Block 1 grouping
  6. At midnight each night the script is run and checks to see if the group has been in a Block (grouping) for eight days, if so, it is pushed into the next grouping automatically (we get an auto email from the cron job telling us what the status is)
  7. If there is no next grouping, the members of the cohort are enrolled in the continuation course.

There's no hack to core files that I'm aware of, the code we used is self contained (just need to update a couple of things now and then such as course and grouping IDs as we've changed things over time) and just need to make sure we copy it back into place after an upgrade (same deal as with plugins).

Only real admin overhead is ensuring the group in question is added to the grouping by midnight of day 1 of the course. All being well, just sit back and watch them progress through the course and eventually get pushed into the continuation course.

Happy to have a look at the code we use to see if there's anything site specific (doubt there is but it's my colleagues side of things more than mine) and get it to you to play with if you think it may be of use.


Average of ratings: -
Picture of Chris Kenniburg
Re: Best way to | drip feed sections to a group
Group Particularly helpful MoodlersGroup Plugin developers

This plugin might help: https://moodle.org/plugins/mod_reengagement

That is a pretty complex use-case you've got.  

Average of ratings: Useful (1)
Re: Best way to | drip feed sections to a group

How about a different copy of the course for each cluster? Within each course, edit the sections and restrict access by date, so that each opens on the right day. That might take care of actions 2-6, or at least let you do all of that at once instead of spread out over seven Mondays. And two or more sets of these courses would let you do all of these date changes at your leisure: Work in Set B while the Set A course are in use. The Dates report plugin might help, too. It won’t let you directly edit the section release dates on the reports page, but it does give links to each sections settings page on the one report page.

Or something like that. I haven’t tried this…

I would be interested to hear if you find a great solution - it would be a great way to handle some self-paced courses.

Average of ratings: -
Picture of C Behan
Re: Best way to | drip feed sections to a group
Group Particularly helpful Moodlers

Hi Derek,

I think there are definitely ways you can make your life a little easier.

A way that looks quite simple (but I haven't used it myself or tested it) - would be to restrict the topic using this plugin: https://moodle.org/plugins/availability_days - I think it would work if you used enrollment start dates correctly. So section 2 is available 7 days after a user's enrollment starts, section 3 is available 14 days after, etc.

Another way, without using plugins, would be to use nested restrictions (restriction set) for each topic. You would still have to go in every so often as new groups come in or as you re-use groups but I think it would cut down a lot of your admin. See screenshot attached.

Average of ratings: Useful (1)