diff --git a/aleksis/apps/alsijil/preferences.py b/aleksis/apps/alsijil/preferences.py
index 2fd34fa7fc4f802a52ead1d2d0291789be4fb9ce..756c27494e0fb19100ff1fcc904f75525231a4e5 100644
--- a/aleksis/apps/alsijil/preferences.py
+++ b/aleksis/apps/alsijil/preferences.py
@@ -80,6 +80,16 @@ class AllowCarryOverLessonDocumentationToCurrentWeek(BooleanPreference):
     )
 
 
+@site_preferences_registry.register
+class DocumentLessonTopicsByWeek(BooleanPreference):
+    section = alsijil
+    name = "document_lesson_topics_by_week"
+    default = False
+    verbose_name = _(
+        "Document lesson topics per week instead of per lesson period"
+    )
+
+
 @site_preferences_registry.register
 class CarryOverPersonalNotesToNextPeriods(BooleanPreference):
     section = alsijil
diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
index 7e88e69710cee4d60891f0bbd34bc8af13c4071e..04161e64c6fe4b8391264bead8b433aadc6417f1 100644
--- a/aleksis/apps/alsijil/schema.py
+++ b/aleksis/apps/alsijil/schema.py
@@ -5,6 +5,7 @@ from graphene_django import DjangoObjectType
 
 from aleksis.apps.chronos.models import Lesson
 from aleksis.core.models import Group, Person
+from aleksis.core.util.core_helpers import get_site_preferences
 
 from .models import (
     Event,
@@ -112,6 +113,19 @@ class LessonDocumentationMutation(graphene.Mutation):
 
         lesson_documentation.save()
 
+        if (
+            get_site_preferences()["alsijil__document_lesson_topics_by_week"]
+            and (
+                lesson_documentation.topic
+                or lesson_documentation.homework
+                or lesson_documentation.group_note
+            )
+            and lesson_documentation.lesson_period
+        ):
+            lesson_documentation.carry_over_data(
+                LessonPeriod.objects.filter(lesson=lesson_documentation.lesson_period.lesson)
+            )
+
         return LessonDocumentationMutation(lesson_documentation=lesson_documentation)