diff --git a/aleksis/apps/chronos/frontend/components/amendLesson.graphql b/aleksis/apps/chronos/frontend/components/amendLesson.graphql
index ab412b7744199f8677ba9b165f32cdcad212a897..2f017f687aa941aaec46be77c67567823b893781 100644
--- a/aleksis/apps/chronos/frontend/components/amendLesson.graphql
+++ b/aleksis/apps/chronos/frontend/components/amendLesson.graphql
@@ -1,5 +1,5 @@
 mutation createAmendLesson($input: CreateLessonEventInput!) {
-  amendLesson(input: $input) {
+  createAmendLesson(input: $input) {
     lessonEvent {
       id
       amends {
@@ -24,3 +24,25 @@ mutation createAmendLesson($input: CreateLessonEventInput!) {
     }
   }
 }
+
+mutation patchAmendLesson($input: PatchLessonEventInput!, $id: ID!) {
+  patchAmendLesson(input: $input, id: $id) {
+    lessonEvent {
+      id
+      subject {
+        id
+      }
+      teachers {
+        id
+      }
+      groups {
+        id
+      }
+      rooms {
+        id
+      }
+      cancelled
+      comment
+    }
+  }
+}
diff --git a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
index 2f96afeaefdd78683ed8db307a8341fde3126604..d4d492fba6624914e72860a88cd21dcaeb8a2903 100644
--- a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
+++ b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
@@ -103,11 +103,15 @@
         <dialog-object-form
           v-model="amendEvent.open"
           :fields="amendEvent.fields"
-          :default-item="amendEvent.default"
-          :is-create="true"
+          :is-create="!selectedEvent.meta.amended"
           createItemI18nKey="chronos.event.amend.title"
           :gql-create-mutation="amendEvent.gqlCreateMutation"
           :get-create-data="transformCreateData"
+          :default-item="amendEvent.default"
+          editItemI18nKey="chronos.event.amend.title"
+          :gql-patch-mutation="amendEvent.gqlPatchMutation"
+          :get-patch-data="transformPatchData"
+          :edit-item="initPatchData"
           @cancel="amendEvent.open = false"
         >
           <template #cancelled.field="{ on, attrs }">
@@ -134,7 +138,10 @@ import LessonRelatedObjectChip from "../../LessonRelatedObjectChip.vue";
 
 import lessonEvent from "../mixins/lessonEvent";
 import LessonEventSubject from "../../LessonEventSubject.vue";
-import createAmendLesson from "../../amendLesson.graphql";
+import {
+  createAmendLesson,
+  patchAmendLesson
+} from "../../amendLesson.graphql";
 
 export default {
   name: "LessonDetails",
@@ -175,10 +182,11 @@ export default {
           },
         ],
         default: {
-          cancelled: false,
-          comment: ""
+          cancelled: this.selectedEvent.meta.cancelled,
+          comment: this.selectedEvent.meta.comment,
         },
         gqlCreateMutation: createAmendLesson,
+        gqlPatchMutation: patchAmendLesson
       },
     };
   },
@@ -189,8 +197,7 @@ export default {
       console.log("start", this.selectedEvent.start);
       let next = {
         ...item,
-        // FIXME: Pass id directly & do not parse a string here.
-        amends: parseInt(this.selectedEvent.uid.split('-')[1]),
+        amends: this.selectedEvent.meta.id,
         // LessonEvent has datetime in UTC & graphql does not like the Z timezone info
         datetimeStart: this.selectedEvent.start.toISOString().replace('Z', ''),
         datetimeEnd: this.selectedEvent.end.toISOString().replace('Z', ''),
@@ -198,6 +205,30 @@ export default {
       console.log("in transformCreateData", next);
       return next;
     },
+    transformPatchData(item) {
+      let { id, __typename, cancelled, ...patchItem } = item;
+      console.log('patchitem', patchItem);
+      console.log(cancelled ? true : false);
+      return {
+        ...patchItem,
+        // Normalize cancelled, v-checkbox returns null & does not
+        // honor false-value.
+        cancelled: cancelled ? true : false,
+      };
+    },
+  },
+  computed: {
+    initPatchData() {
+      console.log('initPatchData', this.selectedEvent);
+      return {
+        id: this.selectedEvent.meta.id,
+        subject: this.selectedEvent.meta.subject?.id,
+        teachers: this.selectedEvent.meta.teachers.map((teacher) => teacher.id),
+        rooms: this.selectedEvent.meta.rooms.map((room) => room.id),
+        cancelled: this.selectedEvent.meta.cancelled,
+        comment: this.selectedEvent.meta.comment,
+      };
+    },
   },
 };
 </script>
diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py
index 58d8a3c32980a4665d41206724e13bb7229b7d35..e5d83a8c30b105b9193ff1613f92c4e24822b99e 100644
--- a/aleksis/apps/chronos/schema/__init__.py
+++ b/aleksis/apps/chronos/schema/__init__.py
@@ -1,6 +1,6 @@
 import graphene
 from graphene_django import DjangoObjectType
-from graphene_django_cud.mutations import DjangoCreateMutation
+from graphene_django_cud.mutations import DjangoCreateMutation, DjangoPatchMutation
 
 from aleksis.core.models import Group, Person, Room, CalendarEvent
 from ..models import LessonEvent
@@ -56,7 +56,7 @@ class LessonEventType(DjangoObjectType):
                   "comment")
 
 
-class AmendLessonMutation(DjangoCreateMutation):
+class AmendLessonCreateMutation(DjangoCreateMutation):
     class Meta:
         model = LessonEvent
         permissions = ("chronos.edit_substitution_rule",)
@@ -71,6 +71,19 @@ class AmendLessonMutation(DjangoCreateMutation):
                        "comment")
 
 
+class AmendLessonPatchMutation(DjangoPatchMutation):
+    class Meta:
+        model = LessonEvent
+        permissions = ("chronos.edit_substitution_rule",)
+        only_fields = (
+                       "subject",
+                       "teachers",
+                       "groups",
+                       "rooms",
+                       "cancelled",
+                       "comment")
+
+
 class TimetableType(graphene.Enum):
     TEACHER = "teacher"
     GROUP = "group"
@@ -140,4 +153,5 @@ class Query(graphene.ObjectType):
 
 
 class Mutation(graphene.ObjectType):
-    amend_lesson = AmendLessonMutation.Field()
+    create_amend_lesson = AmendLessonCreateMutation.Field()
+    patch_amend_lesson = AmendLessonPatchMutation.Field()