diff --git a/mo/web/org_round.py b/mo/web/org_round.py
index 8f5f7c0926b0edb7ecc01c179b6328b12700094e..b4da3657181f26e13febaa369f5fb1c09b88133b 100644
--- a/mo/web/org_round.py
+++ b/mo/web/org_round.py
@@ -458,6 +458,17 @@ class RoundEditForm(FlaskForm):
                 if num_tasks == 0:
                     raise ValidationError('Nejsou-li definovány žádné úlohy, stav musí být "připravuje se"')
 
+    def abstract_validate_time_order(self, field):
+        if field.data is not None:
+            if any([i.data is not None and i.data > field.data for i in [self.ct_tasks_start, self.pr_tasks_start]]):
+                raise ValidationError('Soutěž nesmí skončit dříve než začne.')
+
+    def validate_ct_submit_end(self, field):
+        self.abstract_validate_time_order(field)
+
+    def validate_pr_submit_end(self, field):
+        self.abstract_validate_time_order(field)
+
 
 @app.route('/org/contest/r/<int:id>/edit', methods=('GET', 'POST'))
 def org_round_edit(id: int):