diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql
index f2575f091febcacc9d4ebf679d58a66740770c69..22f8b1300435a3751260b05527e7cb392bcb24c9 100644
--- a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql
+++ b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.graphql
@@ -32,6 +32,17 @@ query CourseBook($lessonId: ID!) {
     topic
     homework
     groupNote
+    year
+    week
+    lessonPeriod {
+      id
+    }
+    event {
+      id
+    }
+    extraLesson {
+      id
+    }
     period
     date
     personalNotes {
diff --git a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
index 57e0344c42563ea111a403820341b51e10fda28a..51902b05ffce0b7947f8db4a1f361e4cae771178 100644
--- a/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
+++ b/aleksis/apps/alsijil/assets/components/alsijil/CourseBook.vue
@@ -28,6 +28,11 @@
               <lesson-documentation
                 v-bind:key="item.id"
                 :id="item.id"
+                :year="item.year"
+                :week="item.week"
+                :lessonPeriod="item.lessonPeriod"
+                :event="item.event"
+                :extraLesson="item.extraLesson"
                 :groups="data.lesson.groups"
                 :excuse-types="data.excuseTypes"
                 :extra-marks="data.extraMarks"
diff --git a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js
index 5056fc1b3f83c0881c3f1a794f25a8d5ba6ca8a5..86c1b0ac0f530b83cb1aa68d6908dc2b537c9c97 100644
--- a/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js
+++ b/aleksis/apps/alsijil/assets/components/alsijil/LessonDocumentation.js
@@ -6,6 +6,11 @@ export default {
     },
     props: [
         "id",
+        "year",
+        "week",
+        "lessonPeriod",
+        "event",
+        "extraLesson",
         "date",
         "period",
         "topic",
diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
index 63cc90717ef4383e78424a4ba99ab20ec1d67a96..e09159f5be8a4dfeaea6c0818a0320a04e6eb107 100644
--- a/aleksis/apps/alsijil/schema.py
+++ b/aleksis/apps/alsijil/schema.py
@@ -5,7 +5,7 @@ from graphene_django.forms.mutation import DjangoModelFormMutation
 from aleksis.apps.chronos.models import LessonPeriod
 from aleksis.core.models import Person, Group
 from .forms import LessonDocumentationForm
-from .models import ExcuseType, LessonDocumentation, PersonalNote, ExtraMark
+from .models import Event, ExcuseType, ExtraLesson, LessonDocumentation, LessonPeriod, PersonalNote, ExtraMark
 
 
 class ExcuseTypeType(DjangoObjectType):
@@ -51,11 +51,61 @@ class ExtraMarkType(DjangoObjectType):
         model = ExtraMark
 
 
-class LessonDocumentationMutation(DjangoModelFormMutation):
+class LessonDocumentationMutation(graphene.Mutation):
+    class Arguments:
+        year = graphene.Int(required=True)
+        week = graphene.Int(required=True)
+
+        lesson_period_id = graphene.ID(required=False)
+        event_id = graphene.ID(required=False)
+        extra_lesson_id = graphene.ID(required=False)
+
+        lesson_documentation_id = graphene.ID(required=False)
+
+        topic = graphene.String(required=False)
+        homework = graphene.String(required=False)
+        group_note = graphene.String(required=False)
+
     lesson_documentation = graphene.Field(LessonDocumentationType)
 
-    class Meta:
-        form_class = LessonDocumentationForm
+    @classmethod
+    def mutate(
+            cls,
+            root,
+            info,
+            year,
+            week,
+            lesson_period_id=None,
+            event_id=None,
+            extra_lesson_id=None,
+            lesson_documentation_id=None,
+            topic=None,
+            homework=None,
+            group_note=None
+    ):
+
+        lesson_period = LessonPeriod.objects.filter(pk=lesson_period_id).first()
+        event = Event.objects.filter(pk=event_id).first()
+        extra_lesson = ExtraLesson.objects.filter(pk=extra_lesson_id).first()
+
+        lesson_documentation, created = LessonDocumentation.objects.get_or_create(
+            year=year,
+            week=week,
+            lesson_period=lesson_period,
+            event=event,
+            extra_lesson=extra_lesson
+        )
+
+        if topic:
+            lesson_documentation.topic = topic
+        if homework:
+            lesson_documentation.homework = homework
+        if group_note:
+            lesson_documentation.group_note = group_note
+
+        lesson_documentation.save()
+
+        return LessonDocumentationMutation(lesson_documentation=lesson_documentation)
 
 
 class PersonalNoteMutation(graphene.Mutation):
@@ -124,7 +174,7 @@ class PersonalNoteMutation(graphene.Mutation):
 
 
 class Mutation(graphene.ObjectType):
-    update_lesson_documentation = LessonDocumentationMutation.Field()
+    update_or_create_lesson_documentation = LessonDocumentationMutation.Field()
     update_or_create_personal_note = PersonalNoteMutation.Field()
     # update_personal_note = PersonalNoteMutation.Field()