Note: You are currently viewing documentation for Moodle 3.8. Up-to-date documentation for the latest stable version of Moodle may be available here: Dynamic rules.

Dynamic rules

From MoodleDocs

workplacelogo.png This feature is part of Moodle Workplace, which is available through Moodle Partners.


The dynamic rules feature allows you to create “if this then that” rules based on one or more conditions to execute the selected actions. Each plug-in implements its own conditions and actions to be used in any dynamic rule. Other Workplace features make use of dynamic rules to automate some of their actions, like issuing badges or certificates, or granting competencies.

Moodle Workplace

Creating dynamic rules

Dynamic rules can be accessed from the Workplace launcher.

We can create a new rule by clicking the "New rule" button and giving the rule a name. We tick the “enable matching frequency limitation” option to limit how many times this rule will be triggered in a certain period. For example, let's say that this rule cannot be triggered more than once in one hour.

Limiting number of dynamic rules

A site administrator can restrict the number of dynamic rules that can be created per site/tenant by adding the following line(s) to the site configuration (note that archived rules are also counted towards the limit, and rules created automatically by other plugins are not counted towards the limit):

$CFG->tool_dynamicrule_limitsenabled = true; $CFG->tool_dynamicrule_sitelimit = <VALUE>; $CFG->tool_dynamicrule_tenantlimit = <VALUE>;

Omitting this configuration, or setting tool_dynamicrule_limitsenabled value to false, indicates that no limit should be applied to the number of dynamic rules that can be created. Note that a tenant limit cannot exceed a site limit. Setting values to 0 will effectively disable rules creation.


On the conditions tab we'll find a listing of predefined conditions for each entity that can be evaluated in order to trigger some actions. Each condition has its own editable properties. For example, using the drop down menus let’s select users from the Department “Europe” and who have completed the onboarding program. Once they're configured properly we click on “Save Changes”.

We can always come back later and change or delete these settings using the "Edit condition" icon.

At the bottom of the tab, we can check how many users would meet these conditions, and by clicking on “view matching users” we can easily check the complete user listing.


Now let's switch to the actions tab, to define what we want to happen when the conditions are met. In this example, we want to allocate the users to a certification so we click on "Allocate users to certification" and select the appropriate certification.

Activating a rule

Now that the rule contains at least one condition and one action, we can activate it by clicking the Enable button. Prior to enabling we will be shown a notification to remind us of how many users will be affected by the rule. We click “enable” and the rule will be executed as an adhoc task during the next cron run.

Rule processing

Note that prior to processing a rule, each condition and action is validated for correctness. If at some future point a rule fails validation (for example because a course no longer exists) it will be disabled automatically and will be flagged as containing an error. Validation occurs each time a rule is processed. To re-enable such a rule, we must edit it and correct each condition and action.

For any event-based conditions (i.e. those that depend on an action taking place such as enrolling a user on a course), any matching conditions are evaluated immediately. The corresponding rule will be executed for the user who was affected by the event condition (i.e. the user who was enrolled on a course). All rules that contain non event-based conditions will be executed during each cron run.

Active/archived rules

The Active rules tab lists all rules that are currently active on your site. We can toggle whether an individual rule is enabled or not by using the Enable/Disable rule toggle in the rules table.

Pressing the Archive rule button will disable that rule and move it to the Archived tab, allowing it to be preserved for reference in the future. Archived rules cannot be enabled again until they are moved back to the Active tab.