diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 9958d72d831b8978178301c8fa7123d0222e47e4..d5552c5e03a37d530d1355c99ef56706616e5380 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -24,6 +24,16 @@ class ViewOwnPersonalNotes(BooleanPreference):
     verbose_name = _("Allow users to view their own personal notes")
 
 
+@site_preferences_registry.register
+class RegisterAbsenceAsPrimaryGroupOwner(BooleanPreference):
+    section = alsijil
+    name = "register_absence_as_primary_group_owner"
+    default = True
+    verbose_name = _(
+        "Allow primary group owners to register future absences for students in their groups"
+    )
+
+
 @site_preferences_registry.register
 class CarryOverDataToNextPeriods(BooleanPreference):
     section = alsijil
diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 3e4ccd46162123dae4ef039d6657464a976494eb..0e30bebb51ff664dc1a8869d8528cb084e5731c3 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -129,7 +129,10 @@ register_absence_predicate = has_person & (
     has_global_perm("alsijil.register_absence")
     | has_person_group_object_perm("core.register_absence_group")
     | has_object_perm("core.register_absence_person")
-    | is_person_primary_group_owner
+    | (
+        is_person_primary_group_owner
+        & is_site_preference_set("alsijil", "register_absence_as_primary_group_owner")
+    )
 )
 add_perm("alsijil.register_absence", register_absence_predicate)