diff --git a/aleksis/apps/alsijil/schema.py b/aleksis/apps/alsijil/schema.py
index c6eb931b08e99027183b2402fac31a422f0646b0..df025b11c054a268b5b2675af0d1f805ce020dcf 100644
--- a/aleksis/apps/alsijil/schema.py
+++ b/aleksis/apps/alsijil/schema.py
@@ -4,7 +4,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, PersonalNoteForm
+from .forms import LessonDocumentationForm
 from .models import ExcuseType, LessonDocumentation, PersonalNote, ExtraMark
 
 
@@ -58,18 +58,13 @@ class LessonDocumentationMutation(DjangoModelFormMutation):
         form_class = LessonDocumentationForm
 
 
-class PersonalNoteMutation(DjangoModelFormMutation):
-    personal_note = graphene.Field(PersonalNoteType)
-
-    class Meta:
-        form_class = PersonalNoteForm
-
-
-class CreatePersonalNoteMutation(graphene.Mutation):
+class PersonalNoteMutation(graphene.Mutation):
     class Arguments:
         person_id = graphene.ID(required=True)
         lesson_documentation = graphene.ID(required=True)
 
+        personal_note_id = graphene.ID(required=False)  # Update or create personal note
+
         late = graphene.Int(required=False)
         absent = graphene.Boolean(required=False)
         excused = graphene.Boolean(required=False)
@@ -86,6 +81,7 @@ class CreatePersonalNoteMutation(graphene.Mutation):
             info,
             person_id,
             lesson_documentation,
+            personal_note_id=None,
             late=0,
             absent=False,
             excused=False,
@@ -95,32 +91,41 @@ class CreatePersonalNoteMutation(graphene.Mutation):
     ):
         if extra_marks is None:
             extra_marks = []
+
         person = Person.objects.get(pk=person_id)
         lesson_documentation = LessonDocumentation.objects.get(pk=lesson_documentation)
-        extra_marks = ExtraMark.objects.filter(pk__in=extra_marks)
-        personal_note = PersonalNote.objects.create(
+
+        personal_note, created = PersonalNote.objects.get_or_create(
             person=person,
             event=lesson_documentation.event,
             extra_lesson=lesson_documentation.extra_lesson,
             lesson_period=lesson_documentation.lesson_period,
-            late=late,
-            absent=absent,
-            excused=excused,
-            excuse_type=excuse_type,
-            remarks=remarks,
             week=lesson_documentation.week,
             year=lesson_documentation.year,
         )
+        if late:
+            personal_note.late = late
+        if absent is not None:
+            personal_note.absent = absent
+        if excused is not None:
+            personal_note.excused = excused
+        if excuse_type:
+            personal_note.excuse_type = ExcuseType.objects.get(pk=excuse_type)
+        if remarks:
+            personal_note.remarks = remarks
+        personal_note.save()
+
+        extra_marks = ExtraMark.objects.filter(pk__in=extra_marks)
         personal_note.extra_marks.set(extra_marks)
         personal_note.groups_of_person.set(person.member_of.all())
         personal_note.save()
-        return CreatePersonalNoteMutation(personal_note=personal_note)
+        return PersonalNoteMutation(personal_note=personal_note)
 
 
 class Mutation(graphene.ObjectType):
     update_lesson_documentation = LessonDocumentationMutation.Field()
-    create_personal_note = CreatePersonalNoteMutation.Field()
-    update_personal_note = PersonalNoteMutation.Field()
+    update_or_create_personal_note = PersonalNoteMutation.Field()
+    # update_personal_note = PersonalNoteMutation.Field()
 
 
 class Query(graphene.ObjectType):