diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index d014bdad19211be583cba526807732aa3834b5d0..b74c77e13bdb02b2391d9cb2dbffdffed9142d4b 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -13,7 +13,7 @@ from .documentation import (
     DocumentationBatchCreateMutation,
     DocumentationBatchPatchMutation,
     DocumentationCreateMutation,
-    DocumentationCreateOrUpdateMutation,
+    DocumentationBatchCreateOrUpdateMutation,
     DocumentationDeleteMutation,
     DocumentationType,
 )
@@ -77,4 +77,4 @@ class Mutation(graphene.ObjectType):
     delete_documentation = DocumentationDeleteMutation.Field()
     update_documentations = DocumentationBatchPatchMutation.Field()
 
-    create_or_update_documentation = DocumentationCreateOrUpdateMutation.Field()
+    create_or_update_documentations = DocumentationBatchCreateOrUpdateMutation.Field()
diff --git a/aleksis/apps/alsijil/schema/documentation.py b/aleksis/apps/alsijil/schema/documentation.py
index 408d168bc1283d1b02fa5e3fa5908621adeb46c5..a866e80c4686f4935aee8b96c9d54a896eb1ffc7 100644
--- a/aleksis/apps/alsijil/schema/documentation.py
+++ b/aleksis/apps/alsijil/schema/documentation.py
@@ -120,6 +120,7 @@ class DocumentationBatchPatchMutation(PermissionBatchPatchMixin, DjangoBatchPatc
 
 
 class DocumentationInputType(graphene.InputObjectType):
+    id = graphene.ID(required=True)
     course = graphene.ID(required=False)
     subject = graphene.ID(required=False)
 
@@ -128,44 +129,46 @@ class DocumentationInputType(graphene.InputObjectType):
     group_note = graphene.String(required=False)
 
 
-class DocumentationCreateOrUpdateMutation(graphene.Mutation):
+class DocumentationBatchCreateOrUpdateMutation(graphene.Mutation):
     class Arguments:
-        id = graphene.ID(required=True)
-        input = DocumentationInputType(required=False)
+        input = graphene.List(DocumentationInputType)
 
-    documentation = graphene.Field(DocumentationType)
+    documentations = graphene.List(DocumentationType)
 
     @classmethod
-    def mutate(cls, root, info, id, input):
-        # Sadly, we can't use the update_or_create method since create_defaults is only introduced in Django 5.0
-        if id.startswith("DUMMY"):
-            dummy, lesson_event_id, datetime_start, datetime_end = id.split(";")
-            lesson_event = LessonEvent.objects.get(id=lesson_event_id)
-
-            if not info.context.user.has_perm(
-                "alsijil.add_documentation_for_lesson_event_rule", lesson_event
-            ):
-                raise PermissionDenied()
-
-            obj = Documentation.objects.create(
-                datetime_start=datetime.fromisoformat(datetime_start),
-                datetime_end=datetime.fromisoformat(datetime_end),
-                lesson_event=lesson_event,
-                course=lesson_event.course,
-                subject=lesson_event.subject,
-                topic=input.topic,
-                homework=input.homework,
-                group_note=input.group_note,
-            )  # TODO: Add course & subject
-        else:
-            obj = Documentation.objects.get(id=id)
-
-            if not info.context.user.has_perm("alsijil.edit_documentation_rule", obj):
-                raise PermissionDenied()
-
-            obj.topic = input.topic
-            obj.homework = input.homework
-            obj.group_note = input.group_note
-            obj.save()
-
-        return DocumentationCreateOrUpdateMutation(documentation=obj)
+    def mutate(cls, root, info, input):
+        for doc in input:
+            id = doc.id
+
+            # Sadly, we can't use the update_or_create method since create_defaults is only introduced in Django 5.0
+            if id.startswith("DUMMY"):
+                dummy, lesson_event_id, datetime_start, datetime_end = id.split(";")
+                lesson_event = LessonEvent.objects.get(id=lesson_event_id)
+
+                if not info.context.user.has_perm(
+                    "alsijil.add_documentation_for_lesson_event_rule", lesson_event
+                ):
+                    raise PermissionDenied()
+
+                obj = Documentation.objects.create(
+                    datetime_start=datetime.fromisoformat(datetime_start),
+                    datetime_end=datetime.fromisoformat(datetime_end),
+                    lesson_event=lesson_event,
+                    course=lesson_event.course,
+                    subject=lesson_event.subject,
+                    topic=doc.topic or "",
+                    homework=doc.homework or "",
+                    group_note=doc.group_note or "",
+                )  # TODO: Add course & subject
+            else:
+                obj = Documentation.objects.get(id=id)
+    
+                if not info.context.user.has_perm("alsijil.edit_documentation_rule", obj):
+                    raise PermissionDenied()
+    
+                obj.topic = doc.topic or ""
+                obj.homework = doc.homework or ""
+                obj.group_note = doc.group_note or ""
+                obj.save()
+
+        return DocumentationBatchCreateOrUpdateMutation(documentations=obj)