diff --git a/AKModel/admin.py b/AKModel/admin.py
index 65f4b6a67130fd84480b301b3812c1991ba053cc..3d37232595a7efacfa17ebab69466103214c44d5 100644
--- a/AKModel/admin.py
+++ b/AKModel/admin.py
@@ -19,7 +19,7 @@ from AKModel.models import Event, AKOwner, AKCategory, AKTrack, AKTag, AKRequire
     ConstraintViolation, DefaultSlot
 from AKModel.urls import get_admin_urls_event_wizard, get_admin_urls_event
 from AKModel.views import CVMarkResolvedView, CVSetLevelViolationView, CVSetLevelWarningView, AKResetInterestView, \
-    AKResetInterestCounterView, PlanPublishView, PlanUnpublishView
+    AKResetInterestCounterView, PlanPublishView, PlanUnpublishView, DefaultSlotEditorView
 
 
 class EventRelatedFieldListFilter(RelatedFieldListFilter):
@@ -55,6 +55,7 @@ class EventAdmin(admin.ModelAdmin):
         urls.extend([
             path('plan/publish/', PlanPublishView.as_view(), name="plan-publish"),
             path('plan/unpublish/', PlanUnpublishView.as_view(), name="plan-unpublish"),
+            path('<slug:event_slug>/defaultSlots/', DefaultSlotEditorView.as_view(), name="default-slots-editor"),
         ])
         urls.extend(super().get_urls())
         return urls
diff --git a/AKModel/forms.py b/AKModel/forms.py
index 3aa9486813bc9fb91ee21860fc8614bb0ff96cfa..0f09a63b1d0bbd312201863743a6c080972a9b91 100644
--- a/AKModel/forms.py
+++ b/AKModel/forms.py
@@ -101,3 +101,14 @@ class SlideExportForm(AdminIntermediateForm):
         coerce=lambda x: x == "True",
         help_text=_("Create symbols indicating space to note down owners and timeslots for wishes, e.g., to be filled "
                     "out on a touch screen while presenting?"))
+
+
+class DefaultSlotEditorForm(AdminIntermediateForm):
+    availabilities = forms.CharField(
+        label=_('Default Slots'),
+        help_text=_(
+            'Click and drag to mark the availability during the event, double-click to delete.'  # Adapted help text
+        ),
+        widget=forms.TextInput(attrs={'class': 'availabilities-editor-data'}),
+        required=True,
+    )
diff --git a/AKModel/locale/de_DE/LC_MESSAGES/django.po b/AKModel/locale/de_DE/LC_MESSAGES/django.po
index 117543220b4d609760fca0ce68d78a74b6cc0337..5a302db39b93066d738d3fb84561945f57ddaf87 100644
--- a/AKModel/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKModel/locale/de_DE/LC_MESSAGES/django.po
@@ -2,7 +2,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-11-26 23:16+0100\n"
+"POT-Creation-Date: 2022-11-29 00:13+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -11,7 +11,7 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: AKModel/admin.py:62 AKModel/admin.py:65
+#: AKModel/admin.py:63 AKModel/admin.py:66
 #: AKModel/templates/admin/AKModel/event_wizard/activate.html:32
 #: AKModel/templates/admin/AKModel/event_wizard/created_prepare_import.html:48
 #: AKModel/templates/admin/AKModel/event_wizard/finish.html:21
@@ -21,59 +21,59 @@ msgstr ""
 msgid "Status"
 msgstr "Status"
 
-#: AKModel/admin.py:67
+#: AKModel/admin.py:68
 msgid "Toggle plan visibility"
 msgstr "Plansichtbarkeit ändern"
 
-#: AKModel/admin.py:71 AKModel/admin.py:82 AKModel/views.py:481
+#: AKModel/admin.py:72 AKModel/admin.py:83 AKModel/views.py:483
 msgid "Publish plan"
 msgstr "Plan veröffentlichen"
 
-#: AKModel/admin.py:74 AKModel/admin.py:87 AKModel/views.py:491
+#: AKModel/admin.py:75 AKModel/admin.py:88 AKModel/views.py:493
 msgid "Unpublish plan"
 msgstr "Plan verbergen"
 
-#: AKModel/admin.py:159
+#: AKModel/admin.py:160
 msgid "Wish"
 msgstr "AK-Wunsch"
 
-#: AKModel/admin.py:165
+#: AKModel/admin.py:166
 msgid "Is wish"
 msgstr "Ist ein Wunsch"
 
-#: AKModel/admin.py:166
+#: AKModel/admin.py:167
 msgid "Is not a wish"
 msgstr "Ist kein Wunsch"
 
-#: AKModel/admin.py:210
+#: AKModel/admin.py:211
 msgid "Export to wiki syntax"
 msgstr "In Wiki-Syntax exportieren"
 
-#: AKModel/admin.py:219
+#: AKModel/admin.py:220
 msgid "Cannot export AKs from more than one event at the same time."
 msgstr "Kann nicht AKs von mehreren Events zur selben Zeit exportieren."
 
-#: AKModel/admin.py:234 AKModel/views.py:461
+#: AKModel/admin.py:235 AKModel/views.py:463
 msgid "Reset interest in AKs"
 msgstr "Interesse an AKs zurücksetzen"
 
-#: AKModel/admin.py:239 AKModel/views.py:471
+#: AKModel/admin.py:240 AKModel/views.py:473
 msgid "Reset AKs' interest counters"
 msgstr "Interessenszähler der AKs zurücksetzen"
 
-#: AKModel/admin.py:323 AKModel/admin.py:330
+#: AKModel/admin.py:324 AKModel/admin.py:331
 msgid "AK Details"
 msgstr "AK-Details"
 
-#: AKModel/admin.py:382 AKModel/views.py:431
+#: AKModel/admin.py:383 AKModel/views.py:433
 msgid "Mark Constraint Violations as manually resolved"
 msgstr "Markiere Constraintverletzungen als manuell behoben"
 
-#: AKModel/admin.py:387 AKModel/views.py:441
+#: AKModel/admin.py:388 AKModel/views.py:443
 msgid "Set Constraint Violations to level \"violation\""
 msgstr "Constraintverletzungen auf Level \"Violation\" setzen"
 
-#: AKModel/admin.py:392 AKModel/views.py:451
+#: AKModel/admin.py:393 AKModel/views.py:453
 msgid "Set Constraint Violations to level \"warning\""
 msgstr "Constraintverletzungen auf Level \"Warning\" setzen"
 
@@ -81,7 +81,7 @@ msgstr "Constraintverletzungen auf Level \"Warning\" setzen"
 msgid "Availability"
 msgstr "Verfügbarkeit"
 
-#: AKModel/availability/forms.py:23
+#: AKModel/availability/forms.py:23 AKModel/forms.py:110
 msgid ""
 "Click and drag to mark the availability during the event, double-click to "
 "delete."
@@ -208,6 +208,10 @@ msgstr ""
 "fürWünsche markieren, z.B. um während der Präsentation auf einem Touchscreen "
 "ausgefüllt zu werden?"
 
+#: AKModel/forms.py:108 AKModel/models.py:658
+msgid "Default Slots"
+msgstr "Standardslots"
+
 #: AKModel/models.py:18 AKModel/models.py:175 AKModel/models.py:199
 #: AKModel/models.py:218 AKModel/models.py:232 AKModel/models.py:250
 #: AKModel/models.py:346
@@ -244,7 +248,7 @@ msgstr "Zeitzone"
 msgid "Time Zone where this event takes place in"
 msgstr "Zeitzone in der das Event stattfindet"
 
-#: AKModel/models.py:27 AKModel/views.py:242
+#: AKModel/models.py:27 AKModel/views.py:244
 msgid "Start"
 msgstr "Start"
 
@@ -540,7 +544,7 @@ msgstr "AK präsentieren"
 msgid "Present results of this AK"
 msgstr "Die Ergebnisse dieses AKs vorstellen"
 
-#: AKModel/models.py:273 AKModel/templates/admin/AKModel/status.html:102
+#: AKModel/models.py:273 AKModel/templates/admin/AKModel/status.html:104
 msgid "Requirements"
 msgstr "Anforderungen"
 
@@ -597,7 +601,7 @@ msgstr "Anzahl Personen, die online Interesse bekundet haben"
 
 #: AKModel/models.py:295 AKModel/models.py:502
 #: AKModel/templates/admin/AKModel/status.html:56
-#: AKModel/templates/admin/AKModel/status.html:63 AKModel/views.py:360
+#: AKModel/templates/admin/AKModel/status.html:63 AKModel/views.py:362
 msgid "AKs"
 msgstr "AKs"
 
@@ -839,10 +843,6 @@ msgstr "Details"
 msgid "Default Slot"
 msgstr "Standardslot"
 
-#: AKModel/models.py:658
-msgid "Default Slots"
-msgstr "Standardslots"
-
 #: AKModel/models.py:662
 msgid "Slot End"
 msgstr "Ende des Slots"
@@ -906,7 +906,7 @@ msgid "Successfully imported.<br><br>Do you want to activate your event now?"
 msgstr "Erfolgreich importiert.<br><br>Soll das Event jetzt aktiviert werden?"
 
 #: AKModel/templates/admin/AKModel/event_wizard/activate.html:27
-#: AKModel/views.py:247
+#: AKModel/views.py:249
 msgid "Finish"
 msgstr "Abschluss"
 
@@ -971,7 +971,7 @@ msgid "No AKs with this requirement"
 msgstr "Kein AK mit dieser Anforderung"
 
 #: AKModel/templates/admin/AKModel/requirements_overview.html:45
-#: AKModel/templates/admin/AKModel/status.html:118
+#: AKModel/templates/admin/AKModel/status.html:120
 msgid "Add Requirement"
 msgstr "Anforderung hinzufügen"
 
@@ -1024,35 +1024,39 @@ msgstr "AKs, die besondere Aufmerksamkeit benötigen"
 msgid "Enter Interest"
 msgstr "Interesse erfassen"
 
-#: AKModel/templates/admin/AKModel/status.html:93
+#: AKModel/templates/admin/AKModel/status.html:93 AKModel/views.py:505
+msgid "Edit Default Slots"
+msgstr "Standardslots bearbeiten"
+
+#: AKModel/templates/admin/AKModel/status.html:95
 msgid "Manage ak tracks"
 msgstr "AK-Tracks verwalten"
 
-#: AKModel/templates/admin/AKModel/status.html:95
+#: AKModel/templates/admin/AKModel/status.html:97
 msgid "Export AKs as CSV"
 msgstr "AKs als CSV exportieren"
 
-#: AKModel/templates/admin/AKModel/status.html:97
+#: AKModel/templates/admin/AKModel/status.html:99
 msgid "Export AKs for Wiki"
 msgstr "AKs im Wiki-Format exportieren"
 
-#: AKModel/templates/admin/AKModel/status.html:99 AKModel/views.py:330
+#: AKModel/templates/admin/AKModel/status.html:101 AKModel/views.py:332
 msgid "Export AK Slides"
 msgstr "AK-Folien exportieren"
 
-#: AKModel/templates/admin/AKModel/status.html:104
+#: AKModel/templates/admin/AKModel/status.html:106
 msgid "No requirements yet"
 msgstr "Bisher keine Anforderungen"
 
-#: AKModel/templates/admin/AKModel/status.html:117
+#: AKModel/templates/admin/AKModel/status.html:119
 msgid "Show AKs for requirements"
 msgstr "Zu Anforderungen gehörige AKs anzeigen"
 
-#: AKModel/templates/admin/AKModel/status.html:121
+#: AKModel/templates/admin/AKModel/status.html:123
 msgid "Messages"
 msgstr "Nachrichten"
 
-#: AKModel/templates/admin/AKModel/status.html:123
+#: AKModel/templates/admin/AKModel/status.html:125
 msgid "Delete all messages"
 msgstr "Alle Nachrichten löschen"
 
@@ -1089,136 +1093,148 @@ msgstr "Login"
 msgid "Register"
 msgstr "Registrieren"
 
-#: AKModel/views.py:148
+#: AKModel/views.py:150
 msgid "Event Status"
 msgstr "Eventstatus"
 
-#: AKModel/views.py:161
+#: AKModel/views.py:163
 msgid "Requirements for Event"
 msgstr "Anforderungen für das Event"
 
-#: AKModel/views.py:175
+#: AKModel/views.py:177
 msgid "AK CSV Export"
 msgstr "AK-CSV-Export"
 
-#: AKModel/views.py:189
+#: AKModel/views.py:191
 msgid "AK Wiki Export"
 msgstr "AK-Wiki-Export"
 
-#: AKModel/views.py:197 AKModel/views.py:346
+#: AKModel/views.py:199 AKModel/views.py:348
 msgid "Wishes"
 msgstr "Wünsche"
 
-#: AKModel/views.py:218
+#: AKModel/views.py:220
 msgid "Delete AK Orga Messages"
 msgstr "AK-Organachrichten löschen"
 
-#: AKModel/views.py:233
+#: AKModel/views.py:235
 msgid "AK Orga Messages successfully deleted"
 msgstr "AK-Organachrichten erfolgreich gelöscht"
 
-#: AKModel/views.py:243
+#: AKModel/views.py:245
 msgid "Settings"
 msgstr "Einstellungen"
 
-#: AKModel/views.py:244
+#: AKModel/views.py:246
 msgid "Event created, Prepare Import"
 msgstr "Event angelegt, Import vorbereiten"
 
-#: AKModel/views.py:245
+#: AKModel/views.py:247
 msgid "Import categories & requirements"
 msgstr "Kategorien & Anforderungen kopieren"
 
-#: AKModel/views.py:246
+#: AKModel/views.py:248
 msgid "Activate?"
 msgstr "Aktivieren?"
 
-#: AKModel/views.py:305
+#: AKModel/views.py:307
 #, python-format
 msgid "Copied '%(obj)s'"
 msgstr "'%(obj)s' kopiert"
 
-#: AKModel/views.py:308
+#: AKModel/views.py:310
 #, python-format
 msgid "Could not copy '%(obj)s' (%(error)s)"
 msgstr "'%(obj)s' konnte nicht kopiert werden (%(error)s)"
 
-#: AKModel/views.py:341
+#: AKModel/views.py:343
 msgid "Symbols"
 msgstr "Symbole"
 
-#: AKModel/views.py:342
+#: AKModel/views.py:344
 msgid "Who?"
 msgstr "Wer?"
 
-#: AKModel/views.py:343
+#: AKModel/views.py:345
 msgid "Duration(s)"
 msgstr "Dauer(n)"
 
-#: AKModel/views.py:344
+#: AKModel/views.py:346
 msgid "Reso intention?"
 msgstr "Resolutionsabsicht?"
 
-#: AKModel/views.py:345
+#: AKModel/views.py:347
 msgid "Category (for Wishes)"
 msgstr "Kategorie (für Wünsche)"
 
-#: AKModel/views.py:433
+#: AKModel/views.py:435
 msgid "The following Constraint Violations will be marked as manually resolved"
 msgstr ""
 "Die folgenden Constraintverletzungen werden als manuell behoben markiert."
 
-#: AKModel/views.py:434
+#: AKModel/views.py:436
 msgid "Constraint Violations marked as resolved"
 msgstr "Constraintverletzungen als manuell behoben markiert"
 
-#: AKModel/views.py:443
+#: AKModel/views.py:445
 msgid "The following Constraint Violations will be set to level 'violation'"
 msgstr ""
 "Die folgenden Constraintverletzungen werden auf das Level \"Violation\" "
 "gesetzt."
 
-#: AKModel/views.py:444
+#: AKModel/views.py:446
 msgid "Constraint Violations set to level 'violation'"
 msgstr "Constraintverletzungen auf Level \"Violation\" gesetzt"
 
-#: AKModel/views.py:453
+#: AKModel/views.py:455
 msgid "The following Constraint Violations will be set to level 'warning'"
 msgstr ""
 "Die folgenden Constraintverletzungen werden auf das Level 'warning' gesetzt."
 
-#: AKModel/views.py:454
+#: AKModel/views.py:456
 msgid "Constraint Violations set to level 'warning'"
 msgstr "Constraintverletzungen auf Level \"Warning\" gesetzt"
 
-#: AKModel/views.py:463
+#: AKModel/views.py:465
 msgid "Interest of the following AKs will be set to not filled (-1):"
 msgstr "Interesse an den folgenden AKs wird auf nicht ausgefüllt (-1) gesetzt:"
 
-#: AKModel/views.py:464
+#: AKModel/views.py:466
 msgid "Reset of interest in AKs successful."
 msgstr "Interesse an AKs erfolgreich zurückgesetzt."
 
-#: AKModel/views.py:473
+#: AKModel/views.py:475
 msgid "Interest counter of the following AKs will be set to 0:"
 msgstr "Interessensbekundungszähler der folgenden AKs wird auf 0 gesetzt:"
 
-#: AKModel/views.py:474
+#: AKModel/views.py:476
 msgid "AKs' interest counters set back to 0."
 msgstr "Interessenszähler der AKs zurückgesetzt"
 
-#: AKModel/views.py:483
+#: AKModel/views.py:485
 msgid "Publish the plan(s) of:"
 msgstr "Den Plan/die Pläne veröffentlichen von:"
 
-#: AKModel/views.py:484
+#: AKModel/views.py:486
 msgid "Plan published"
 msgstr "Plan veröffentlicht"
 
-#: AKModel/views.py:493
+#: AKModel/views.py:495
 msgid "Unpublish the plan(s) of:"
 msgstr "Den Plan/die Pläne verbergen von:"
 
-#: AKModel/views.py:494
+#: AKModel/views.py:496
 msgid "Plan unpublished"
 msgstr "Plan verborgen"
+
+#: AKModel/views.py:542
+#, python-brace-format
+msgid "Could not update slot {id} since it does not belong to {event}"
+msgstr ""
+"Konnte  Slot {id} nicht bearbeiten, da er nicht zum Event {event} gehört"
+
+#: AKModel/views.py:572
+#, python-brace-format
+msgid "Updated {u} slot(s). created {c} new slot(s) and deleted {d} slot(s)"
+msgstr ""
+"{u} Slot(s) aktualisiert, {c} Slot(s) hinzugefügt und {d} Slot(s) gelöscht"
diff --git a/AKModel/models.py b/AKModel/models.py
index fe8b9a7f138a83d79f0623471e5b622725a23f02..2844ab8ad496ee2f43c9f1b764f8177a381ea804 100644
--- a/AKModel/models.py
+++ b/AKModel/models.py
@@ -671,9 +671,17 @@ class DefaultSlot(models.Model):
     def start_simplified(self):
         return self.start.astimezone(self.event.timezone).strftime('%a %H:%M')
 
+    @property
+    def start_iso(self):
+        return timezone.localtime(self.start, self.event.timezone).strftime("%Y-%m-%dT%H:%M:%S")
+
     @property
     def end_simplified(self):
         return self.end.astimezone(self.event.timezone).strftime('%a %H:%M')
 
+    @property
+    def end_iso(self):
+        return timezone.localtime(self.end, self.event.timezone).strftime("%Y-%m-%dT%H:%M:%S")
+
     def __str__(self):
         return f"{self.event}: {self.start_simplified} - {self.end_simplified}"
diff --git a/AKModel/templates/admin/AKModel/default_slot_editor.html b/AKModel/templates/admin/AKModel/default_slot_editor.html
new file mode 100644
index 0000000000000000000000000000000000000000..c3004e357649fe4c226c40113e1761b2ec16c955
--- /dev/null
+++ b/AKModel/templates/admin/AKModel/default_slot_editor.html
@@ -0,0 +1,30 @@
+{% extends "admin/AKModel/action_intermediate.html" %}
+{% load tags_AKModel %}
+{% load i18n admin_urls %}
+{% load static %}
+{% load bootstrap4 %}
+{% load tz %}
+
+{% block extrahead %}
+    {{ block.super }}
+    {% bootstrap_javascript jquery='slim' %}
+    {% include "AKModel/load_fullcalendar_availabilities.html" %}
+
+    <script>
+        {% get_current_language as LANGUAGE_CODE %}
+
+        document.addEventListener('DOMContentLoaded', function () {
+            createAvailabilityEditors(
+                '{{ event.timezone }}',
+                '{{ LANGUAGE_CODE }}',
+                '{{ event.start | timezone:event.timezone | date:"Y-m-d H:i:s" }}',
+                '{{ event.end | timezone:event.timezone | date:"Y-m-d H:i:s" }}'
+            );
+        });
+    </script>
+{% endblock %}
+
+{% block action_preview %}
+    <h3>{{ event.name }}</h3>
+{% endblock %}
+
diff --git a/AKModel/templates/admin/AKModel/status.html b/AKModel/templates/admin/AKModel/status.html
index d279efeafa139ae7f9c82ba7be404ea4a3474a2e..8530e444719bbb2be948dc55f7376ed0f23bee01 100644
--- a/AKModel/templates/admin/AKModel/status.html
+++ b/AKModel/templates/admin/AKModel/status.html
@@ -89,6 +89,8 @@
                         <a class="btn btn-success"
                             href="{% url 'admin:enter-interest' event_slug=event.slug pk=event.ak_set.all.first.pk %}">{% trans "Enter Interest" %}</a>
                     {% endif %}
+                    <a class="btn btn-success"
+                       href="{% url 'admin:default-slots-editor' event_slug=event.slug %}">{% trans "Edit Default Slots" %}</a>
                     <a class="btn btn-success"
                        href="{% url 'admin:tracks_manage' event_slug=event.slug %}">{% trans "Manage ak tracks" %}</a>
                     <a class="btn btn-success"
diff --git a/AKModel/views.py b/AKModel/views.py
index 9bb8edc0cd97876d9714f51adfbd4667c4b4c565..76ead0da0e45f5a2b57089558ba13b6a15f6411c 100644
--- a/AKModel/views.py
+++ b/AKModel/views.py
@@ -1,3 +1,4 @@
+import json
 import os
 import tempfile
 from abc import ABC, abstractmethod
@@ -7,6 +8,7 @@ from django.contrib import admin, messages
 from django.db.models.functions import Now
 from django.shortcuts import get_object_or_404, redirect
 from django.urls import reverse_lazy, reverse
+from django.utils.dateparse import parse_datetime
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import TemplateView, DetailView, ListView, DeleteView, CreateView, FormView, UpdateView
 from django_tex.core import render_template_with_context, run_tex_in_directory
@@ -15,9 +17,9 @@ from rest_framework import viewsets, permissions, mixins
 
 from AKModel.forms import NewEventWizardStartForm, NewEventWizardSettingsForm, NewEventWizardPrepareImportForm, \
     NewEventWizardImportForm, NewEventWizardActivateForm, AdminIntermediateForm, SlideExportForm, \
-    AdminIntermediateActionForm
+    AdminIntermediateActionForm, DefaultSlotEditorForm
 from AKModel.models import Event, AK, AKSlot, Room, AKTrack, AKCategory, AKOwner, AKOrgaMessage, AKRequirement, \
-    ConstraintViolation
+    ConstraintViolation, DefaultSlot
 from AKModel.serializers import AKSerializer, AKSlotSerializer, RoomSerializer, AKTrackSerializer, AKCategorySerializer, \
     AKOwnerSerializer
 
@@ -495,3 +497,79 @@ class PlanUnpublishView(IntermediateAdminActionView):
 
     def action(self, form):
         self.entities.update(plan_published_at=None, plan_hidden=True)
+
+
+class DefaultSlotEditorView(EventSlugMixin, IntermediateAdminView):
+    template_name = "admin/AKModel/default_slot_editor.html"
+    form_class = DefaultSlotEditorForm
+    title = _("Edit Default Slots")
+
+    def get_success_url(self):
+        return self.request.path
+
+    def get_initial(self):
+        initial = super().get_initial()
+        default_slots = [
+            {"id": s.id, "start": s.start_iso, "end": s.end_iso, "allDay": False}
+            for s in self.event.defaultslot_set.all()
+        ]
+        initial['availabilities'] = json.dumps({
+            'availabilities': default_slots
+        })
+        return initial
+
+    def form_valid(self, form):
+        default_slots_raw = json.loads(form.cleaned_data['availabilities'])["availabilities"]
+        tz = self.event.timezone
+
+        created_count = 0
+        updated_count = 0
+
+        previous_slot_ids = set(s.id for s in self.event.defaultslot_set.all())
+
+        for slot in default_slots_raw:
+            start = tz.localize(parse_datetime(slot["start"]))
+            end = tz.localize(parse_datetime(slot["end"]))
+
+            if slot["id"] != '':
+                id = int(slot["id"])
+                if id not in previous_slot_ids:
+                    # Make sure only slots (currently) belonging to this event are edited
+                    # (user did not manipulate IDs and slots have not been deleted in another session in the meantime)
+                    messages.add_message(
+                        self.request,
+                        messages.WARNING,
+                        _("Could not update slot {id} since it does not belong to {event}")
+                        .format(id=slot['id'], event=self.event.name)
+                    )
+                else:
+                    # Update existing entries
+                    previous_slot_ids.remove(id)
+                    original_slot = DefaultSlot.objects.get(id=id)
+                    if original_slot.start != start or original_slot.end != end:
+                        original_slot.start = start
+                        original_slot.end = end
+                        original_slot.save()
+                        updated_count += 1
+            else:
+                # Create new entries
+                DefaultSlot.objects.create(
+                    start=start,
+                    end=end,
+                    event=self.event
+                )
+                created_count += 1
+
+        # Delete all slots not re-submitted by the user (and hence deleted in editor)
+        deleted_count = len(previous_slot_ids)
+        for d_id in previous_slot_ids:
+            DefaultSlot.objects.get(id=d_id).delete()
+
+        if created_count + updated_count + deleted_count > 0:
+            messages.add_message(
+                self.request,
+                messages.SUCCESS,
+                _("Updated {u} slot(s). created {c} new slot(s) and deleted {d} slot(s)")
+                .format(u=str(updated_count), c=str(created_count), d=str(deleted_count))
+            )
+        return super().form_valid(form)
diff --git a/AKScheduling/locale/de_DE/LC_MESSAGES/django.po b/AKScheduling/locale/de_DE/LC_MESSAGES/django.po
index 309bcc6ef88e1f391d941a24e3a0f36445e2c1be..6326be76f8a6be3468014eb86e93b9e74012430d 100644
--- a/AKScheduling/locale/de_DE/LC_MESSAGES/django.po
+++ b/AKScheduling/locale/de_DE/LC_MESSAGES/django.po
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-11-26 23:16+0100\n"
+"POT-Creation-Date: 2022-11-29 00:13+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,52 +39,53 @@ msgstr ""
 msgid "Constraint Violations for"
 msgstr ""
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:78
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:133
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:44
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:100
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:214
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:293
 msgid "No violations"
 msgstr "Keine Verletzungen"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:85
-msgid "Cannot load current violations from server"
-msgstr "Kann die aktuellen Verletzungen nicht vom Server laden"
-
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:110
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:77
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:264
 msgid "Violation(s)"
 msgstr "Verletzung(en)"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:113
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:80
 msgid "Auto reload?"
 msgstr "Automatisch neu laden?"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:117
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:84
 msgid "Reload now"
 msgstr "Jetzt neu laden"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:123
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:90
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:200
 msgid "Violation"
 msgstr "Verletzung"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:124
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:91
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:287
 msgid "Problem"
 msgstr "Problem"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:125
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:92
 msgid "Details"
 msgstr "Details"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:126
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:93
 msgid "Since"
 msgstr "Seit"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:139
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:106
 #: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:243
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:209
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:250
 #: AKScheduling/templates/admin/AKScheduling/special_attention.html:48
 #: AKScheduling/templates/admin/AKScheduling/unscheduled.html:34
 msgid "Event Status"
 msgstr "Event-Status"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:141
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:108
 msgid "Scheduling"
 msgstr "Scheduling"
 
@@ -93,7 +94,8 @@ msgid "Submit"
 msgstr "Abschicken"
 
 #: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:11
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:10
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:19
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:247
 msgid "Scheduling for"
 msgstr "Scheduling für"
 
@@ -129,26 +131,34 @@ msgstr "AK-Track hinzufügen"
 msgid "AKs without track"
 msgstr "AKs ohne Track"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:91
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:92
 msgid "Day (Horizontal)"
 msgstr "Tag (horizontal)"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:98
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:99
 msgid "Day (Vertical)"
 msgstr "Tag (vertikal)"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:109
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:110
 msgid "Event (Horizontal)"
 msgstr "Event (horizontal)"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:118
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:119
 msgid "Event (Vertical)"
 msgstr "Event (vertikal)"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:146
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:147
 msgid "Room"
 msgstr "Raum"
 
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:261
+msgid "Unscheduled"
+msgstr "Micht gescheduled"
+
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:286
+msgid "Level"
+msgstr "Level"
+
 #: AKScheduling/templates/admin/AKScheduling/special_attention.html:14
 msgid "AKs with public notes"
 msgstr "AKs mit öffentlichen Kommentaren"
@@ -235,3 +245,6 @@ msgstr "Konnte keine Verfügbarkeit anlegen für AK: {ak}"
 #, python-brace-format
 msgid "Created default availabilities for {count} AKs"
 msgstr "Standardverfügbarkeiten für {count} AKs angelegt"
+
+#~ msgid "Cannot load current violations from server"
+#~ msgstr "Kann die aktuellen Verletzungen nicht vom Server laden"