diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py
index ff5decdb8a04468ba718b364dc23a9a4ebef27a0..41205b273cd24ad5e36787b99fba3a172bac10df 100644
--- a/aleksis/apps/alsijil/managers.py
+++ b/aleksis/apps/alsijil/managers.py
@@ -11,7 +11,7 @@ from calendarweek import CalendarWeek
 from aleksis.apps.chronos.models import LessonEvent
 from aleksis.core.managers import (
     AlekSISBaseManagerWithoutMigrations,
-    RecurrencePolymorphicManager,
+    CalendarEventManager,
 )
 
 if TYPE_CHECKING:
@@ -73,7 +73,7 @@ class GroupRoleAssignmentQuerySet(QuerySet):
         return self.filter(Q(groups=group) | Q(groups__child_groups=group))
 
 
-class DocumentationManager(RecurrencePolymorphicManager):
+class DocumentationManager(CalendarEventManager):
     """Manager adding specific methods to documentations."""
 
     def for_school_term(self, school_term: "SchoolTerm") -> QuerySet["Documentation"]:
@@ -107,7 +107,7 @@ class DocumentationManager(RecurrencePolymorphicManager):
         )
 
 
-class ParticipationStatusManager(RecurrencePolymorphicManager):
+class ParticipationStatusManager(CalendarEventManager):
     """Manager adding specific methods to participation statuses."""
 
     pass
diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 0f3b25b24b70a5823830574cf724bc7cc8cfc9f6..4bdbaebbd15b0f40ed85e7ca0039c512cca54783 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -102,6 +102,3 @@ class GroupTypePriorityCoursebook(ModelChoicePreference):
         "select field on the coursebook overview page"
     )
     help_text = _("If you leave it empty, no group type will be used.")
-
-    def get_queryset(self):
-        return GroupType.objects.managed_and_unmanaged()
diff --git a/aleksis/apps/alsijil/schema/extra_marks.py b/aleksis/apps/alsijil/schema/extra_marks.py
index be062b7ed3248a6836c45ee0d4d75616ed65fa54..67a7c7096277d86f1662ebf54875e02a0c7386d2 100644
--- a/aleksis/apps/alsijil/schema/extra_marks.py
+++ b/aleksis/apps/alsijil/schema/extra_marks.py
@@ -29,6 +29,7 @@ class ExtraMarkBatchCreateMutation(BaseBatchCreateMutation):
         model = ExtraMark
         fields = ("short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook")
         optional_fields = ("name",)
+        permissions = ("alsijil.create_extramark_rule",)
 
     @classmethod
     def check_permissions(cls, root, info, input):  # noqa
@@ -40,6 +41,7 @@ class ExtraMarkBatchCreateMutation(BaseBatchCreateMutation):
 class ExtraMarkBatchDeleteMutation(BaseBatchDeleteMutation):
     class Meta:
         model = ExtraMark
+        permissions = ("alsijil.create_extramark_rule",)
 
     @classmethod
     def check_permissions(cls, root, info, input):  # noqa
@@ -52,6 +54,7 @@ class ExtraMarkBatchPatchMutation(BaseBatchPatchMutation):
     class Meta:
         model = ExtraMark
         fields = ("id", "short_name", "name", "colour_fg", "colour_bg", "show_in_coursebook")
+        permissions = ("alsijil.create_extramark_rule",)
 
     @classmethod
     def check_permissions(cls, root, info, input):  # noqa
diff --git a/aleksis/apps/alsijil/schema/participation_status.py b/aleksis/apps/alsijil/schema/participation_status.py
index bb90b9bea09a01e13fdbcc693104c471c8cd6d3d..3b7fbe8b346eb783f0ecb265df6b6f84a34c23ab 100644
--- a/aleksis/apps/alsijil/schema/participation_status.py
+++ b/aleksis/apps/alsijil/schema/participation_status.py
@@ -86,6 +86,7 @@ class ParticipationStatusBatchPatchMutation(BaseBatchPatchMutation):
             "tardiness",
         )  # Only the reason and tardiness can be updated after creation
         return_field_name = "participationStatuses"
+        permissions = ("alsijil.edit_participation_status_for_documentation_with_time_range_rule",)
 
     @classmethod
     def check_permissions(cls, root, info, input, *args, **kwargs):  # noqa: A002