diff --git a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java
index 6ec4098e3133ef150c5f1657ce77b0ce14eb5fe1..8fff348429400daf1035515b496b7b013b559273 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/manager/BigBlueButtonMeetingDAO.java
@@ -174,6 +174,8 @@ public class BigBlueButtonMeetingDAO {
 		  .append("  (meeting.startDate>=:startDate and meeting.endDate<=:endDate)")
 		  .append("  or")
 		  .append("  (meeting.startDate<=:startDate and meeting.endDate>=:endDate)")
+		  .append("  or")
+		  .append("  meeting.permanent=true")
 		  .append(")");
 		return dbInstance.getCurrentEntityManager()
 				.createQuery(sb.toString(), Long.class)
diff --git a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
index 2f754ad686210f39cce325d65b5f80399276ff0a..03f1caab3f08dee8fadd6ce7bebd7134c10784df 100644
--- a/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
+++ b/src/main/java/org/olat/modules/bigbluebutton/ui/EditBigBlueButtonMeetingController.java
@@ -199,6 +199,7 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 	
 	private void updateUI() {
 		boolean permanent = permanentEl.isAtLeastSelected(1);
+		permanentEl.clearError();
 		startDateEl.setVisible(!permanent);
 		leadTimeEl.setVisible(!permanent);
 		endDateEl.setVisible(!permanent);
@@ -288,9 +289,14 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		}
 		
 		// dates ok
-		if(allOk && (!permanentEl.isVisible() || !permanentEl.isAtLeastSelected(1))) {
-			allOk &= validateDuration();
-			allOk &= validateSlot();
+		permanentEl.clearError();
+		if(allOk) {
+			if(permanentEl.isVisible() && permanentEl.isAtLeastSelected(1)) {
+				allOk &= validatePermanentSlot();
+			} else {
+				allOk &= validateDuration();
+				allOk &= validateSlot();
+			}
 		}
 		
 		nameEl.clearError();
@@ -353,6 +359,24 @@ public class EditBigBlueButtonMeetingController extends FormBasicController {
 		return allOk;
 	}
 	
+	private boolean validatePermanentSlot() {
+		boolean allOk = true;
+		
+		Calendar cal = Calendar.getInstance();
+		cal.add(Calendar.YEAR, 12);
+		Date endDate = cal.getTime();
+		
+		BigBlueButtonMeetingTemplate template = getSelectedTemplate();
+		boolean slotFree = bigBlueButtonManager.isSlotAvailable(meeting, template,
+				new Date(), 0, endDate, 0);
+		if(!slotFree) {
+			permanentEl.setErrorKey("server.overloaded", null);
+			allOk &= false;
+		}
+		
+		return allOk;
+	}
+	
 	private BigBlueButtonMeetingTemplate getSelectedTemplate() {
 		String selectedTemplateId = templateEl.getSelectedKey();
 		return templates.stream()