diff --git a/aleksis/apps/chronos/frontend/components/amendLesson.graphql b/aleksis/apps/chronos/frontend/components/amendLesson.graphql
index bf6d16e4820b1f31da4b33a28660ad7036287d33..a93e89186df05efdfa77473b7f1a1751eb614c24 100644
--- a/aleksis/apps/chronos/frontend/components/amendLesson.graphql
+++ b/aleksis/apps/chronos/frontend/components/amendLesson.graphql
@@ -67,3 +67,9 @@ mutation patchAmendLesson($input: PatchLessonEventInput!, $id: ID!) {
     }
   }
 }
+
+mutation deleteAmendLesson($id: ID!) {
+  deleteAmendLesson(id: $id) {
+    ok
+  }
+}
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 3bdd8ab8daa347c1c6156593a58690a2a71eb1d5..492644680bf7b3c7fd3dadbf8ce5154fa1b2b3dc 100644
--- a/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
+++ b/aleksis/apps/chronos/frontend/components/calendar_feeds/details/LessonDetails.vue
@@ -98,9 +98,14 @@
       </v-list-item>
       <v-card-actions v-if="checkPermission('chronos.edit_substitution_rule')">
         <edit-button
-          i18n-key="chronos.event.amend.button"
+          i18n-key="chronos.event.amend.edit_button"
           @click="amendEvent.open = true"
         />
+        <delete-button
+          v-if="selectedEvent.meta.amended"
+          i18n-key="chronos.event.amend.delete_button"
+          @click="amendEvent.delete = true"
+        />
         <dialog-object-form
           v-model="amendEvent.open"
           :fields="amendEvent.fields"
@@ -114,7 +119,7 @@
           :get-patch-data="transformPatchData"
           :edit-item="initPatchData"
           @cancel="amendEvent.open = false"
-          @save="onAmendSave()"
+          @save="updateOnSave()"
         >
           <template #subject.field="{ attrs, on, item }">
             <v-autocomplete
@@ -159,6 +164,13 @@
             <v-textarea v-bind="attrs" v-on="on" />
           </template>
         </dialog-object-form>
+        <delete-dialog
+          deleteSuccessMessageI18nKey="chronos.event.amend.delete_success"
+          :gql-mutation="amendEvent.gqlDeleteMutation"
+          v-model="amendEvent.delete"
+          :item="selectedEvent.meta"
+          @success="updateOnSave()"
+        />
       </v-card-actions>
     </template>
   </base-calendar-feed-details>
@@ -172,6 +184,8 @@ import CalendarStatusChip from "aleksis.core/components/calendar/CalendarStatusC
 import CancelledCalendarStatusChip from "aleksis.core/components/calendar/CancelledCalendarStatusChip.vue";
 import EditButton from "aleksis.core/components/generic/buttons/EditButton.vue";
 import DialogObjectForm from "aleksis.core/components/generic/dialogs/DialogObjectForm.vue";
+import DeleteButton from "aleksis.core/components/generic/buttons/DeleteButton.vue";
+import DeleteDialog from "aleksis.core/components/generic/dialogs/DeleteDialog.vue";
 
 import LessonRelatedObjectChip from "../../LessonRelatedObjectChip.vue";
 
@@ -183,6 +197,7 @@ import {
   gqlRooms,
   createAmendLesson,
   patchAmendLesson,
+  deleteAmendLesson,
 } from "../../amendLesson.graphql";
 
 export default {
@@ -195,6 +210,8 @@ export default {
     CancelledCalendarStatusChip,
     EditButton,
     DialogObjectForm,
+    DeleteButton,
+    DeleteDialog,
   },
   mixins: [permissionsMixin, calendarFeedDetailsMixin, lessonEvent],
   data() {
@@ -229,6 +246,8 @@ export default {
         },
         gqlCreateMutation: createAmendLesson,
         gqlPatchMutation: patchAmendLesson,
+        delete: false,
+        gqlDeleteMutation: deleteAmendLesson,
       },
     };
   },
@@ -250,7 +269,7 @@ export default {
         cancelled: cancelled ? true : false,
       };
     },
-    onAmendSave() {
+    updateOnSave() {
       this.$emit('refreshCalendar');
       this.model = false;
     },
diff --git a/aleksis/apps/chronos/frontend/messages/en.json b/aleksis/apps/chronos/frontend/messages/en.json
index 90f35ab79ad1d6a5173b866a17b350dff9a68a29..c9616f68e5a63dcaedb7910c61c3193354627e16 100644
--- a/aleksis/apps/chronos/frontend/messages/en.json
+++ b/aleksis/apps/chronos/frontend/messages/en.json
@@ -28,7 +28,9 @@
       "no_room": "No room",
       "current_changes": "Current changes",
       "amend": {
-        "button": "Change",
+        "edit_button": "Change",
+        "delete_button": "Reset",
+        "delete_success": "The substitution was deleted successfully.",
         "title": "Change lesson",
         "subject": "Subject",
         "teachers": "Teachers",
diff --git a/aleksis/apps/chronos/schema/__init__.py b/aleksis/apps/chronos/schema/__init__.py
index 84d0348fd9fa901f9414c27d0ca7441d4709a4ca..f7cc25ff46c7fe7018876cc782fb6ad4e92e4eca 100644
--- a/aleksis/apps/chronos/schema/__init__.py
+++ b/aleksis/apps/chronos/schema/__init__.py
@@ -5,6 +5,7 @@ from graphene_django import DjangoObjectType
 from graphene_django_cud.mutations import DjangoCreateMutation, DjangoPatchMutation
 
 from aleksis.core.models import CalendarEvent, Group, Person, Room
+from aleksis.core.schema.base import DeleteMutation
 
 from ..models import LessonEvent
 from ..util.chronos_helpers import get_classes, get_rooms, get_teachers
@@ -113,6 +114,11 @@ class AmendLessonPatchMutation(DatetimeTimezoneMixin, DjangoPatchMutation):
         only_fields = ("subject", "teachers", "groups", "rooms", "cancelled", "comment")
 
 
+class AmendLessonDeleteMutation(DeleteMutation):
+    klass = LessonEvent
+    permission_required = "chronos.edit_substitution_rule"
+
+
 class TimetableType(graphene.Enum):
     TEACHER = "teacher"
     GROUP = "group"
@@ -184,3 +190,4 @@ class Query(graphene.ObjectType):
 class Mutation(graphene.ObjectType):
     create_amend_lesson = AmendLessonCreateMutation.Field()
     patch_amend_lesson = AmendLessonPatchMutation.Field()
+    delete_amend_lesson = AmendLessonDeleteMutation.Field()