diff --git a/aleksis/apps/chronos/managers.py b/aleksis/apps/chronos/managers.py
index 9689ef0b167a6706de08e037c1a1a747a6f3a1b7..063829ed7d9146daf1fcaa400a1535c077abd4d2 100644
--- a/aleksis/apps/chronos/managers.py
+++ b/aleksis/apps/chronos/managers.py
@@ -212,6 +212,15 @@ class LessonEventQuerySet(RecurrencePolymorphicQuerySet):
         """Get all lesson events that are amending other events."""
         return self.filter(self.amending_q())
 
+    @staticmethod
+    def current_changes_q() -> Q:
+        """Get all lesson events that are current changes."""
+        return Q(amends__isnull=False) | Q(current_change=True)
+
+    def current_changes(self) -> "LessonEventQuerySet":
+        """Get all lesson events that are current changes."""
+        return self.filter(self.current_changes_q())
+
 
 class SupervisionEventQuerySet(LessonEventQuerySet):
     pass
diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index c212dd43934893cb2facd036493da99d298eabd4..3c8107ca8f2a79389dfaf3a628a7fb574fdcaac4 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -215,6 +215,9 @@ class LessonEvent(CalendarEvent):
         blank=True,
     )
 
+    # current_change=True will show this event in substitutions table
+    current_change = models.BooleanField(default=False, verbose_name=_("Is this a current change?"))
+
     @property
     def actual_groups(self: LessonEvent) -> QuerySet[Group]:
         """Get list of the groups of this lesson event."""
@@ -431,6 +434,7 @@ class LessonEvent(CalendarEvent):
             not_amended = params.get("not_amended", False)
             not_amending = params.get("not_amending", False)
             amending = params.get("amending", False)
+            current_changes = params.get("current_changes", False)
             own = params.get("own", False)
 
             if not_amended:
@@ -442,6 +446,9 @@ class LessonEvent(CalendarEvent):
             if amending:
                 q = q & LessonEventQuerySet.amending_q()
 
+            if current_changes:
+                q = q & LessonEventQuerySet.current_changes_q()
+
             if request and "own" in params:
                 if own:
                     q = q & LessonEventQuerySet.for_person_q(request.user.person)
diff --git a/aleksis/apps/chronos/util/build.py b/aleksis/apps/chronos/util/build.py
index a84e4800040897a99e5be03b2318b9e1c4a8e854..2a43d0d0c5b1e27a9624476c38409c1938aa5b84 100644
--- a/aleksis/apps/chronos/util/build.py
+++ b/aleksis/apps/chronos/util/build.py
@@ -12,19 +12,21 @@ def build_substitutions_list(wanted_day: date) -> tuple[list[dict], set[Person],
     lesson_events = LessonEvent.get_single_events(
         datetime.combine(wanted_day, time.min),
         datetime.combine(wanted_day, time.max),
-        params={"amending": True},
+        params={"current_changes": True},
         with_reference_object=True,
     )
 
     for lesson_event in lesson_events:
+        ref_object = lesson_event["REFERENCE_OBJECT"]
         affected_teachers.update(lesson_event["REFERENCE_OBJECT"].teachers.all())
-        affected_teachers.update(lesson_event["REFERENCE_OBJECT"].amends.teachers.all())
         affected_groups.update(lesson_event["REFERENCE_OBJECT"].groups.all())
-        affected_groups.update(lesson_event["REFERENCE_OBJECT"].amends.groups.all())
+        if ref_object.amends:
+            affected_teachers.update(ref_object.amends.teachers.all())
+            affected_groups.update(ref_object.amends.groups.all())
 
         row = {
             "type": "substitution",
-            "sort_a": lesson_event["REFERENCE_OBJECT"].group_names,
+            "sort_a": ref_object.group_names,
             "sort_b": str(lesson_event["DTSTART"]),
             "el": lesson_event,
         }
@@ -34,13 +36,15 @@ def build_substitutions_list(wanted_day: date) -> tuple[list[dict], set[Person],
     supervision_events = SupervisionEvent.get_single_events(
         datetime.combine(wanted_day, time.min),
         datetime.combine(wanted_day, time.max),
-        params={"amending": True},
+        params={"current_changes": True},
         with_reference_object=True,
     )
 
     for supervision_event in supervision_events:
-        affected_teachers.update(supervision_event["REFERENCE_OBJECT"].teachers.all())
-        affected_teachers.update(supervision_event["REFERENCE_OBJECT"].amends.teachers.all())
+        ref_object = supervision_event["REFERENCE_OBJECT"]
+        affected_teachers.update(ref_object.teachers.all())
+        if ref_object.amends:
+            affected_teachers.update(ref_object.amends.teachers.all())
 
         row = {
             "type": "supervision_substitution",