General plugins (Local) ::: local_sandbox
Maintained by Ulm University, Alexander Bias
Moodle plugin which programatically restores courses to predefined course states. It can be used to provide playground moodle courses which will be cleaned periodically.
Latest release:
263 sites
43 fans
Current versions available: 19

Providing sandbox courses to your users makes sense for simplifying live training courses or for letting new Moodle users explore the features of Moodle. However, manually resetting sandbox courses after a live training session or after a certain amount of time is a daunting task.

If you want to get rid of this senseless job of resetting courses periodically manually, this plugin is for you.

Please see README file for details about the usage and features of this plugin.

No support in the comments section on this page

Please note that we don't provide any support for this plugin in the comments section on this page anymore.

We appreciate your commendation and reviews for this plugin in the comments. For bug reports and support requests, please read the extensive information in the plugin's README file first and create, if needed, a ticket in the bug tracker which is linked below.

Thanks for your cooperation.


Screenshot #0


Ulm University (Lead maintainer)
Alexander Bias: Maintainer
Kathrin Osswald: Developer
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Tue, May 26, 2015, 1:21 AM
    Hi Bernhard,

    up to now, we didn't have the time to check our plugins on 2.9 thoroughly. I assume our testing period will start in June.

    Did you test Sandbox on 2.9 and did encounter any problems? If yes, I might be able to have a look at it earlier and provide some quick fix.

  • Tue, Sep 29, 2015, 10:30 PM
    Hi Sebastien,

    > If so, is there a way to have moodle's course backup automatically be stored there?

    Give Moosh a try. It's a command line tool and one of its functions, course-backup, allows you to specify the location where you want the backup file to be saved as well as the file name.

    For more information, see

    Best regards,

  • Wed, Nov 18, 2015, 8:18 PM
    Thanks for this plugin! Is there a way to force the course ID to be the same as my 'original' sandbox course (happy to change code) - two reasons:
    1. my sandbox is hardcoded into menus, so when the course id changes, the link breaks sad
    2. the sandbox will reset every day, so my course ID number is going to increment very rapidly.

    Obviously, the second is not a huge issue, but the first is quite important.

    The course ID seems to in classes/task/restore_courses.php - I tried...

    $newcourseid = $oldcourseid;


    $newcourseid = '19';

    at the start of the // Create new course section, but neither option works.

    Any advice?
  • Wed, Nov 18, 2015, 8:33 PM

    I can't do anything about 2., that's just how the plugin works at the moment.

    But for 1., you can change your hardcoded link form to As the course's shortname will be kept for the resetted course, this link will continue to work. And you don't have to hack the plugin ;)

  • Wed, Nov 18, 2015, 9:00 PM
    Oh yeh, why didn't I think of that! Doh!
    Thanks smile
  • Mon, Mar 28, 2016, 6:40 PM
    Testing the plugin with:
    moodle 3.03.
    v3.0-r2 (2016021000)
    /var/www/clients/client1/web1/private/moodledata/sandbox - (permission: -R 777)
    getting email sandbox notification :
    1 NOTICE: Sandbox has restored 0 courses
    1 WARNING: There is no existing course with shortname "demo_lms", skipping
    backupfile name - backup-moodle2-course-6-demo_lms-20160328-1326.mbz
    sandbox backup file "demo_lms.mbz"
    what i'm doing wrong?
    Thank you
  • Tue, Mar 29, 2016, 3:31 AM

    based on your posted message, local_sandbox is looking for a course which has a shortname called "demo_lms" which it can reset to the state saved in demo_lms.mbz. If such a course does not exist, you can either change the shortname of the course you want to reset to "demo_lms" or you can rename demo_lms.mbz to the shortname of the course you want to reset.

  • Wed, May 25, 2016, 3:53 AM
    Is this the plugin that is in effect on to reset the course every hour?

  • Wed, May 25, 2016, 4:00 AM
    Hi Matt,

    no, it isn't.
  • Tue, Jun 28, 2016, 11:40 PM
    Hello. I've just installed this plugin on my Moodle 3.1 and have noticed that new courses are being created instead of existing courses being reset. Instead of resetting the existing courses, the plugin seems to be deleting the existing course and creating a new one. I know this because the restored course has a new course ID. Not sure if I have set this up correctly. Any advice will be much appreciated.
  • Wed, Jun 29, 2016, 2:44 AM
    Hi Abdul,

    you're right, that's just how the plugin works at the moment. This topic has been discussed before in this comment seciton here, please have a look at the other comments - especially from Jon Bolton - if you like.

  • Thu, Jun 30, 2016, 12:50 AM
    Thanks for the suggestion Alex!
  • Wed, Jan 11, 2017, 1:21 AM
    Hi Alexander,

    This is a nice plugin, I was wondering if it is possible to choose which courses are restored at what time. For example, only restore some courses weekly and some on a monthly basis if it is possible.

    Thank you.
  • Wed, Jan 11, 2017, 4:02 AM
    Hi Sanjeet,

    thanks for your proposal.

    Your proposal is feasible, I would imagine to let the admin add a schedule for every course backup file like he can configure scheduled tasks in Moodle core. However, we don't have any need for this feature at Ulm University and thus don't have resources to implement it.

    If you are a developer or have an experienced developer near you, I would be happy to discuss possible implementations with you on and get a pull request from you on

    Thanks for understanding,
  • Fri, Feb 28, 2020, 8:43 PM
    Hi, I am wondering : when the course is reseted, does the plugin suppress all data like a reinitiliazition would ? (e.g. answers to tests ; forum posts and so on...). Thanks ! smile

1 2 3
Please login to post comments