diff --git a/aleksis/apps/alsijil/tasks.py b/aleksis/apps/alsijil/tasks.py
index 882bbc1ae20d73a22a8a067c9a5bb32b9409aa33..dbecfe16b69b53ae0c584cfb4ce2d9a8f252cdd9 100644
--- a/aleksis/apps/alsijil/tasks.py
+++ b/aleksis/apps/alsijil/tasks.py
@@ -157,6 +157,29 @@ def generate_full_register_printout(
         prefetched_persons.append(person)
 
     # NEXT begins here:
+    def prefetch_notable_participations(*prefetch_related):
+        return Prefetch(
+            "participations",
+            to_attr="notable_participations",
+            queryset=ParticipationStatus.objects
+            .exclude(
+                Q(absence_reason__isnull=True)
+                | Q(tardiness__isnull=True)
+                )
+            .select_related("absence_reason")
+            .prefetch_related(*prefetch_related),
+        )
+
+    def prefetch_personal_notes(*prefetch_related):
+        return Prefetch(
+            "new_personal_notes",
+            queryset=NewPersonalNote.objects
+            .exclude(
+                Q(note="")
+                | Q(extra_mark=None))
+            .select_related("extra_mark")
+            .prefetch_related(*prefetch_related),
+        )
 
     # build the query-set
     group = Group.objects.filter(pk=group)
@@ -198,40 +221,23 @@ def generate_full_register_printout(
     if include_person_overviews:
         doc_query_set = Documentation.objects.select_related("subject").prefetch_related("teachers"),
         context["members"] = context["members"].prefetch_related(
-            Prefetch(
-                "participations",
-                queryset=ParticipationStatus.objects
-                .exclude(
-                    Q(absence_reason__isnull=True)
-                    | Q(tardiness__isnull=True)
+            prefetch_notable_participations(
+                Prefetch(
+                    "related_documentation",
+                    queryset=doc_query_set,
                 )
-                .select_related("absence_reason")
-                .prefetch_related(
-                    Prefetch(
-                        "related_documentation",
-                        queryset=doc_query_set,
-                    ),
-                ),
-                to_attr="notable_participations",
             ),
-            Prefetch(
-                "new_personal_notes",
-                queryset=NewPersonalNote.objects
-                .exclude(
-                    Q(note="")
-                    | Q(extra_marks=None))
-                .prefetch_related(
-                    Prefetch(
-                        "documentation",
-                        queryset=doc_query_set,
-                    ),
-                    "extra_mark",
+            prefetch_personal_notes(
+                Prefetch(
+                    "documentation",
+                    queryset=doc_query_set,
                 )
             ),
         )
 
     if include_coursebook:
         context["documentations_by_day"] = {}
+        documentations.prefetch_related("participations", "personal_notes")
         for day in documentations.dates("datetime_start", "day"):
             context["documentations_by_day"][day] = documentations.filter(datetime_start__date=day)