diff --git a/entity/Activity_entity/entityfields/entrydate/onValidation.js b/entity/Activity_entity/entityfields/entrydate/onValidation.js
index 0f2440a7724b5f1cb7425fad3b4bcac1ffaf246a..437a5ee635ebbcb597bd5445d14249f9ac93f1c9 100644
--- a/entity/Activity_entity/entityfields/entrydate/onValidation.js
+++ b/entity/Activity_entity/entityfields/entrydate/onValidation.js
@@ -1,9 +1,9 @@
-import("system.datetime");
+import("Date_lib");
 import("system.translate");
 import("system.vars");
 import("system.result");
 import("Entity_lib");
 
 var entryDate = vars.get("local.value");
-if (Number(datetime.clearTime(entryDate)) > Number(vars.get("$sys.today")))
+if (!DateUtils.validateNotInFuture(entryDate))
     result.string(translate.text("Entrydate must not be in the future"));
\ No newline at end of file
diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod
index 53eff28a3c4c5f6ab4682e4417916d7f097f4ee3..364d1c995d01e77921d5835559dde04ca9de5745 100644
--- a/entity/Competition_entity/Competition_entity.aod
+++ b/entity/Competition_entity/Competition_entity.aod
@@ -16,6 +16,7 @@
       <resolution>DAY</resolution>
       <outputFormat>dd.MM.yyyy</outputFormat>
       <inputFormat>dd.MM.yyyy</inputFormat>
+      <onValidation>%aditoprj%/entity/Competition_entity/entityfields/date_cancelled/onValidation.js</onValidation>
     </entityField>
     <entityField>
       <name>INFO</name>
diff --git a/entity/Competition_entity/entityfields/date_cancelled/onValidation.js b/entity/Competition_entity/entityfields/date_cancelled/onValidation.js
new file mode 100644
index 0000000000000000000000000000000000000000..193af4e5f90b053ec40e9dd7e7d11d5bc28a5f0a
--- /dev/null
+++ b/entity/Competition_entity/entityfields/date_cancelled/onValidation.js
@@ -0,0 +1,7 @@
+import("system.translate");
+import("system.vars");
+import("system.result");
+import("Date_lib");
+
+if (!DateUtils.validateNotInFuture(vars.get("$local.value")))
+    result.string(translate.text("Excreted can't be in the future"));
diff --git a/entity/Person_entity/entityfields/dateofbirth/onValidation.js b/entity/Person_entity/entityfields/dateofbirth/onValidation.js
index c21866aca67aec0fddeeb6bef3ff7b017023cc0f..43c36ddb3d0f82c3ac2d24246427e3baea5e02e5 100644
--- a/entity/Person_entity/entityfields/dateofbirth/onValidation.js
+++ b/entity/Person_entity/entityfields/dateofbirth/onValidation.js
@@ -1,9 +1,9 @@
-import("system.datetime");
+import("Date_lib");
 import("system.translate");
 import("system.vars");
 import("system.result");
 import("Entity_lib");
 
 var dob = vars.get("local.value");
-if (Number(datetime.clearTime(dob)) > Number(vars.get("$sys.today")))
+if (!DateUtils.validateNotInFuture(dob))
     result.string(translate.text("date of birth must not be in the future"));
\ No newline at end of file
diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
index 4d777ed8470bdf5be4af131b6f7517fbcf3aef9c..9aed5eb39b8e12e712e4aed72b62f7c4437a4987 100644
--- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
+++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod
@@ -5088,6 +5088,9 @@
     <entry>
       <key>Download</key>
     </entry>
+    <entry>
+      <key>Copy Campaign</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
   <sqlModels>
diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
index 642ac35f6957868808e5ea28d7c0a70df8be7055..241d2d67eb1c60e8e96555c36a8ee81130d67da5 100644
--- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
+++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod
@@ -34,6 +34,10 @@
       <key>No data has been anonymized.</key>
       <value>Keine Daten wurden anonymisiert.</value>
     </entry>
+    <entry>
+      <key>Excreted can't be in the future</key>
+      <value>Ausgeschieden darf nicht in der Zukunft liegen</value>
+    </entry>
     <entry>
       <key>Anonymization</key>
       <value>Anonymisierung</value>
diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
index 15d6919df1bbc0efd4de6637800012ccfb007a36..0c3ad5948c679ffe8a6b0cf2a57a770f23d246e7 100644
--- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
+++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod
@@ -5137,6 +5137,9 @@
     <entry>
       <key>Download</key>
     </entry>
+    <entry>
+      <key>Copy Campaign</key>
+    </entry>
   </keyValueMap>
   <font name="Dialog" style="0" size="11" />
 </language>
diff --git a/process/Date_lib/process.js b/process/Date_lib/process.js
index 5e157445c3a5c69fd054929d7c210f8d7505422f..60a391e0f50071c1c2390d35d5a2b0874de60ba6 100644
--- a/process/Date_lib/process.js
+++ b/process/Date_lib/process.js
@@ -1,3 +1,4 @@
+import("system.vars");
 import("system.eMath");
 import("system.translate");
 import("system.datetime");
@@ -142,4 +143,16 @@ DateUtils.formatDurationFromStartTillEnd = function(pStartTime, pEndTime, pLocal
     var duration = eMath.subInt(pEndTime , pStartTime);
     duration = Math.max(0, Number(duration));
     return DateUtils.formatDuration(duration, pLocale);
-};
\ No newline at end of file
+};
+
+/**
+ * validates if the given date is not in the future
+ * 
+ * @param {string|number} pDate
+ * 
+ * @return {boolean} true if the date is today or before today
+ */
+DateUtils.validateNotInFuture = function (pDate)
+{
+    return Number(datetime.clearTime(pDate)) <= Number(vars.get("$sys.today"));
+}
\ No newline at end of file