diff --git a/aleksis/apps/alsijil/data_checks.py b/aleksis/apps/alsijil/data_checks.py
index 98decd9aaa5cfac0ace215146ab9740a19a1927b..be36446beaf9d1bfc2474df29242f47a23d9a1c8 100644
--- a/aleksis/apps/alsijil/data_checks.py
+++ b/aleksis/apps/alsijil/data_checks.py
@@ -56,11 +56,15 @@ class NoPersonalNotesInCancelledLessonsDataCheck(DataCheck):
     def check_data(cls):
         from .models import PersonalNote
 
-        personal_notes = PersonalNote.objects.filter(
-            lesson_period__substitutions__cancelled=True,
-            lesson_period__substitutions__week=F("week"),
-            lesson_period__substitutions__year=F("year"),
-        ).prefetch_related("lesson_period", "lesson_period__substitutions")
+        personal_notes = (
+            PersonalNote.objects.not_empty()
+            .filter(
+                lesson_period__substitutions__cancelled=True,
+                lesson_period__substitutions__week=F("week"),
+                lesson_period__substitutions__year=F("year"),
+            )
+            .prefetch_related("lesson_period", "lesson_period__substitutions")
+        )
 
         for note in personal_notes:
             logging.info(f"Check personal note {note}")
@@ -119,9 +123,9 @@ class LessonDocumentationOnHolidaysDataCheck(DataCheck):
 
         holidays = Holiday.objects.all()
 
-        documentations = LessonDocumentation.objects.filter(
-            ~Q(topic="") | ~Q(group_note="") | ~Q(homework="")
-        ).annotate(actual_date=weekday_to_date)
+        documentations = LessonDocumentation.objects.not_empty().annotate(
+            actual_date=weekday_to_date
+        )
 
         q = Q()
         for holiday in holidays:
@@ -155,9 +159,7 @@ class PersonalNoteOnHolidaysDataCheck(DataCheck):
 
         holidays = Holiday.objects.all()
 
-        personal_notes = PersonalNote.objects.filter(
-            ~Q(remarks="") | Q(absent=True) | ~Q(late=0) | Q(extra_marks__isnull=False)
-        ).annotate(actual_date=weekday_to_date)
+        personal_notes = PersonalNote.objects.not_empty().annotate(actual_date=weekday_to_date)
 
         q = Q()
         for holiday in holidays:
diff --git a/aleksis/apps/alsijil/managers.py b/aleksis/apps/alsijil/managers.py
index b2589345adac4c2c02159ea54fc872fe9055408a..7350cf375a12205b7ebe56b9d5fd57bd045a2477 100644
--- a/aleksis/apps/alsijil/managers.py
+++ b/aleksis/apps/alsijil/managers.py
@@ -1,3 +1,6 @@
+from django.db.models import QuerySet
+from django.db.models.query_utils import Q
+
 from aleksis.core.managers import CurrentSiteManagerWithoutMigrations
 
 
@@ -21,3 +24,21 @@ class PersonalNoteManager(CurrentSiteManagerWithoutMigrations):
             )
             .prefetch_related("extra_marks")
         )
+
+
+class PersonalNoteQuerySet(QuerySet):
+    def not_empty(self):
+        """Get all not empty personal notes."""
+        return self.filter(
+            ~Q(remarks="") | Q(absent=True) | ~Q(late=0) | Q(extra_marks__isnull=False)
+        )
+
+
+class LessonDocumentationManager(CurrentSiteManagerWithoutMigrations):
+    pass
+
+
+class LessonDocumentationQuerySet(QuerySet):
+    def not_empty(self):
+        """Get all not empty lesson documentations."""
+        return self.filter(~Q(topic="") | ~Q(group_note="") | ~Q(homework=""))
diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py
index 3102329858671792d55ea193add494b1584a7500..5a41074b78c25e98ea2daecb94bd769ed647d694 100644
--- a/aleksis/apps/alsijil/models.py
+++ b/aleksis/apps/alsijil/models.py
@@ -12,7 +12,12 @@ from aleksis.apps.alsijil.data_checks import (
     NoPersonalNotesInCancelledLessonsDataCheck,
     PersonalNoteOnHolidaysDataCheck,
 )
-from aleksis.apps.alsijil.managers import PersonalNoteManager
+from aleksis.apps.alsijil.managers import (
+    LessonDocumentationManager,
+    LessonDocumentationQuerySet,
+    PersonalNoteManager,
+    PersonalNoteQuerySet,
+)
 from aleksis.apps.chronos.mixins import WeekRelatedMixin
 from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.apps.chronos.util.date import get_current_year
@@ -60,7 +65,7 @@ class PersonalNote(ExtensibleModel, WeekRelatedMixin):
         ExcusesWithoutAbsences,
     ]
 
-    objects = PersonalNoteManager()
+    objects = PersonalNoteManager.from_queryset(PersonalNoteQuerySet)()
 
     person = models.ForeignKey("core.Person", models.CASCADE, related_name="personal_notes")
     groups_of_person = models.ManyToManyField("core.Group", related_name="+")
@@ -138,6 +143,8 @@ class LessonDocumentation(ExtensibleModel, WeekRelatedMixin):
     Non-personal, includes the topic and homework of the lesson.
     """
 
+    objects = LessonDocumentationManager.from_queryset(LessonDocumentationQuerySet)()
+
     data_checks = [LessonDocumentationOnHolidaysDataCheck]
 
     week = models.IntegerField()
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index d5bbf061469b6e6b146fc715edbfc94ae0c32161..170978aad3e22983357f7bf0facaf9031f421ad4 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -407,7 +407,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
         .prefetch_related(
             "lesson_period__substitutions", "lesson_period__lesson__teachers", "groups_of_person"
         )
-        .filter(~Q(remarks="") | Q(absent=True) | ~Q(late=0) | Q(extra_marks__isnull=False))
+        .not_empty()
         .filter(
             Q(lesson_period__lesson__groups=group)
             | Q(lesson_period__lesson__groups__parent_groups=group)
@@ -415,7 +415,7 @@ def full_register_group(request: HttpRequest, id_: int) -> HttpResponse:
     )
     documentations = (
         LessonDocumentation.objects.select_related("lesson_period")
-        .filter(~Q(topic="") | ~Q(group_note="") | ~Q(homework=""))
+        .not_empty()
         .filter(
             Q(lesson_period__lesson__groups=group)
             | Q(lesson_period__lesson__groups__parent_groups=group)
@@ -625,9 +625,7 @@ def overview_person(request: HttpRequest, id_: Optional[int] = None) -> HttpResp
     unexcused_absences = allowed_personal_notes.filter(absent=True, excused=False)
     context["unexcused_absences"] = unexcused_absences
 
-    personal_notes = allowed_personal_notes.filter(
-        Q(absent=True) | Q(late__gt=0) | ~Q(remarks="") | Q(extra_marks__isnull=False)
-    ).order_by(
+    personal_notes = allowed_personal_notes.not_empty().order_by(
         "-lesson_period__lesson__validity__date_start",
         "-week",
         "lesson_period__period__weekday",