diff --git a/aleksis/apps/alsijil/models.py b/aleksis/apps/alsijil/models.py
index a429fa2832523cfe152e8d9d5deda18d0a1a9de5..9e68ccd06773dc8b0f6ee65ccd16c81319b94a8b 100644
--- a/aleksis/apps/alsijil/models.py
+++ b/aleksis/apps/alsijil/models.py
@@ -11,7 +11,7 @@ from django.db.models.query_utils import Q
 from django.urls import reverse
 from django.utils import timezone
 from django.utils.formats import date_format
-from django.utils.timezone import localdate, localtime
+from django.utils.timezone import localdate, localtime, now
 from django.utils.translation import gettext_lazy as _
 
 from calendarweek import CalendarWeek
@@ -691,28 +691,47 @@ class Documentation(CalendarEvent):
 
     def touch(self):
         """Ensure that participation statuses are created for this documentation."""
-        # TODO: Check for preexisting absences in kolego
-
-        if self.participation_touched_at or not self.amends or self.datetime_start > localtime():
+        if (
+            self.participation_touched_at
+            or not self.amends
+            or self.value_start_datetime(self) > now()
+        ):
             # There is no source to update from or it's too early
             return
 
         lesson_event: LessonEvent = self.amends
         all_members = lesson_event.all_members
+        member_pks = [p.pk for p in all_members]
 
-        new_persons = Person.objects.filter(Q(pk__in=[p.pk for p in all_members])).prefetch_related(
-            "member_of"
+        new_persons = Person.objects.filter(Q(pk__in=member_pks)).prefetch_related("member_of")
+
+        # Get absences from Kolego
+        events = KolegoAbsence.get_single_events(
+            self.value_start_datetime(self),
+            self.value_end_datetime(self),
+            None,
+            {"persons": member_pks},
+            with_reference_object=True,
         )
+        kolego_absences_map = {a["REFERENCE_OBJECT"].person: a["REFERENCE_OBJECT"] for a in events}
+
         new_participations = []
         new_groups_of_person = []
         for person in new_persons:
-            participation_status = ParticipationStatus.objects.create(
+            participation_status = ParticipationStatus(
                 person=person,
                 related_documentation=self,
                 datetime_start=self.datetime_start,
                 datetime_end=self.datetime_end,
                 timezone=self.timezone,
             )
+
+            # Take over data from Kolego absence
+            if person in kolego_absences_map:
+                participation_status.fill_from_kolego(kolego_absences_map[person])
+
+            participation_status.save()
+
             new_groups_of_person += [
                 ParticipationStatus.groups_of_person.through(
                     group=group, participationstatus=participation_status
@@ -771,6 +790,11 @@ class ParticipationStatus(CalendarEvent):
         verbose_name=_("Base Absence"),
     )
 
+    def fill_from_kolego(self, kolego_absence: KolegoAbsence):
+        """Take over data from a Kolego absence."""
+        self.base_absence = kolego_absence
+        self.absence_reason = kolego_absence.reason
+
     def __str__(self) -> str:
         return f"{self.related_documentation.id}, {self.person}"