diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/AccessConfigurationController.java b/src/main/java/org/olat/resource/accesscontrol/ui/AccessConfigurationController.java
index b141f73ec7d7b2b9abe598df344efa27284e5c66..c25c69f6465d99c762e999d1e4cd1ae4c7c47dad 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/AccessConfigurationController.java
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/AccessConfigurationController.java
@@ -211,6 +211,7 @@ public class AccessConfigurationController extends FormBasicController {
 				OfferAccess newLink = editMethodCtrl.commitChanges();
 				newLink = acService.saveOfferAccess(newLink);
 				replace(newLink);
+				checkOverlap();
 				fireEvent(ureq, Event.CHANGED_EVENT);
 			}
 			cmc.deactivate();
@@ -242,6 +243,7 @@ public class AccessConfigurationController extends FormBasicController {
 			if("delete".equals(cmd)) {
 				AccessInfo infos = (AccessInfo)source.getUserObject();
 				removeMethod(infos);
+				checkOverlap();
 				fireEvent(ureq, Event.CHANGED_EVENT);
 			} else if("edit".equals(cmd)) {
 				AccessInfo infos = (AccessInfo)source.getUserObject();
@@ -302,6 +304,7 @@ public class AccessConfigurationController extends FormBasicController {
 		}
 		
 		updateConfirmationEmail();
+		checkOverlap();
 	}
 	
 	private void updateConfirmationEmail() {
@@ -397,6 +400,34 @@ public class AccessConfigurationController extends FormBasicController {
 		dbInstance.commit();
 		loadConfigurations();
 	}
+	
+	private void checkOverlap() {
+		boolean overlap = false;
+		
+		for (AccessInfo confControllerA : confControllers) {
+			for (AccessInfo confControllerB : confControllers) {
+				// Dont compare a confController with itself
+				if (!confControllerA.equals(confControllerB)) {
+					Date aFrom = confControllerA.getLink().getValidFrom();
+					Date aTo = confControllerA.getLink().getValidTo();
+					Date bFrom = confControllerB.getLink().getValidFrom();
+					Date bTo = confControllerB.getLink().getValidTo();
+					
+					// Options: Dates cross each other or on date range is within another
+					if ((aFrom.compareTo(bFrom) <= 0 &&
+							aTo.compareTo(bTo) <= 0 && 
+							bFrom.compareTo(aTo) <= 0) ||
+						(aFrom.compareTo(bFrom) <= 0) &&
+							bTo.compareTo(aTo) <= 0 && 
+							bTo.compareTo(aFrom) >= 0) {
+						overlap = true;
+					} 
+				}
+			}
+		}
+		confControllerContainer.contextPut("overlappingConfigs", overlap);
+		confControllerContainer.setDirty(true);
+	}
 
 	public class AccessInfo {
 		private String name;
diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html b/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
index 6c7e73dd2c71d9bbe3f3526f2a70c47962377498..925f0a8a42c72434c968b1f93aba6684c31520ac 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/_content/configuration_list.html
@@ -1,3 +1,7 @@
+#if($overlappingConfigs)
+	<div class="o_important"><i class="o_icon o_icon_important"> </i> $r.translate("accesscontrol.overlap.found")</div>
+#end
+
 #if ($confControllers && $confControllers.size() > 0)
 	#foreach($confController in $confControllers)
 		#set($css = $confController.getLink().getMethod().getMethodCssClass())
diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_de.properties
index c7a441396c7f8356b0f6c62b076a9f2f370749fd..a9fdeaf9c92a6def4dcba2b99523033e06015337 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_de.properties
@@ -23,6 +23,7 @@ accesscontrol.desc=Sie k\u00F6nnen die Buchungsmethoden f\u00FCr den Zugang zu d
 accesscontrol.desc.end=W\u00E4hlen Sie die Schaltfl\u00E4che "$\:add.accesscontrol" um aus der Liste der verf\u00FCgbaren Buchungsmethoden eine oder mehrere auszuw\u00E4hlen. Optional k\u00F6nnen Buchungsmethoden mit einem G\u00FCltigkeitsdatum versehen werden.
 accesscontrol.no.methods.full.access=Es ist noch keine Buchungsmethode konfiguriert.<br />Der Zugang zu dieser Ressource steht allen Systembenutzern ohne Buchung offen. W\u00E4hlen Sie die Schaltfl\u00E4che "$\:add.accesscontrol" um den Zugang einzuschr\u00E4nken und/oder eine Buchung zu erzwingen.
 accesscontrol.no.methods.no.access=Es ist noch keine Buchungsmethode konfiguriert.<br />Diese Ressource kann nur von den Teilnehmer der Ressource verwendet werden. W\u00E4hlen Sie die Schaltfl\u00E4che "$\:add.accesscontrol" um eine Buchungsmethode zu w\u00E4hlen und die Ressource zu ver\u00F6ffentlichen.
+accesscontrol.overlap.found=Es wurden \u00FCberlappende Buchungsmethoden gefunden. Bitte stellen Sie sicher, dass dies beabsichtig und korrekt ist.
 accesscontrol.table.from=g\u00FCltig von
 accesscontrol.table.method=Buchungsmethode
 accesscontrol.table.to=bis
diff --git a/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_en.properties
index a47f66b45d118e7e662482cd069e723c093b40f8..f0be1239b7f88eaa3d8e3867cbae1879f2a95f8f 100644
--- a/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/resource/accesscontrol/ui/_i18n/LocalStrings_en.properties
@@ -23,6 +23,7 @@ accesscontrol.desc=You can configure booking methods for accessing this resource
 accesscontrol.desc.end=Select the button "$\:add.accesscontrol" to select one or more booking methods. As an option you can also define the period in which each booking method is valid.
 accesscontrol.no.methods.full.access=There is no booking method configured to restrict access. This resource can be accessed by all known users without an explicit booking. Select the button "$\:add.accesscontrol"  to restrict access and/or to require an explicit booking.
 accesscontrol.no.methods.no.access=There is no booking method configured. This resource can only be accessed by explicit members of this resource. Select the button "$\:add.accesscontrol" to add a booking method and to publish the resource.
+accesscontrol.overlap.found=There are overlapping booking methods. Please make sure this is intended and correct.
 accesscontrol.table.from=valid from
 accesscontrol.table.method=Booking method
 accesscontrol.table.to=to