diff --git a/aleksis/apps/chronos/util/build.py b/aleksis/apps/chronos/util/build.py
index 2a43d0d0c5b1e27a9624476c38409c1938aa5b84..e8f0a2cb7a61d2b854125377bd1f9cb05574de10 100644
--- a/aleksis/apps/chronos/util/build.py
+++ b/aleksis/apps/chronos/util/build.py
@@ -4,7 +4,7 @@ from aleksis.apps.chronos.models import LessonEvent, SupervisionEvent
 from aleksis.core.models import Group, Person
 
 
-def build_substitutions_list(wanted_day: date) -> tuple[list[dict], set[Person], set[Group]]:
+def build_substitutions_list(wanted_day: date) -> tuple[list[dict], list[Person], list[Group]]:
     rows = []
     affected_teachers = set()
     affected_groups = set()
@@ -57,4 +57,7 @@ def build_substitutions_list(wanted_day: date) -> tuple[list[dict], set[Person],
 
     rows.sort(key=lambda row: row["sort_a"] + row["sort_b"])
 
+    affected_teachers = sorted(affected_teachers, key=lambda p: p.short_name or p.last_name)
+    affected_groups = sorted(affected_groups, key=lambda g: g.short_name or g.name)
+
     return rows, affected_teachers, affected_groups