diff --git a/lib/accesslib.php b/lib/accesslib.php
index 065b1b0..b431670 100755
--- a/lib/accesslib.php
+++ b/lib/accesslib.php
@@ -3077,6 +3077,28 @@ function role_unassign($roleid=0, $userid=0, $groupid=0, $contextid=0, $enrol=NU
                             sync_metacourse($parent->parent_course);
                         }
                     }
+                } else if ($context->contextlevel < CONTEXT_COURSE) {
+
+                    if (!$child_contexts = get_child_contexts($context)) {
+                        foreach ($childe_contexts as $cc) {
+                            if ($cc->contextlevel == CONTEXT_COURSE) {
+                                if (!has_capability('moodle/course:view', $context, $ra->userid)) {
+                                    // remove from groups
+                                    groups_delete_group_members($context->instanceid, $ra->userid);
+
+                                    // delete lastaccess records
+                                    delete_records('user_lastaccess', 'userid', $ra->userid, 'courseid', $context->instanceid);
+                                }
+
+                                //unassign roles in metacourses if needed
+                                if ($parents = get_records('course_meta', 'child_course', $context->instanceid)) {
+                                    foreach ($parents as $parent) {
+                                        sync_metacourse($parent->parent_course);
+                                    }
+                                }
+                            }
+                        }
+                    }
                 }
 
                 if ($fireevent) {
