diff --git a/AKModel/views/status.py b/AKModel/views/status.py
index 11b62083ab7683a5eead25f5ecba4117df5081b9..e14ce2fbbcc7c662f71d1711a6fa14b372fb3595 100644
--- a/AKModel/views/status.py
+++ b/AKModel/views/status.py
@@ -1,6 +1,5 @@
 from django.apps import apps
 from django.urls import reverse_lazy
-from django.utils.html import format_html
 from django.utils.translation import gettext_lazy as _
 
 from AKModel.metaviews import status_manager
@@ -112,12 +111,6 @@ class EventAKsWidget(TemplateStatusWidget):
         ]
         if apps.is_installed("AKScheduling"):
             actions.extend([
-                {
-                    "text": format_html('{} <span class="badge bg-secondary">{}</span>',
-                                        _("Constraint Violations"),
-                                        context["event"].constraintviolation_set.count()),
-                    "url": reverse_lazy("admin:constraint-violations", kwargs={"slug": context["event"].slug}),
-                },
                 {
                     "text": _("AKs requiring special attention"),
                     "url": reverse_lazy("admin:special-attention", kwargs={"slug": context["event"].slug}),
diff --git a/AKScheduling/locale/de_DE/LC_MESSAGES/django.po b/AKScheduling/locale/de_DE/LC_MESSAGES/django.po
index 98bda60437d7408d8d716fc7f2fee6c994801e2d..e66d8d55bcda42f3271b2400d6b98cf84f64ee1d 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: 2023-08-16 16:30+0200\n"
+"POT-Creation-Date: 2024-04-25 00:24+0200\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"
@@ -61,52 +61,52 @@ msgid "Constraint Violations for"
 msgstr ""
 
 #: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:44
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:100
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:236
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:371
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:105
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:240
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:375
 msgid "No violations"
 msgstr "Keine Verletzungen"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:77
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:342
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:82
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:346
 msgid "Violation(s)"
 msgstr "Verletzung(en)"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:80
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:85
 msgid "Auto reload?"
 msgstr "Automatisch neu laden?"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:84
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:89
 msgid "Reload now"
 msgstr "Jetzt neu laden"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:90
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:225
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:95
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:228
 msgid "Violation"
 msgstr "Verletzung"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:91
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:365
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:96
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:369
 msgid "Problem"
 msgstr "Problem"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:92
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:97
 msgid "Details"
 msgstr "Details"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:93
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:98
 msgid "Since"
 msgstr "Seit"
 
-#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:106
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:238
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:328
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:111
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:256
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:332
 #: 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:108
+#: AKScheduling/templates/admin/AKScheduling/constraint_violations.html:113
 msgid "Scheduling"
 msgstr "Scheduling"
 
@@ -116,39 +116,39 @@ msgstr "Abschicken"
 
 #: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:11
 #: AKScheduling/templates/admin/AKScheduling/scheduling.html:21
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:325
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:329
 msgid "Scheduling for"
 msgstr "Scheduling für"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:124
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:135
 msgid "Name of new ak track"
 msgstr "Name des neuen AK-Tracks"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:140
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:151
 msgid "Could not create ak track"
 msgstr "Konnte neuen AK-Track nicht anlegen"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:166
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:177
 msgid "Could not update ak track name"
 msgstr "Konnte Namen des AK-Tracks nicht ändern"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:172
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:183
 msgid "Do you really want to delete this ak track?"
 msgstr "Soll dieser AK-Track wirklich gelöscht werden?"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:186
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:197
 msgid "Could not delete ak track"
 msgstr "AK-Track konnte nicht gelöscht werden"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:198
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:216
 msgid "Manage AK Tracks"
 msgstr "AK-Tracks verwalten"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:199
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:217
 msgid "Add ak track"
 msgstr "AK-Track hinzufügen"
 
-#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:204
+#: AKScheduling/templates/admin/AKScheduling/manage_tracks.html:222
 msgid "AKs without track"
 msgstr "AKs ohne Track"
 
@@ -168,31 +168,31 @@ msgstr "Event (horizontal)"
 msgid "Event (Vertical)"
 msgstr "Event (vertikal)"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:267
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:271
 msgid "Please choose AK"
 msgstr "Bitte AK auswählen"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:287
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:291
 msgid "Could not create slot"
 msgstr "Konnte Slot nicht anlegen"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:303
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:307
 msgid "Add slot"
 msgstr "Slot hinzufügen"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:311
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:315
 msgid "Add"
 msgstr "Hinzufügen"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:312
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:316
 msgid "Cancel"
 msgstr "Abbrechen"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:339
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:343
 msgid "Unscheduled"
 msgstr "Nicht gescheduled"
 
-#: AKScheduling/templates/admin/AKScheduling/scheduling.html:364
+#: AKScheduling/templates/admin/AKScheduling/scheduling.html:368
 msgid "Level"
 msgstr "Level"
 
@@ -220,6 +220,24 @@ msgstr ""
 msgid "AKs without slots"
 msgstr "AKs ohne Slots"
 
+#: AKScheduling/templates/admin/AKScheduling/status/cvs.html:6
+msgid ""
+"\n"
+"            <h3>Constraint Violation</h3>\n"
+"            "
+msgid_plural ""
+"\n"
+"            <h3>Constraint Violations</h3>\n"
+"        "
+msgstr[0] ""
+"\n"
+"            <h3>Constraintverletzung</h3>\n"
+"            "
+msgstr[1] ""
+"\n"
+"            <h3>Constraintverletzungen</h3>\n"
+"        "
+
 #: AKScheduling/templates/admin/AKScheduling/unscheduled.html:7
 msgid "Unscheduled AK Slots"
 msgstr "Noch nicht geschedulte AK-Slots"
@@ -228,19 +246,19 @@ msgstr "Noch nicht geschedulte AK-Slots"
 msgid "Count"
 msgstr "Anzahl"
 
-#: AKScheduling/views.py:148
+#: AKScheduling/views.py:150
 msgid "Interest updated"
 msgstr "Interesse aktualisiert"
 
-#: AKScheduling/views.py:199
+#: AKScheduling/views.py:201
 msgid "Wishes"
 msgstr "Wünsche"
 
-#: AKScheduling/views.py:217
+#: AKScheduling/views.py:219
 msgid "Cleanup: Delete unscheduled slots for wishes"
 msgstr "Aufräumen: Noch nicht geplante Slots für Wünsche löschen"
 
-#: AKScheduling/views.py:224
+#: AKScheduling/views.py:226
 #, python-brace-format
 msgid ""
 "The following {count} unscheduled slots of wishes will be deleted:\n"
@@ -252,15 +270,15 @@ msgstr ""
 "\n"
 " {slots}"
 
-#: AKScheduling/views.py:231
+#: AKScheduling/views.py:233
 msgid "Unscheduled slots for wishes successfully deleted"
 msgstr "Noch nicht geplante Slots für Wünsche erfolgreich gelöscht"
 
-#: AKScheduling/views.py:245
+#: AKScheduling/views.py:247
 msgid "Create default availabilities for AKs"
 msgstr "Standardverfügbarkeiten für AKs anlegen"
 
-#: AKScheduling/views.py:252
+#: AKScheduling/views.py:254
 #, python-brace-format
 msgid ""
 "The following {count} AKs don't have any availability information. Create "
@@ -273,16 +291,20 @@ msgstr ""
 "\n"
 " {aks}"
 
-#: AKScheduling/views.py:272
+#: AKScheduling/views.py:274
 #, python-brace-format
 msgid "Could not create default availabilities for AK: {ak}"
 msgstr "Konnte keine Verfügbarkeit anlegen für AK: {ak}"
 
-#: AKScheduling/views.py:277
+#: AKScheduling/views.py:279
 #, python-brace-format
 msgid "Created default availabilities for {count} AKs"
 msgstr "Standardverfügbarkeiten für {count} AKs angelegt"
 
+#: AKScheduling/views.py:290
+msgid "Constraint Violations"
+msgstr "Constraintverletzungen"
+
 #~ msgid "Bitte AK auswählen"
 #~ msgstr "Please sel"
 
diff --git a/AKScheduling/templates/admin/AKScheduling/status/cvs.html b/AKScheduling/templates/admin/AKScheduling/status/cvs.html
new file mode 100644
index 0000000000000000000000000000000000000000..e4eab5a9c5ce962a2af5866b84c69e63a5306807
--- /dev/null
+++ b/AKScheduling/templates/admin/AKScheduling/status/cvs.html
@@ -0,0 +1,12 @@
+{% load i18n %}
+
+<div class="text-center">
+    <a href="{% url 'admin:constraint-violations' slug=event.slug %}">
+        <h1>{{ constraint_violations_count }}</h1>
+        {% blocktrans count constraint_violations_count=constraint_violations_count %}
+            <h3>Constraint Violation</h3>
+            {% plural %}
+            <h3>Constraint Violations</h3>
+        {% endblocktrans %}
+    </a>
+</div>
diff --git a/AKScheduling/views.py b/AKScheduling/views.py
index f0be637f0ec4129507d08129e4b2801eeb671f90..c7ecd4fc3d419c00857d6f53d4e8abc1893f61c6 100644
--- a/AKScheduling/views.py
+++ b/AKScheduling/views.py
@@ -5,6 +5,8 @@ from django.urls import reverse_lazy
 from django.utils.translation import gettext_lazy as _
 from django.views.generic import ListView, DetailView, UpdateView
 
+from AKModel.metaviews import status_manager
+from AKModel.metaviews.status import TemplateStatusWidget
 from AKModel.models import AKSlot, AKTrack, Event, AK, AKCategory
 from AKModel.metaviews.admin import EventSlugMixin, FilterByEventSlugMixin, AdminViewMixin, IntermediateAdminView
 from AKScheduling.forms import AKInterestForm, AKAddSlotForm
@@ -277,3 +279,22 @@ class AvailabilityAutocreateView(EventSlugMixin, IntermediateAdminView):
             _("Created default availabilities for {count} AKs").format(count=success_count)
         )
         return super().form_valid(form)
+
+
+@status_manager.register(name="scheduling_constraint_violations")
+class CVWidget(TemplateStatusWidget):
+    """
+    Status page widget: Constraint violations
+    """
+    required_context_type = "event"
+    title = _("Constraint Violations")
+    template_name = "admin/AKScheduling/status/cvs.html"
+
+    def render_status(self, context: {}) -> str:
+        return "success" if context["constraint_violations_count"] == 0 else "warning"
+
+    def get_context_data(self, context) -> dict:
+        context = super().get_context_data(context)
+        context["constraint_violations_count"] = (context["event"].constraintviolation_set
+                                                  .filter(manually_resolved=False).count())
+        return context