diff --git a/lib/accesslib.php b/lib/accesslib.php
index 065b1b0..dda2231 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) {
+
+                    $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) {
