diff --git a/models/database.py b/models/database.py
index 42fea95d1f1944e76f4fbede2ce4095aba8b2dff..f11780df01e8c95dc0c82b046869012371dcfc19 100644
--- a/models/database.py
+++ b/models/database.py
@@ -108,6 +108,12 @@ class ProtocolType(DatabaseModel):
             return None
         return candidates[0]
 
+    def get_protocols_on_date(self, protocol_date):
+        return [
+            protocol for protocol in self.protocols
+            if protocol.date == protocol_date
+        ]
+
     def has_public_view_right(self, user, check_networks=True):
         return (
             self.has_public_anonymous_view_right(check_networks=check_networks)
@@ -430,7 +436,12 @@ class Protocol(DatabaseModel):
             tzinfo=tz.tzlocal())
 
     @staticmethod
-    def create_new_protocol(protocoltype, date, start_time=None, invitation_by=None):
+    def create_new_protocol(
+            protocoltype, date, start_time=None, allow_duplicate=False):
+        if not allow_duplicate:
+            duplicate_candidates = protocoltype.get_protocols_on_date(date)
+            if duplicate_candidates:
+                return duplicate_candidates[0]
         if start_time is None:
             start_time = protocoltype.usual_time
         if invitation_by is None:
diff --git a/server.py b/server.py
index 1c378dae2248520ce8b423b974ddf6ba85c1c2a2..1bca2f995ce510bf0dffbfb4d050ad15ed70f99e 100755
--- a/server.py
+++ b/server.py
@@ -75,7 +75,7 @@ try:
             "release": get_git_revision(),
         }
     sentry.get_user_info = get_user_info
-except ModuleNotFoundError:
+except ImportError:
     print("Raven not installed. Not sending issues to Sentry.")
 except AttributeError:
     print("DSN not configured. Not sending issues to Sentry.")
@@ -91,7 +91,7 @@ def make_celery(app, config):
         raven_client = RavenClient(config.SENTRY_DSN)
         register_logger_signal(raven_client)
         register_signal(raven_client)
-    except ModuleNotFoundError:
+    except ImportError:
         print("Raven not installed. Not sending celery issues to Sentry.")
     except AttributeError:
         print("DSN not configured. Not sending celery issues to Sentry.")
@@ -937,7 +937,7 @@ def send_protocol_reminder(protocol):
     if not config.MAIL_ACTIVE:
         flash("Die Mailfunktion ist nicht aktiviert.", "alert-error")
         return back.redirect("show_protocol", protocol_id=protocol.id)
-    meetingreminders = protocol.reminders
+    meetingreminders = protocol.protocoltype.reminders
     if len(meetingreminders) == 0:
         flash("Für diesen Protokolltyp sind keine Einladungsmails "
               "konfiguriert.", "alert-error")
diff --git a/tasks.py b/tasks.py
index 50d047684b23ee32a6e22e8cf71414cd8f05d8ba..1d142ed568a01422c8993f226540d1136bd13442 100644
--- a/tasks.py
+++ b/tasks.py
@@ -492,8 +492,9 @@ def parse_protocol_async_inner(protocol):
         if len(protocol_tag.values) > 1:
             new_protocol_time = datetime.strptime(
                 protocol_tag.values[1], "%H:%M")
-        Protocol.create_new_protocol(
-            protocol.protocoltype, new_protocol_date, new_protocol_time)
+        if not protocol.protocoltype.get_protocols_on_date(new_protocol_date):
+            Protocol.create_new_protocol(
+                protocol.protocoltype, new_protocol_date, new_protocol_time)
 
     # TOPs
     old_tops = list(protocol.tops)