diff --git a/AKModel/availability/forms.py b/AKModel/availability/forms.py
index 3c68c56b03b1ecaaea4f91aafb464883e73a4ea8..c99ca202b6ab8c8fe70c4bacc949040d48c5f0d4 100644
--- a/AKModel/availability/forms.py
+++ b/AKModel/availability/forms.py
@@ -7,6 +7,7 @@ import json
 
 from django import forms
 from django.db import transaction
+from django.db.models.signals import post_save
 from django.utils.dateparse import parse_datetime
 from django.utils.translation import gettext_lazy as _
 
@@ -142,11 +143,16 @@ class AvailabilitiesFormMixin(forms.Form):
         for avail in availabilities:
             setattr(avail, reference_name, instance.id)
 
-    def _replace_availabilities(self, instance, availabilities):
+    def _replace_availabilities(self, instance, availabilities: [Availability]):
         with transaction.atomic():
             # TODO: do not recreate objects unnecessarily, give the client the IDs, so we can track modifications and leave unchanged objects alone
             instance.availabilities.all().delete()
             Availability.objects.bulk_create(availabilities)
+            # Trigger post save signal manually to make sure constraints are updated accordingly
+            # Doing this one time is sufficient, since this will nevertheless update all availability constraint
+            # violations of the corresponding AK
+            if len(availabilities) > 0:
+                post_save.send(Availability, instance=availabilities[0], created=True)
 
     def save(self, *args, **kwargs):
         instance = super().save(*args, **kwargs)