diff --git a/src/main/java/org/olat/admin/quota/QuotaController.java b/src/main/java/org/olat/admin/quota/QuotaController.java
index 3de15be5b98a765e0fbcb5706fb2d68d0e8085d4..6b58d0b7cd919b91eae61a847a1c19075834f916 100644
--- a/src/main/java/org/olat/admin/quota/QuotaController.java
+++ b/src/main/java/org/olat/admin/quota/QuotaController.java
@@ -153,7 +153,7 @@ public class QuotaController extends BasicController {
 	}
 	
 	private void doEditQuota(UserRequest ureq, Quota q) {
-		if(quotaEditCtr != null) return;
+		if(guardModalController(quotaEditCtr)) return;
 		
 		quotaEditCtr = new GenericQuotaEditController(ureq, getWindowControl(), q, false);
 		listenTo(quotaEditCtr);
@@ -164,7 +164,7 @@ public class QuotaController extends BasicController {
 	}
 	
 	private void doAddQuota(UserRequest ureq) {
-		if(quotaEditCtr != null) return;
+		if(guardModalController(quotaEditCtr)) return;
 		
 		// start edit workflow in dedicated quota edit controller
 		removeAsListenerAndDispose(quotaEditCtr);
diff --git a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
index 1fe5981fdaa1c2936148c438c432ac30c5d83f76..11b6cf405f95c6160095442b7ac077439e2f3335 100644
--- a/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
+++ b/src/main/java/org/olat/admin/user/SystemRolesAndRightsController.java
@@ -472,7 +472,7 @@ public class SystemRolesAndRightsController extends FormBasicController {
 	}
 	
 	private void doAddToOrganisation(UserRequest ureq) {
-		if(selectOrganisationCtrl != null) return;
+		if(guardModalController(selectOrganisationCtrl)) return;
 		
 		List<Organisation> upgradeableToOrganisations = new ArrayList<>(manageableOrganisations);
 		upgradeableToOrganisations.removeAll(organisations);
diff --git a/src/main/java/org/olat/admin/user/UserAdminController.java b/src/main/java/org/olat/admin/user/UserAdminController.java
index 05039608df25a04d089ac5ac504d13c9ae960b85..419295838af031f64e026c89673fdd21d3c50e35 100644
--- a/src/main/java/org/olat/admin/user/UserAdminController.java
+++ b/src/main/java/org/olat/admin/user/UserAdminController.java
@@ -299,7 +299,7 @@ public class UserAdminController extends BasicController implements Activateable
 	}
 	
 	private void doExportData(UserRequest ureq) {
-		if(exportDataCtrl != null) return;
+		if(guardModalController(exportDataCtrl)) return;
 		
 		exportDataCtrl = new UserDataExportController(ureq, getWindowControl(), editedIdentity);
 		listenTo(exportDataCtrl);
diff --git a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
index 7f7e4fd0081018c53db15234571762a5c0de1d2d..b5c4166183676c3656d6f10648563194fd42cebe 100644
--- a/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
+++ b/src/main/java/org/olat/commons/calendar/ui/WeeklyCalendarController.java
@@ -758,7 +758,7 @@ public class WeeklyCalendarController extends FormBasicController implements Act
 	 * @param kalendarWrapper
 	 */
 	private void pushEditEventController(UserRequest ureq, KalendarEvent kalendarEvent, KalendarRenderWrapper kalendarWrapper) {
-		if(editController != null) return;
+		if(guardModalController(editController)) return;
 		
 		removeAsListenerAndDispose(cmc);
 		removeAsListenerAndDispose(editController);
@@ -789,7 +789,7 @@ public class WeeklyCalendarController extends FormBasicController implements Act
 	}
 	
 	private void pushAddEventController(CalendarGUIAddEvent addEvent, UserRequest ureq) {
-		if(editController != null || ureq.getUserSession().getRoles().isGuestOnly()) {
+		if(guardModalController(editController) || ureq.getUserSession().getRoles().isGuestOnly()) {
 			return;
 		}
 		removeAsListenerAndDispose(cmc);
diff --git a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
index 107e049e95cc0a8b5f739fe6cf847b121c81fe07..5ded8166554d286bedfeed4f08fccafc57c1f26c 100644
--- a/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
+++ b/src/main/java/org/olat/commons/memberlist/ui/MembersMailController.java
@@ -414,7 +414,7 @@ public class MembersMailController extends FormBasicController {
 	}
 
 	private void doChooseMember(UserRequest ureq) {
-		if(selectMemberCtrl != null || cmc != null) return;
+		if(guardModalController(selectMemberCtrl)) return;
 		
 		List<Member> owners = ownerList;
 		List<Member> coaches = coachList;
diff --git a/src/main/java/org/olat/core/commons/controllers/filechooser/LinkFileCombiCalloutController.java b/src/main/java/org/olat/core/commons/controllers/filechooser/LinkFileCombiCalloutController.java
index 68cf9c88845adcbeeffb828014aca3b253c87290..e3e29a20a8a86618d455a2374aef634e75c95cbd 100644
--- a/src/main/java/org/olat/core/commons/controllers/filechooser/LinkFileCombiCalloutController.java
+++ b/src/main/java/org/olat/core/commons/controllers/filechooser/LinkFileCombiCalloutController.java
@@ -383,7 +383,7 @@ public class LinkFileCombiCalloutController extends BasicController {
 	 * @param newModalContentController
 	 */
 	private void displayModal(Controller newModalContentController) {
-		if (newModalContentController == null) return;
+		if (guardModalController(newModalContentController)) return;
 		currentModalController = newModalContentController;
 		listenTo(currentModalController);
 		cmc = new CloseableModalController(getWindowControl(), "close", newModalContentController.getInitialComponent());
diff --git a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VersionMaintenanceForm.java b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VersionMaintenanceForm.java
index a87e27882f43a9dfc2d2ce7f5c40b13b7ddc1b5e..e1747f51c40ea7ec4946f97de1472d8bde2f6a40 100644
--- a/src/main/java/org/olat/core/commons/services/vfs/ui/version/VersionMaintenanceForm.java
+++ b/src/main/java/org/olat/core/commons/services/vfs/ui/version/VersionMaintenanceForm.java
@@ -172,7 +172,7 @@ public class VersionMaintenanceForm extends FormBasicController implements Progr
 	}
 	
 	private void doOpenOrphansList(UserRequest ureq) {
-		if(orphansController  != null) return;
+		if(guardModalController(orphansController)) return;
 		
 		orphansController = new VersionsDeletedFileController(ureq, getWindowControl());			
 		listenTo(orphansController);
diff --git a/src/main/java/org/olat/core/gui/control/controller/BasicController.java b/src/main/java/org/olat/core/gui/control/controller/BasicController.java
index 4022f3c64d4a3b5ce588294813cb87a4fa2852a8..adc862c0cc553a2e28b69fd232fb53181aac8e4f 100644
--- a/src/main/java/org/olat/core/gui/control/controller/BasicController.java
+++ b/src/main/java/org/olat/core/gui/control/controller/BasicController.java
@@ -179,6 +179,10 @@ public abstract class BasicController extends DefaultController {
 			controller.dispose();
 		}
 	}
+	
+	protected boolean guardModalController(Controller controller) {
+		return controller != null && !controller.isDisposed();
+	}
 
 	/**
 	 * convenience method: registers a mapper which will be automatically
diff --git a/src/main/java/org/olat/core/gui/control/generic/closablewrapper/CloseableModalController.java b/src/main/java/org/olat/core/gui/control/generic/closablewrapper/CloseableModalController.java
index 58a0287c85c90ed63b8e2de9e8a108b6567a810a..7895d2903daad0196111a3b64bda29c24c2dd6de 100644
--- a/src/main/java/org/olat/core/gui/control/generic/closablewrapper/CloseableModalController.java
+++ b/src/main/java/org/olat/core/gui/control/generic/closablewrapper/CloseableModalController.java
@@ -85,7 +85,7 @@ public class CloseableModalController extends DefaultController {
 		 this(wControl, closeButtonText, modalContent, displayAsOverlay, title, true);
 	}
 
-	public CloseableModalController(WindowControl wControl, String closeButtonText, Component modalContent, boolean showCloseIcon) {
+	private CloseableModalController(WindowControl wControl, String closeButtonText, Component modalContent, boolean showCloseIcon) {
 		 this(wControl, closeButtonText, modalContent, true, null, showCloseIcon);
 	}
 
diff --git a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java
index dc845aad461e782734e326bab2cd617629942ea7..17bb3671aa2c8048fc368cdcc0536a1785b8c314 100644
--- a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java
+++ b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeEditController.java
@@ -772,7 +772,7 @@ public class AssessmentModeEditController extends FormBasicController {
 	}
 	
 	private void doChooseElements(UserRequest ureq) {
-		if(chooseElementsCtrl != null) return;
+		if(guardModalController(chooseElementsCtrl)) return;
 
 		chooseElementsCtrl = new ChooseElementsController(ureq, getWindowControl(), elementKeys, courseOres);
 		listenTo(chooseElementsCtrl);
@@ -784,7 +784,7 @@ public class AssessmentModeEditController extends FormBasicController {
 	}
 	
 	private void doChooseStartElement(UserRequest ureq) {
-		if(chooseElementsCtrl != null) return;
+		if(guardModalController(chooseElementsCtrl)) return;
 		
 		List<String> allowedKeys = courseElementsRestrictionEl.isAtLeastSelected(1)
 				? new ArrayList<>(elementKeys) : null;
@@ -798,7 +798,7 @@ public class AssessmentModeEditController extends FormBasicController {
 	}
 	
 	private void doChooseAreas(UserRequest ureq) {
-		if(areaChooseCtrl != null) return;
+		if(guardModalController(areaChooseCtrl)) return;
 
 		ICourse course = CourseFactory.loadCourse(courseOres);
 		CourseGroupManager groupManager = course.getCourseEnvironment().getCourseGroupManager();
@@ -812,7 +812,7 @@ public class AssessmentModeEditController extends FormBasicController {
 	}
 	
 	private void doChooseGroups(UserRequest ureq) {
-		if(groupChooseCtrl != null) return;
+		if(guardModalController(groupChooseCtrl)) return;
 		
 		ICourse course = CourseFactory.loadCourse(courseOres);
 		CourseGroupManager groupManager = course.getCourseEnvironment().getCourseGroupManager();
@@ -826,7 +826,7 @@ public class AssessmentModeEditController extends FormBasicController {
 	}
 	
 	private void doChooseCurriculumElements(UserRequest ureq) {
-		if(curriculumElementChooseCtrl != null) return;
+		if(guardModalController(curriculumElementChooseCtrl)) return;
 		
 		ICourse course = CourseFactory.loadCourse(courseOres);
 		CourseGroupManager groupManager = course.getCourseEnvironment().getCourseGroupManager();
diff --git a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeForLectureEditController.java b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeForLectureEditController.java
index 0e899c4ce0828845c3c3a4a0946cebef3cc2cdda..78d6364ab9eb590abe3bf300872da0b2b50f7783 100644
--- a/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeForLectureEditController.java
+++ b/src/main/java/org/olat/course/assessment/ui/mode/AssessmentModeForLectureEditController.java
@@ -402,7 +402,7 @@ public class AssessmentModeForLectureEditController extends FormBasicController
 	}
 	
 	private void doChooseElements(UserRequest ureq) {
-		if(chooseElementsCtrl != null) return;
+		if(guardModalController(chooseElementsCtrl)) return;
 
 		chooseElementsCtrl = new ChooseElementsController(ureq, getWindowControl(), elementKeys, courseOres);
 		listenTo(chooseElementsCtrl);
diff --git a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
index 4379abf373f987110cce8537204f73c962bcf6d1..5db70b48e6a5a14e8ecded2caea568240b7f06c8 100644
--- a/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
+++ b/src/main/java/org/olat/course/certificate/ui/CertificateAndEfficiencyStatementListController.java
@@ -396,7 +396,7 @@ public class CertificateAndEfficiencyStatementListController extends FormBasicCo
 	}
 
 	private void doCollectMedia(UserRequest ureq, String title, Long efficiencyStatementKey) {
-		if(collectorCtrl != null) return;
+		if(guardModalController(collectorCtrl)) return;
 		
 		EfficiencyStatement fullStatement = esm.getUserEfficiencyStatementByKey(efficiencyStatementKey);
 		collectorCtrl = new CollectArtefactController(ureq, getWindowControl(), fullStatement, mediaHandler, null);
diff --git a/src/main/java/org/olat/course/editor/EditorMainController.java b/src/main/java/org/olat/course/editor/EditorMainController.java
index c05ef7a5fadbf067ad6fec49a559d80f7728b0d9..026b64e2c6c60b32953b25f7df594ff0248dba23 100644
--- a/src/main/java/org/olat/course/editor/EditorMainController.java
+++ b/src/main/java/org/olat/course/editor/EditorMainController.java
@@ -759,7 +759,7 @@ public class EditorMainController extends MainLayoutBasicController implements G
 	}
 	
 	private void doMove(UserRequest ureq, ICourse course, boolean copy) {
-		if(moveCopyController != null) return;
+		if(guardModalController(moveCopyController)) return;
 		
 		TreeNode tn = menuTree.getSelectedNode();
 		if (tn == null) {
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
index d18830c9e74f7074ff6c62c91167d133bf6846f9..1b80fe9f05cb57a542313afc2b1ad433579541e0 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListAssessmentController.java
@@ -482,7 +482,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 	}
 	
 	private void doOpenBoxAssessment(UserRequest ureq) {
-		if(boxAssessmentCtrl != null) return;
+		if(guardModalController(boxAssessmentCtrl)) return;
 
 		List<CheckListAssessmentRow> rows = model.getObjects();
 		boxAssessmentCtrl = new CheckboxAssessmentController(ureq, getWindowControl(), checkboxList, rows,
@@ -630,7 +630,7 @@ public class CheckListAssessmentController extends FormBasicController implement
 	}
 	
 	private void doOpenEdit(UserRequest ureq, CheckListAssessmentRow row) {
-		if(editCtrl != null) return;
+		if(guardModalController(editCtrl)) return;
 		
 		ICourse course = CourseFactory.loadCourse(courseOres);
 		Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentityKey());
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
index 287b671e1b2d3dec7d12b69c677b27b5da03e8f0..51e90f0eb07e6e38737b625a8d9eead28c21aee2 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListBoxListEditController.java
@@ -264,7 +264,7 @@ public class CheckListBoxListEditController extends FormBasicController {
 	}
 
 	private void doOpenEdit(UserRequest ureq, Checkbox checkbox, boolean newCheckbox, String title) {
-		if(editCtrl != null) return;
+		if(guardModalController(editCtrl)) return;
 		
 		Boolean hasScore = (Boolean)config.get(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD);
 		boolean withScore = (hasScore == null || hasScore.booleanValue());	
diff --git a/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckboxListStepController.java b/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckboxListStepController.java
index 4317dff2e74a080bc6310d3cad1e707ea44acf5e..b968bdf897963007c0b3ca239b556008c77896cf 100644
--- a/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckboxListStepController.java
+++ b/src/main/java/org/olat/course/nodes/cl/ui/wizard/CheckboxListStepController.java
@@ -192,7 +192,7 @@ public class CheckboxListStepController extends StepFormBasicController {
 	}
 
 	private void doOpenEdit(UserRequest ureq, Checkbox checkbox, boolean newCheckbox, String title) {
-		if(editCtrl != null) return;
+		if(guardModalController(editCtrl)) return;
 		
 		editCtrl = new CheckboxEditController(ureq, getWindowControl(), courseOres, checkbox, newCheckbox, true);
 		listenTo(editCtrl);
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAAssignedTaskController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAAssignedTaskController.java
index 00a3b3950cf09e65c2c1cebc3a26605f399a9707..0f380edece5fe4f649a8f6ad990988e5d4e82aa1 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAAssignedTaskController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAAssignedTaskController.java
@@ -172,7 +172,7 @@ public class GTAAssignedTaskController extends BasicController {
 	}
 	
 	private void doPreview(UserRequest ureq) {
-		if(viewTaskCtrl != null) return;
+		if(guardModalController(viewTaskCtrl)) return;
 		
 		VFSContainer tasksContainer = gtaManager.getTasksContainer(courseEnv, gtaNode);
 		viewTaskCtrl = new SinglePageController(ureq, getWindowControl(), tasksContainer, taskFile.getName(),
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java
index 16118faf017b3cd7a9268ca8f1e9b52a9ae57a02..acca375e455371b032e8211f2d9cfe76844e302f 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachRevisionAndCorrectionsController.java
@@ -323,7 +323,7 @@ public class GTACoachRevisionAndCorrectionsController extends BasicController im
 	}
 	
 	private void doConfirmReturnToRevisions(UserRequest ureq) {
-		if(confirmReturnToRevisionsCtrl != null) return;
+		if(guardModalController(confirmReturnToRevisionsCtrl)) return;
 		
 		confirmReturnToRevisionsCtrl = new ConfirmRevisionsController(ureq, getWindowControl(), assignedTask,
 				assessedIdentity, assessedGroup, gtaNode, courseEnv);
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedGroupListController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedGroupListController.java
index f3b160afb5af9c6b59aacac1b82deaa13292cb4f..22ced2093745a73feef94eeb7e598580a1160810 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedGroupListController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedGroupListController.java
@@ -226,7 +226,7 @@ public class GTACoachedGroupListController extends GTACoachedListController {
 	}
 	
 	private void doEditDueDate(UserRequest ureq, CoachedGroupRow row) {
-		if(editDueDatesCtrl != null) return;
+		if(guardModalController(editDueDatesCtrl)) return;
 		
 		Task task;
 		BusinessGroup assessedGroup = row.getBusinessGroup();
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantGradingController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantGradingController.java
index d8a9fd10b845e1db57ef9333dc9c45d2841bcf66..2a5edacb68e9e02e2c0232f8fca709be5d07e8c4 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantGradingController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantGradingController.java
@@ -173,7 +173,7 @@ public class GTACoachedParticipantGradingController extends BasicController {
 	}
 
 	private void doOpenAssessmentForm(UserRequest ureq) {
-		if(assessmentForm != null) return;//already open
+		if(guardModalController(assessmentForm)) return;//already open
 		
 		RepositoryEntry courseEntry = CourseFactory.loadCourse(courseOres).getCourseEnvironment().getCourseGroupManager().getCourseEntry();
 
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantListController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantListController.java
index 7916901ce4a06cdea2dbf70a34cb6a64a487a210..b5ec57d5e35376c1d49c145b1f9ebba739584ba2 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantListController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTACoachedParticipantListController.java
@@ -392,7 +392,7 @@ public class GTACoachedParticipantListController extends GTACoachedListControlle
 	}
 	
 	private void doEditDueDate(UserRequest ureq, CoachedIdentityRow row) {
-		if(editDueDatesCtrl != null) return;
+		if(guardModalController(editDueDatesCtrl)) return;
 		
 		Task task;
 		Identity assessedIdentity = securityManager.loadIdentityByKey(row.getIdentity().getIdentityKey());
@@ -416,7 +416,7 @@ public class GTACoachedParticipantListController extends GTACoachedListControlle
 	}
 	
 	private void doEditMultipleDueDates(UserRequest ureq, List<CoachedIdentityRow> rows) {
-		if(editMultipleDueDatesCtrl != null) return;
+		if(guardModalController(editMultipleDueDatesCtrl)) return;
 		
 		if(rows.isEmpty()) {
 			showWarning("error.atleast.task");
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
index e1a2e4da7a22e10f1c53638244d5f6411d8d34da..b00e95fbd9c03913ae4fd6bafc252f9dde51bb51 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/GTAParticipantController.java
@@ -421,7 +421,7 @@ public class GTAParticipantController extends GTAAbstractController implements A
 	}
 	
 	private void doConfirmResetTask(UserRequest ureq, Task task) {
-		if(confirmResetTaskCtrl != null) return;
+		if(guardModalController(confirmResetTaskCtrl)) return;
 		confirmResetTaskCtrl = new ConfirmResetTaskController(ureq, getWindowControl(), task, gtaNode, courseEnv);
 		listenTo(confirmResetTaskCtrl);
 		
diff --git a/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java b/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java
index a098585916e6f5ea5d0d69d895bacc618534c7d5..e422a91e82d1c9b77c5bef90c839e4c7a7e16f3d 100644
--- a/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java
+++ b/src/main/java/org/olat/course/nodes/gta/ui/SubmitDocumentsController.java
@@ -386,7 +386,7 @@ class SubmitDocumentsController extends FormBasicController implements Activatea
 	}
 	
 	private void doView(UserRequest ureq, String filename) {
-		if(viewDocCtrl != null) return;
+		if(guardModalController(viewDocCtrl)) return;
 		
 		viewDocCtrl = new SinglePageController(ureq, getWindowControl(), documentsContainer, filename, false);
 		listenTo(viewDocCtrl);
@@ -463,7 +463,7 @@ class SubmitDocumentsController extends FormBasicController implements Activatea
 	}
 	
 	private void doOpenDocumentUpload(UserRequest ureq) {
-		if(uploadCtrl != null) return;
+		if(guardModalController(uploadCtrl)) return;
 		
 		if(maxDocs > 0 && maxDocs <= model.getRowCount()) {
 			showWarning("error.max.documents");
diff --git a/src/main/java/org/olat/course/nodes/iq/IQIdentityListCourseNodeController.java b/src/main/java/org/olat/course/nodes/iq/IQIdentityListCourseNodeController.java
index 73d1c47968ee4d2cdc63ab203ed227bf0d9b6288..fb2d2d8defb7d7db5f0dd4d7d2f68b5f2491193c 100644
--- a/src/main/java/org/olat/course/nodes/iq/IQIdentityListCourseNodeController.java
+++ b/src/main/java/org/olat/course/nodes/iq/IQIdentityListCourseNodeController.java
@@ -402,7 +402,7 @@ public class IQIdentityListCourseNodeController extends IdentityListCourseNodeCo
 	}
 	
 	private void doValidateSignature(UserRequest ureq) {
-		if(validationCtrl != null) return;
+		if(guardModalController(validationCtrl)) return;
 		
 		validationCtrl = new ValidationXmlSignatureController(ureq, getWindowControl());
 		listenTo(validationCtrl);
diff --git a/src/main/java/org/olat/course/nodes/portfolio/PortfolioConfigForm.java b/src/main/java/org/olat/course/nodes/portfolio/PortfolioConfigForm.java
index c9efd2d8bc3a7a4a7a602fc8dff8b0ba9fb43efc..589795eb87fbe930463e3b0df4cc261013e1febd 100644
--- a/src/main/java/org/olat/course/nodes/portfolio/PortfolioConfigForm.java
+++ b/src/main/java/org/olat/course/nodes/portfolio/PortfolioConfigForm.java
@@ -231,7 +231,7 @@ public class PortfolioConfigForm extends FormBasicController {
 	}
 	
 	private void doChangeTemplate(UserRequest ureq) {
-		if(searchController != null) return;
+		if(guardModalController(searchController)) return;
 		if (isDirty) {
 			showWarning("form.dirty");
 			return;
diff --git a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java
index 1114be6bd8c2cc0eeb6b6e85a4669e792b69bd92..2d2c903a0f90c48d06fb52baab6689e0482788cd 100644
--- a/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java
+++ b/src/main/java/org/olat/group/ui/main/AbstractMemberListController.java
@@ -523,7 +523,7 @@ public abstract class AbstractMemberListController extends FormBasicController i
 	}
 	
 	protected void openEdit(UserRequest ureq, MemberRow member) {
-		if(editSingleMemberCtrl != null) return;
+		if(guardModalController(editSingleMemberCtrl)) return;
 		
 		Identity identity = securityManager.loadIdentityByKey(member.getIdentityKey());
 		editSingleMemberCtrl = new EditSingleMembershipController(ureq, getWindowControl(), identity, repoEntry, businessGroup, false, overrideManaged);
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AdminController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AdminController.java
index c81eab6f9892092473899e8e79e5f335f14a46de..c7f69709f01f55c478fcc9cc3da142a3e6eaef6d 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AdminController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AdminController.java
@@ -235,7 +235,7 @@ public class QTI21AdminController extends FormBasicController {
 	}
 
 	private void doValidate(UserRequest ureq) {
-		if(validationCtrl != null) return;
+		if(guardModalController(validationCtrl)) return;
 		
 		validationCtrl = new ValidationXmlSignatureController(ureq, getWindowControl());
 		listenTo(validationCtrl);
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessedIdentityListController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessedIdentityListController.java
index 82ededb7f8c91823ba8d4d9415afa142f0cff9a3..e184e6d3a415f3fb790787f74f643ad07da2dc8e 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessedIdentityListController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessedIdentityListController.java
@@ -120,7 +120,7 @@ public class QTI21AssessedIdentityListController extends AssessedIdentityListCon
 	}
 	
 	private void doResetData(UserRequest ureq) {
-		if(resetDataCtrl != null) return;
+		if(guardModalController(resetDataCtrl)) return;
 	
 		AssessmentToolOptions asOptions = getOptions();
 		resetDataCtrl = new QTI21ResetDataController(ureq, getWindowControl(), this.getRepositoryEntry(), asOptions);
diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
index ccd6d30e718a4d3557c500a36e7e3dde6efd8d41..fd05006c2e424eae8889d892bc04d0345f503309 100644
--- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java
@@ -516,7 +516,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController {
 	}
 
 	private void doOpenResult(UserRequest ureq, AssessmentTestSession session) {
-		if(resultCtrl != null) return;
+		if(guardModalController(resultCtrl)) return;
 		
 		//reload it to prevent lazy loading issues
 		session = qtiService.getAssessmentTestSession(session.getKey());
diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityAssessmentItemListController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityAssessmentItemListController.java
index 5087e5b005b4b547c3e035b7ca6353c77bcd6604..11b122f920ddb070ba4cc33ff2d3cfec41385977 100644
--- a/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityAssessmentItemListController.java
+++ b/src/main/java/org/olat/ims/qti21/ui/assessment/CorrectionIdentityAssessmentItemListController.java
@@ -316,7 +316,7 @@ public class CorrectionIdentityAssessmentItemListController extends FormBasicCon
 	
 	
 	private void doConfirmSaveTests(UserRequest ureq) {
-		if(confirmSaveTestCtrl != null) return;
+		if(guardModalController(confirmSaveTestCtrl)) return;
 		
 		int notCorrectedQuestions = 0;
 		List<CorrectionIdentityAssessmentItemRow> rows = tableModel.getObjects();
diff --git a/src/main/java/org/olat/modules/adobeconnect/ui/AdobeConnectEditMeetingsController.java b/src/main/java/org/olat/modules/adobeconnect/ui/AdobeConnectEditMeetingsController.java
index 593ac41fd027f3f03206784dff580cd9296fdb91..624503d01dc486ce900991a6676a37fc30e79277 100644
--- a/src/main/java/org/olat/modules/adobeconnect/ui/AdobeConnectEditMeetingsController.java
+++ b/src/main/java/org/olat/modules/adobeconnect/ui/AdobeConnectEditMeetingsController.java
@@ -186,7 +186,7 @@ public class AdobeConnectEditMeetingsController extends FormBasicController {
 	}
 
 	private void doAddMeeting(UserRequest ureq) {
-		if(editMeetingCtlr != null) return;
+		if(guardModalController(editMeetingCtlr)) return;
 		
 		editMeetingCtlr = new EditAdobeConnectMeetingController(ureq, getWindowControl(), entry, subIdent, businessGroup, configuration);
 		listenTo(editMeetingCtlr);
@@ -198,7 +198,7 @@ public class AdobeConnectEditMeetingsController extends FormBasicController {
 	}
 	
 	private void doEditMeeting(UserRequest ureq, AdobeConnectMeeting meeting) {
-		if(editMeetingCtlr != null) return;
+		if(guardModalController(editMeetingCtlr)) return;
 		
 		editMeetingCtlr = new EditAdobeConnectMeetingController(ureq, getWindowControl(), meeting, configuration);
 		listenTo(editMeetingCtlr);
diff --git a/src/main/java/org/olat/modules/ceditor/ui/PageEditorController.java b/src/main/java/org/olat/modules/ceditor/ui/PageEditorController.java
index 2c2acb478499505b6a68c9396ca771d88941132e..b3d0d320372b42cd2f20f8832df8d29cec6295ac 100644
--- a/src/main/java/org/olat/modules/ceditor/ui/PageEditorController.java
+++ b/src/main/java/org/olat/modules/ceditor/ui/PageEditorController.java
@@ -307,7 +307,7 @@ public class PageEditorController extends BasicController {
 	}
 
 	private void doAddElement(UserRequest ureq, EditorFragment refenceFragment, PageElementHandler handler, PageElementTarget target, int column) {
-		if(addCtrl != null) return;
+		if(guardModalController(addCtrl)) return;
 		
 		if(handler instanceof InteractiveAddPageElementHandler) {
 			InteractiveAddPageElementHandler interactiveHandler = (InteractiveAddPageElementHandler)handler;
diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumComposerController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumComposerController.java
index 7f84447b50ade9093881c2bf271fd94620d70b60..f880bc51eb6d9264feca4737bdbc2e68a16f539e 100644
--- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumComposerController.java
+++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumComposerController.java
@@ -477,7 +477,7 @@ public class CurriculumComposerController extends FormBasicController implements
 	}
 	
 	private void doNewCurriculumElement(UserRequest ureq) {
-		if(newElementCtrl != null) return;
+		if(guardModalController(newElementCtrl)) return;
 
 		newElementCtrl = new EditCurriculumElementController(ureq, getWindowControl(), null, curriculum, secCallback);
 		listenTo(newElementCtrl);
@@ -661,7 +661,7 @@ public class CurriculumComposerController extends FormBasicController implements
 	}
 	
 	private void doConfirmDelete(UserRequest ureq, CurriculumElementRow row) {
-		if(confirmDeleteCtrl != null) return;
+		if(guardModalController(confirmDeleteCtrl)) return;
 		
 		confirmDeleteCtrl = new ConfirmCurriculumElementDeleteController(ureq, getWindowControl(), row);
 		listenTo(confirmDeleteCtrl);
diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementResourceListController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementResourceListController.java
index 39c77340188632cb5b47aa90284ce02a954c42a4..0ad3b1a27145bae2c884df3756cbb6b985fd899d 100644
--- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementResourceListController.java
+++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementResourceListController.java
@@ -228,7 +228,7 @@ public class CurriculumElementResourceListController extends FormBasicController
 	}
 	
 	private void doChooseResources(UserRequest ureq) {
-		if(repoSearchCtr != null) return;
+		if(guardModalController(repoSearchCtr)) return;
 		
 		Roles roles = ureq.getUserSession().getRoles();
 		boolean adminSearch = roles.hasRole(OrganisationRoles.administrator)
diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementUserManagementController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementUserManagementController.java
index 734df439eb4f49d35ea12c3922f8c83d7550c771..e476f84d7fca5e647c5a34c27ba7a5996f3882cb 100644
--- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementUserManagementController.java
+++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumElementUserManagementController.java
@@ -284,7 +284,7 @@ public class CurriculumElementUserManagementController extends FormBasicControll
 	}
 	
 	private void doSearchMember(UserRequest ureq, CurriculumRoles role) {
-		if(userSearchCtrl != null) return;
+		if(guardModalController(userSearchCtrl)) return;
 
 		userSearchCtrl = new UserSearchController(ureq, getWindowControl(), true, true, false);
 		userSearchCtrl.setUserObject(role);
diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java
index f4c4416bdc6f1a390734f6039b6b175f137241cf..3da52184014ff4a5be9a79ab5e8273d5c86abd2f 100644
--- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java
+++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumListManagerController.java
@@ -340,7 +340,7 @@ public class CurriculumListManagerController extends FormBasicController impleme
 	}
 	
 	private void doImportCurriculum(UserRequest ureq) {
-		if(importCurriculumCtrl != null) return;
+		if(guardModalController(importCurriculumCtrl)) return;
 
 		importCurriculumCtrl = new ImportCurriculumController(ureq, getWindowControl());
 		listenTo(importCurriculumCtrl);
@@ -351,7 +351,7 @@ public class CurriculumListManagerController extends FormBasicController impleme
 	}
 	
 	private void doNewCurriculum(UserRequest ureq) {
-		if(newCurriculumCtrl != null) return;
+		if(guardModalController(newCurriculumCtrl)) return;
 
 		newCurriculumCtrl = new EditCurriculumController(ureq, getWindowControl(), secCallback);
 		listenTo(newCurriculumCtrl);
diff --git a/src/main/java/org/olat/modules/curriculum/ui/CurriculumUserManagementController.java b/src/main/java/org/olat/modules/curriculum/ui/CurriculumUserManagementController.java
index af4c14cc85e2f1f15c7aec842fd295891e8d0a43..c7fe81ea09d51b2a18525f55c109a279cc1d0423 100644
--- a/src/main/java/org/olat/modules/curriculum/ui/CurriculumUserManagementController.java
+++ b/src/main/java/org/olat/modules/curriculum/ui/CurriculumUserManagementController.java
@@ -272,7 +272,7 @@ public class CurriculumUserManagementController extends FormBasicController {
 	}
 	
 	private void doSearchMember(UserRequest ureq, CurriculumRoles role) {
-		if(userSearchCtrl != null) return;
+		if(guardModalController(userSearchCtrl)) return;
 
 		userSearchCtrl = new UserSearchController(ureq, getWindowControl(), true, true, false);
 		userSearchCtrl.setUserObject(role);
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java b/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
index 0977a00c676d56e09c843a2376c24a806009720e..eaecd15f6632dc65851bcb55b80905735470d0d2 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/EditTrainingController.java
@@ -262,7 +262,7 @@ public class EditTrainingController extends FormBasicController {
 	}
 	
 	private void doAddPersonalAccount(UserRequest ureq) {
-		if(addOrganizerController != null) return;
+		if(guardModalController(addOrganizerController)) return;
 		
 		addOrganizerController = new LoginOrganizerController(ureq, getWindowControl(), getIdentity());
 		listenTo(addOrganizerController);
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingController.java
index 8f624748cab311a2452d7eb1a1f86404fe742739..7ff4841ffc074889336be45d4f4defe645557220 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingController.java
@@ -299,7 +299,7 @@ public class GoToMeetingController extends BasicController {
 	}
 	
 	private void doOpenRecordings(UserRequest ureq) {
-		if(recordingsCtrl != null) return;
+		if(guardModalController(recordingsCtrl)) return;
 		
 		recordingsCtrl = new GoToRecordingsController(ureq, getWindowControl(), meeting);
 		listenTo(recordingsCtrl);
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
index 3f730e022a5e8bc58d5e80d9911fe5427376567d..20adfb7b5f8b3b9ebf1d582600ff05006817ef4c 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToMeetingsEditController.java
@@ -204,7 +204,7 @@ public class GoToMeetingsEditController extends FormBasicController {
 	}
 
 	private void doAddTraining(UserRequest ureq) {
-		if(editTrainingController != null) return;
+		if(guardModalController(editTrainingController)) return;
 		
 		editTrainingController = new EditTrainingController(ureq, getWindowControl(), entry, subIdent, businessGroup);
 		listenTo(editTrainingController);
@@ -216,7 +216,7 @@ public class GoToMeetingsEditController extends FormBasicController {
 	}
 	
 	private void doEditTraining(UserRequest ureq, GoToMeeting meeting) {
-		if(editTrainingController != null) return;
+		if(guardModalController(editTrainingController)) return;
 		
 		editTrainingController = new EditTrainingController(ureq, getWindowControl(), meeting);
 		listenTo(editTrainingController);
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToOrganizerListAdminController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToOrganizerListAdminController.java
index 60040f24609d77e391efeaa0eb8ddc8317febffa..178bffb75b233bd73d09f17ca281e6e52550f9cc 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToOrganizerListAdminController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToOrganizerListAdminController.java
@@ -216,7 +216,7 @@ public class GoToOrganizerListAdminController extends FormBasicController implem
 	}
 	
 	private void doEdit(UserRequest ureq, GoToOrganizer organizer) {
-		if(editOrganizerNameController != null) return;
+		if(guardModalController(editOrganizerNameController)) return;
 		
 		editOrganizerNameController = new EditOrganizerNameController(ureq, getWindowControl(), organizer);
 		listenTo(editOrganizerNameController);
@@ -228,7 +228,7 @@ public class GoToOrganizerListAdminController extends FormBasicController implem
 	}
 	
 	private void doAddOrganizer(UserRequest ureq) {
-		if(loginOrganizerController != null) return;
+		if(guardModalController(loginOrganizerController)) return;
 		
 		loginOrganizerController = new LoginOrganizerController(ureq, getWindowControl());
 		listenTo(loginOrganizerController);
@@ -240,7 +240,7 @@ public class GoToOrganizerListAdminController extends FormBasicController implem
 	}
 	
 	private void doRenewOrganizer(UserRequest ureq, GoToOrganizer organizer) {
-		if(loginOrganizerController != null) return;
+		if(guardModalController(loginOrganizerController)) return;
 		
 		loginOrganizerController = new LoginOrganizerController(ureq, getWindowControl(), organizer);
 		listenTo(loginOrganizerController);
diff --git a/src/main/java/org/olat/modules/gotomeeting/ui/GoToRecordingsController.java b/src/main/java/org/olat/modules/gotomeeting/ui/GoToRecordingsController.java
index 88f782df24b8d9a23e749865a131a1efebb04214..9ee0635db7d7af426f686e67a789ac2874517f01 100644
--- a/src/main/java/org/olat/modules/gotomeeting/ui/GoToRecordingsController.java
+++ b/src/main/java/org/olat/modules/gotomeeting/ui/GoToRecordingsController.java
@@ -133,7 +133,7 @@ public class GoToRecordingsController extends FormBasicController {
 	}
 
 	private void doView(UserRequest ureq, GoToRecordingsG2T recording) {
-		if(recordingController != null) return;
+		if(guardModalController(recordingController)) return;
 		
 		recordingController = new GoToRecordingController(ureq, getWindowControl(), recording);
 		listenTo(recordingController);
diff --git a/src/main/java/org/olat/modules/lecture/ui/AppealListRepositoryController.java b/src/main/java/org/olat/modules/lecture/ui/AppealListRepositoryController.java
index b2940e613451cab0945857964b6c7a14858a8877..3faeb5e5dc9cc1fc57888e7fe3a16ae21ecc96be 100644
--- a/src/main/java/org/olat/modules/lecture/ui/AppealListRepositoryController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/AppealListRepositoryController.java
@@ -286,7 +286,7 @@ public class AppealListRepositoryController extends FormBasicController {
 	}
 	
 	private void doEditAppeal(UserRequest ureq, LectureBlockRollCall rollCall) {
-		if(appealCtrl != null || !secCallback.canApproveAppeal()) return;
+		if(guardModalController(appealCtrl) || !secCallback.canApproveAppeal()) return;
 		
 		appealCtrl = new EditAppealController(ureq, getWindowControl(), rollCall);
 		listenTo(appealCtrl);
@@ -298,7 +298,7 @@ public class AppealListRepositoryController extends FormBasicController {
 	}
 	
 	private void doEditAppeals(UserRequest ureq, List<LectureBlockRollCall> rollCalls) {
-		if(appealCtrl != null || !secCallback.canApproveAppeal()) return;
+		if(guardModalController(appealCtrl) || !secCallback.canApproveAppeal()) return;
 		
 		if(rollCalls.isEmpty()) {
 			showWarning("warning.choose.at.least.one.appeal");
diff --git a/src/main/java/org/olat/modules/lecture/ui/LectureListRepositoryController.java b/src/main/java/org/olat/modules/lecture/ui/LectureListRepositoryController.java
index 06f0bdb6288e652220b1b24ddb5383fbcc1de6a2..27707d77684ef56bec2f7f20437e6ed84beca8ab 100644
--- a/src/main/java/org/olat/modules/lecture/ui/LectureListRepositoryController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/LectureListRepositoryController.java
@@ -309,7 +309,7 @@ public class LectureListRepositoryController extends FormBasicController {
 	}
 
 	private void doEditLectureBlock(UserRequest ureq, LectureBlockRow row) {
-		if(editLectureCtrl != null) return;
+		if(guardModalController(editLectureCtrl)) return;
 		
 		LectureBlock block = lectureService.getLectureBlock(row);
 		boolean readOnly = lectureManagementManaged || !secCallback.canNewLectureBlock();
@@ -322,7 +322,7 @@ public class LectureListRepositoryController extends FormBasicController {
 	}
 
 	private void doAddLectureBlock(UserRequest ureq) {
-		if(editLectureCtrl != null || !secCallback.canNewLectureBlock()) return;
+		if(guardModalController(editLectureCtrl) || !secCallback.canNewLectureBlock()) return;
 		
 		editLectureCtrl = new EditLectureBlockController(ureq, getWindowControl(), entry);
 		listenTo(editLectureCtrl);
diff --git a/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java b/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java
index 17edcc6174871ff544061a02a9b115822b1ad359..ce63612412af8880b6af5e8ce1b7415dc683b7e3 100644
--- a/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/ParticipantLectureBlocksController.java
@@ -351,7 +351,7 @@ public class ParticipantLectureBlocksController extends FormBasicController {
 	}
 	
 	private void doAppeal(UserRequest ureq, LectureBlockAndRollCall row) {
-		if(appealCtrl != null) return;
+		if(guardModalController(appealCtrl)) return;
 		
 		LectureBlock block = lectureService.getLectureBlock(row.getLectureBlockRef());
 		List<Identity> teachers = lectureService.getTeachers(block);
diff --git a/src/main/java/org/olat/modules/lecture/ui/ParticipantListRepositoryController.java b/src/main/java/org/olat/modules/lecture/ui/ParticipantListRepositoryController.java
index 32ac87788e9d3bc879296cc9cdd99b04971a2278..68e63793cd923cb2c934b60bee847fa61f79ece9 100644
--- a/src/main/java/org/olat/modules/lecture/ui/ParticipantListRepositoryController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/ParticipantListRepositoryController.java
@@ -290,7 +290,7 @@ public class ParticipantListRepositoryController extends FormBasicController {
 	}
 	
 	private void doEdit(UserRequest ureq, ParticipantRow row) {
-		if(editRateCtrl != null) return;
+		if(guardModalController(editRateCtrl)) return;
 		
 		Identity identity = securityManager.loadIdentityByKey(row.getIdentityKey());
 		editRateCtrl = new EditParticipantSummaryController(ureq, getWindowControl(), entry, identity, rateEnabled, defaultRate);
diff --git a/src/main/java/org/olat/modules/lecture/ui/TeacherRollCallController.java b/src/main/java/org/olat/modules/lecture/ui/TeacherRollCallController.java
index d59c13e26a3a4bcc86194634a8bddc84f9a97e81..c3b70ae17115de14fc95c2d16ab21803a76d4c38 100644
--- a/src/main/java/org/olat/modules/lecture/ui/TeacherRollCallController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/TeacherRollCallController.java
@@ -699,7 +699,7 @@ public class TeacherRollCallController extends FormBasicController {
 	}
 	
 	private void doConfirmCloseLectureBlock(UserRequest ureq) {
-		if(closeRollCallCtrl != null) return;
+		if(guardModalController(closeRollCallCtrl)) return;
 		
 		closeRollCallCtrl = new CloseRollCallConfirmationController(ureq, getWindowControl(), lectureBlock, secCallback);
 		listenTo(closeRollCallCtrl);
@@ -710,7 +710,7 @@ public class TeacherRollCallController extends FormBasicController {
 	}
 	
 	private void doConfirmCancelLectureBlock(UserRequest ureq) {
-		if(cancelRollCallCtrl != null) return;
+		if(guardModalController(cancelRollCallCtrl)) return;
 		
 		cancelRollCallCtrl = new CancelRollCallConfirmationController(ureq, getWindowControl(), lectureBlock, secCallback);
 		listenTo(cancelRollCallCtrl);
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java b/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
index c9318b78dcb48d41fb394b29608b8e69b4e96a43..8f459f9471e3a0b03b98e732b77674f57fbfdc79 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/AbsenceNoticesListController.java
@@ -572,7 +572,7 @@ public class AbsenceNoticesListController extends FormBasicController {
 	}
 	
 	private void doContactTeachers(UserRequest ureq, AbsenceNoticeRow row) {
-		if(contactTeachersCtrl != null) return;
+		if(guardModalController(contactTeachersCtrl)) return;
 
 		List<Identity> teachers = row.getTeachers();
 		if(teachers.isEmpty()) {
diff --git a/src/main/java/org/olat/modules/library/ui/LibraryAdminController.java b/src/main/java/org/olat/modules/library/ui/LibraryAdminController.java
index 60dbaf182e0b063ee1e6fa593af6f2c2e2824969..e310691a51ef2248b6965b43972de9b6416c164f 100644
--- a/src/main/java/org/olat/modules/library/ui/LibraryAdminController.java
+++ b/src/main/java/org/olat/modules/library/ui/LibraryAdminController.java
@@ -215,7 +215,7 @@ public class LibraryAdminController extends FormBasicController {
 	 * @param ureq
 	 */
 	private void doDisplaySearchController(UserRequest ureq) {
-		if(chooseFolderCtr != null) return;
+		if(guardModalController(chooseFolderCtr)) return;
 		
 		String choose = translate("library.catalog.choose.folder.link");
 		chooseFolderCtr = new ReferencableEntriesSearchController(getWindowControl(), ureq, SharedFolderFileResource.TYPE_NAME, choose);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
index ba3f0a916d9ebc126889fd242dc69551311132a1..c87e1474412c8b780274541d456bbe96ed513f40 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/AbstractPageListController.java
@@ -804,7 +804,7 @@ implements Activateable2, TooledController, FlexiTableComponentDelegate {
 	}
 	
 	protected void doEditAssignment(UserRequest ureq, PortfolioElementRow row) {
-		if(editAssignmentCtrl != null) return;
+		if(guardModalController(editAssignmentCtrl)) return;
 		
 		Assignment assignment = row.getAssignment();
 		editAssignmentCtrl = new AssignmentEditController(ureq, getWindowControl(), assignment);
@@ -817,7 +817,7 @@ implements Activateable2, TooledController, FlexiTableComponentDelegate {
 	}
 	
 	private void doMoveAssignment(UserRequest ureq, PortfolioElementRow row) {
-		if(moveAssignmentCtrl != null) return;
+		if(guardModalController(moveAssignmentCtrl)) return;
 		
 		Assignment assignment = row.getAssignment();
 		moveAssignmentCtrl = new AssignmentMoveController(ureq, getWindowControl(), assignment, row.getSection());
diff --git a/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java b/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java
index e68a4a4e333c3f8520add5d81652305dc2257f7a..11fdafa1ff9d8529870b8f5c3bd53243b4625496 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java
@@ -520,7 +520,7 @@ public class AssignmentEditController extends FormBasicController {
 	}
 	
 	private void doSelectForm(UserRequest ureq) {
-		if(searchFormCtrl != null) return;
+		if(guardModalController(searchFormCtrl)) return;
 
 		searchFormCtrl = new ReferencableEntriesSearchController(getWindowControl(), ureq, 
 					EvaluationFormResource.TYPE_NAME, translate("select.form"));
diff --git a/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesEditController.java b/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesEditController.java
index 1b28b19442a9d8e5016850ce1c3dd1071d7f75df..9a014467d8f51e56772d0c6e12c20a25ed75b5f0 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesEditController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesEditController.java
@@ -208,7 +208,7 @@ public class AssignmentTemplatesEditController extends FormBasicController {
 	}
 	
 	private void doSelectDocument(UserRequest ureq) {
-		if(addDocumentCtrl != null) return;
+		if(guardModalController(addDocumentCtrl)) return;
 
 		addDocumentCtrl = new AddAssignmentDocumentController(ureq, getWindowControl());
 		listenTo(addDocumentCtrl);
@@ -236,7 +236,7 @@ public class AssignmentTemplatesEditController extends FormBasicController {
 	}
 	
 	private void doSelectForm(UserRequest ureq) {
-		if(searchFormCtrl != null) return;
+		if(guardModalController(searchFormCtrl)) return;
 
 		searchFormCtrl = new ReferencableEntriesSearchController(getWindowControl(), ureq, 
 					EvaluationFormResource.TYPE_NAME, translate("select.form"));
@@ -255,7 +255,7 @@ public class AssignmentTemplatesEditController extends FormBasicController {
 	}
 	
 	private void doEditAssignment(UserRequest ureq, Assignment assignment) {
-		if(editAssignmentCtrl != null) return;
+		if(guardModalController(editAssignmentCtrl)) return;
 		
 		editAssignmentCtrl = new AssignmentEditController(ureq, getWindowControl(), assignment,
 				AssignmentEditController.templatesTypes, 1);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesListController.java b/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesListController.java
index 92a2058134b483a0de70b99dc9cbe3d9b62824e9..be85c169c83bdd4bddda9638524c9873d3e45247 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/AssignmentTemplatesListController.java
@@ -194,7 +194,7 @@ public class AssignmentTemplatesListController extends FormBasicController imple
 	}
 	
 	private void doCreateNewPage(UserRequest ureq) {
-		if(newPageCtrl != null) return;
+		if(guardModalController(newPageCtrl)) return;
 		
 		newPageCtrl = new PageMetadataEditController(ureq, getWindowControl(), secCallback, binder, false, (Section)null, true);
 		listenTo(newPageCtrl);
@@ -206,7 +206,7 @@ public class AssignmentTemplatesListController extends FormBasicController imple
 	}
 	
 	private void doCreateNewPage(UserRequest ureq, Assignment assignment) {
-		if(newPageCtrl != null) return;
+		if(guardModalController(newPageCtrl)) return;
 		
 		newPageCtrl = new PageMetadataEditController(ureq, getWindowControl(), secCallback, binder, false, assignment, true);
 		listenTo(newPageCtrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderDeliveryOptionsController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderDeliveryOptionsController.java
index 1ea031eda1c8522bd4c22870fe1009101036f9c5..94f6ac8763251edbca414eb39aafdd281d98410e 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderDeliveryOptionsController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderDeliveryOptionsController.java
@@ -177,7 +177,7 @@ public class BinderDeliveryOptionsController extends FormBasicController impleme
 	}
 
 	private void doConfirmDeleteOption(UserRequest ureq) {
-		if(deleteOptionCtrl != null) return;
+		if(guardModalController(deleteOptionCtrl)) return;
 		
 		deleteOptionCtrl = new ConfirmDeleteOptionController(ureq, getWindowControl());
 		listenTo(deleteOptionCtrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderListController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderListController.java
index 120a673efbb88a1cc898d0d365c6068811c56f1e..e79d8e12fac1796ae3b3d143e245347a93008697 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderListController.java
@@ -544,7 +544,7 @@ public class BinderListController extends FormBasicController
 	}
 
 	private void doNewBinder(UserRequest ureq) {
-		if(newBinderCtrl != null) return;
+		if(guardModalController(newBinderCtrl)) return;
 		
 		newBinderCtrl = new BinderMetadataEditController(ureq, getWindowControl(), null);
 		listenTo(newBinderCtrl);
@@ -556,7 +556,7 @@ public class BinderListController extends FormBasicController
 	}
 
 	private void doNewBinderFromTemplate(UserRequest ureq) {
-		if(searchTemplateCtrl != null) return;
+		if(guardModalController(searchTemplateCtrl)) return;
 
 		String title = translate("create.empty.binder.from.template");
 		String commandLabel = translate("create.binder.selectTemplate");
@@ -582,7 +582,7 @@ public class BinderListController extends FormBasicController
 	}
 	
 	private void doNewBinderFromCourse(UserRequest ureq) {
-		if(searchCourseTemplateCtrl != null) return;
+		if(guardModalController(searchCourseTemplateCtrl)) return;
 
 		removeAsListenerAndDispose(searchCourseTemplateCtrl);
 		searchCourseTemplateCtrl = new CourseTemplateSearchController(ureq, getWindowControl());			
@@ -707,7 +707,7 @@ public class BinderListController extends FormBasicController
 	}
 	
 	private void doEditBinderMetadata(UserRequest ureq, BinderRow row) {
-		if(binderMetadataCtrl != null) return;
+		if(guardModalController(binderMetadataCtrl)) return;
 		
 		Binder reloadedBinder = portfolioService.getBinderByKey(row.getKey());
 		binderMetadataCtrl = new BinderMetadataEditController(ureq, getWindowControl(), reloadedBinder);
@@ -720,7 +720,7 @@ public class BinderListController extends FormBasicController
 	}
 	
 	private void doConfirmMoveToTrashBinder(UserRequest ureq, BinderRow row) {
-		if(moveBinderToTrashCtrl != null) return;
+		if(guardModalController(moveBinderToTrashCtrl)) return;
 		
 		BinderStatistics stats = portfolioService.getBinderStatistics(row);
 		moveBinderToTrashCtrl = new ConfirmMoveBinderToTrashController(ureq, getWindowControl(), stats);
@@ -741,7 +741,7 @@ public class BinderListController extends FormBasicController
 	}
 	
 	private void doConfirmDeleteBinder(UserRequest ureq, BinderRow row) {
-		if(moveBinderToTrashCtrl != null) return;
+		if(guardModalController(moveBinderToTrashCtrl)) return;
 		
 		BinderStatistics stats = portfolioService.getBinderStatistics(row);
 		deleteBinderCtrl = new ConfirmDeleteBinderController(ureq, getWindowControl(), stats);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
index 006cb5d3a3935dfb00bea6f98f6df73619da8073..aa1fa38ec72710155819c4645266f6a133b29c7f 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/BinderPageListController.java
@@ -629,7 +629,7 @@ public class BinderPageListController extends AbstractPageListController {
 	}
 	
 	private void doCreateNewSection(UserRequest ureq) {
-		if(newSectionCtrl != null) return;
+		if(guardModalController(newSectionCtrl)) return;
 		
 		newSectionCtrl = new SectionEditController(ureq, getWindowControl(), binder, secCallback);
 		listenTo(newSectionCtrl);
@@ -641,7 +641,7 @@ public class BinderPageListController extends AbstractPageListController {
 	}
 	
 	private void doCreateNewPage(UserRequest ureq, Section preSelectedSection) {
-		if(newPageCtrl != null) return;
+		if(guardModalController(newPageCtrl)) return;
 		
 		newPageCtrl = new PageMetadataEditController(ureq, getWindowControl(), secCallback, binder, false, preSelectedSection, true);
 		listenTo(newPageCtrl);
@@ -653,7 +653,7 @@ public class BinderPageListController extends AbstractPageListController {
 	}
 	
 	private void doCreateNewAssignment(UserRequest ureq) {
-		if(newAssignmentCtrl != null) return;
+		if(guardModalController(newAssignmentCtrl)) return;
 
 		newAssignmentCtrl = new AssignmentEditController(ureq, getWindowControl(), binder);
 		listenTo(newAssignmentCtrl);
@@ -665,7 +665,7 @@ public class BinderPageListController extends AbstractPageListController {
 	}
 	
 	private void doCreateNewAssignment(UserRequest ureq, Section section) {
-		if(newAssignmentCtrl != null) return;
+		if(guardModalController(newAssignmentCtrl)) return;
 		
 		newAssignmentCtrl = new AssignmentEditController(ureq, getWindowControl(), section);
 		listenTo(newAssignmentCtrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/DeletedBinderController.java b/src/main/java/org/olat/modules/portfolio/ui/DeletedBinderController.java
index ad06b03bc877cc815ba99774f60e2ce63cb8696a..4840ab4fe5096a6a1c86b6d0ba83b321d6eba772 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/DeletedBinderController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/DeletedBinderController.java
@@ -162,7 +162,7 @@ public class DeletedBinderController extends BinderListController {
 	}
 
 	private void doConfirmDelete(UserRequest ureq) {
-		if(deleteBinderCtrl != null) return;
+		if(guardModalController(deleteBinderCtrl)) return;
 		
 		List<BinderRow> rows = getSelectedRows();
 		if(rows.isEmpty()) {
diff --git a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java
index 815d3a7f7181ae50a10c1c811033c35d234bcead..9daf2ac512a5bad324af04815876103161e18b5c 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java
@@ -527,7 +527,7 @@ public class MediaCenterController extends FormBasicController
 	}
 
 	private void doCreateFile(UserRequest ureq) {
-		if(createFileCtrl != null) return;
+		if(guardModalController(createFileCtrl)) return;
 		
 		createFileCtrl = new CreateFileMediaController(ureq, getWindowControl(), editableFileTypes);
 		listenTo(createFileCtrl);
@@ -539,7 +539,7 @@ public class MediaCenterController extends FormBasicController
 	}
 	
 	private void doAddMedia(UserRequest ureq, String titleKey) {
-		if(mediaUploadCtrl != null) return;
+		if(guardModalController(mediaUploadCtrl)) return;
 		
 		mediaUploadCtrl = new MediaUploadController(ureq, getWindowControl());
 		listenTo(mediaUploadCtrl);
@@ -551,7 +551,7 @@ public class MediaCenterController extends FormBasicController
 	}
 	
 	private void doAddTextMedia(UserRequest ureq) {
-		if(textUploadCtrl != null) return;
+		if(guardModalController(textUploadCtrl)) return;
 		
 		textUploadCtrl = new CollectTextMediaController(ureq, getWindowControl());
 		listenTo(textUploadCtrl);
@@ -563,7 +563,7 @@ public class MediaCenterController extends FormBasicController
 	}
 	
 	private void doAddCitationMedia(UserRequest ureq) {
-		if(citationUploadCtrl != null) return;
+		if(guardModalController(citationUploadCtrl)) return;
 		
 		citationUploadCtrl = new CollectCitationMediaController(ureq, getWindowControl());
 		listenTo(citationUploadCtrl);
@@ -575,7 +575,7 @@ public class MediaCenterController extends FormBasicController
 	}
 	
 	private void doChooseArtefactV1(UserRequest ureq) {
-		if(importArtefactv1Ctrl != null) return;
+		if(guardModalController(importArtefactv1Ctrl)) return;
 		
 		importArtefactv1Ctrl = new EPArtefactPoolRunController(ureq, this.getWindowControl(), true, false, true);
 		listenTo(importArtefactv1Ctrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java b/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java
index 925ac3ddf7803f9a47c2bd2b8f3a9a7975028cb7..3e74ec2b055779718b574bf7d85cc429c6a6934c 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/MediaDetailsController.java
@@ -276,7 +276,7 @@ public class MediaDetailsController extends FormBasicController implements Activ
 	}
 	
 	private void doEdit(UserRequest ureq) {
-		if(mediaEditCtrl != null) return;
+		if(guardModalController(mediaEditCtrl)) return;
 		
 		mediaEditCtrl = handler.getEditMediaController(ureq, getWindowControl(), media);
 		listenTo(mediaEditCtrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
index 8cb70466426dd3526f7eedf818f41070ea1e7da9..11caef715a9d43b66308e42ea455a177908da079 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/MyPageListController.java
@@ -210,7 +210,7 @@ public class MyPageListController extends AbstractPageListController {
 	}
 	
 	protected void doCreateNewPage(UserRequest ureq) {
-		if(newPageCtrl != null) return;
+		if(guardModalController(newPageCtrl)) return;
 		
 		newPageCtrl = new PageMetadataEditController(ureq, getWindowControl(), secCallback, null, true, (Section)null, true);
 		listenTo(newPageCtrl);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/PageRunController.java b/src/main/java/org/olat/modules/portfolio/ui/PageRunController.java
index 8427905cb00a83fa37b82778049772d89a6aaf40..e77cefca6f24d5d9600082ebcd705005195a5baf 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/PageRunController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/PageRunController.java
@@ -612,7 +612,7 @@ public class PageRunController extends BasicController implements TooledControll
 	}
 	
 	private void doEditMetadata(UserRequest ureq) {
-		if(editMetadataCtrl != null) return;
+		if(guardModalController(editMetadataCtrl)) return;
 		
 		removeAsListenerAndDispose(editMetadataCtrl);
 		
diff --git a/src/main/java/org/olat/modules/portfolio/ui/PublishController.java b/src/main/java/org/olat/modules/portfolio/ui/PublishController.java
index 3b1bd3b2db1bcb492f591d8807d2ab0fd2fa744f..52a3b18b023058fc7243d61dc172092d3c7d61d5 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/PublishController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/PublishController.java
@@ -352,7 +352,7 @@ public class PublishController extends BasicController implements TooledControll
 	}
 	
 	private void doAddInvitationEmail(UserRequest ureq) {
-		if(addInvitationEmailCtrl != null) return;
+		if(guardModalController(addInvitationEmailCtrl)) return;
 		
 		addInvitationEmailCtrl = new InvitationEmailController(ureq, getWindowControl(), binder);
 		listenTo(addInvitationEmailCtrl);
@@ -364,7 +364,7 @@ public class PublishController extends BasicController implements TooledControll
 	}
 	
 	private void doAddInvitation(UserRequest ureq, String email) {
-		if(addInvitationCtrl != null) return;
+		if(guardModalController(addInvitationCtrl)) return;
 		
 		addInvitationCtrl = new InvitationEditRightsController(ureq, getWindowControl(), binder, email, null);
 		listenTo(addInvitationCtrl);
@@ -393,7 +393,7 @@ public class PublishController extends BasicController implements TooledControll
 	}
 	
 	private void doEditInvitation(UserRequest ureq, Identity invitee) {
-		if(addInvitationCtrl != null) return;
+		if(guardModalController(addInvitationCtrl)) return;
 
 		addInvitationCtrl = new InvitationEditRightsController(ureq, getWindowControl(), binder, invitee);
 		listenTo(addInvitationCtrl);
@@ -457,7 +457,7 @@ public class PublishController extends BasicController implements TooledControll
 	}
 	
 	private void doEditAccessRights(UserRequest ureq, PortfolioElement element, Identity member) {
-		if(editAccessRightsCtrl != null) return;
+		if(guardModalController(editAccessRightsCtrl)) return;
 		
 		boolean canEdit = secCallback.canEditAccessRights(element);
 		editAccessRightsCtrl = new AccessRightsEditController(ureq, getWindowControl(), binder, member, canEdit);
diff --git a/src/main/java/org/olat/modules/portfolio/ui/TableOfContentController.java b/src/main/java/org/olat/modules/portfolio/ui/TableOfContentController.java
index 7b4693cfab9a69628e537e40474ec3b2066eceb1..610ef6dc344a431ffb4523241ae745e914978696 100644
--- a/src/main/java/org/olat/modules/portfolio/ui/TableOfContentController.java
+++ b/src/main/java/org/olat/modules/portfolio/ui/TableOfContentController.java
@@ -730,7 +730,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doEditSection(UserRequest ureq, SectionRow sectionRow) {
-		if(editSectionCtrl != null) return;
+		if(guardModalController(editSectionCtrl)) return;
 		
 		editSectionCtrl = new SectionEditController(ureq, getWindowControl(), sectionRow.getSection(), secCallback);
 		editSectionCtrl.setUserObject(sectionRow);
@@ -743,7 +743,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doCreateNewSection(UserRequest ureq) {
-		if(newSectionCtrl != null) return;
+		if(guardModalController(newSectionCtrl)) return;
 		
 		newSectionCtrl = new SectionEditController(ureq, getWindowControl(), binder, secCallback);
 		listenTo(newSectionCtrl);
@@ -755,7 +755,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doCreateNewAssignment(UserRequest ureq) {
-		if(newAssignmentCtrl != null) return;
+		if(guardModalController(newAssignmentCtrl)) return;
 
 		newAssignmentCtrl = new AssignmentEditController(ureq, getWindowControl(), binder);
 		listenTo(newAssignmentCtrl);
@@ -841,7 +841,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doCreateNewEntry(UserRequest ureq) {
-		if(newPageCtrl != null) return;
+		if(guardModalController(newPageCtrl)) return;
 		
 		newPageCtrl = new PageMetadataEditController(ureq, getWindowControl(), secCallback, binder, false, (Section)null, true);
 		listenTo(newPageCtrl);
@@ -853,7 +853,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doEditBinderMetadata(UserRequest ureq) {
-		if(binderMetadataCtrl != null) return;
+		if(guardModalController(binderMetadataCtrl)) return;
 		
 		Binder reloadedBinder = portfolioService.getBinderByKey(binder.getKey());
 		binderMetadataCtrl = new BinderMetadataEditController(ureq, getWindowControl(), reloadedBinder);
@@ -866,7 +866,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doOverrideDatesSection(UserRequest ureq, SectionRow sectionRow) {
-		if(editSectionDatesCtrl != null) return;
+		if(guardModalController(editSectionDatesCtrl)) return;
 		
 		editSectionDatesCtrl = new SectionDatesEditController(ureq, getWindowControl(), sectionRow.getSection());
 		editSectionDatesCtrl.setUserObject(sectionRow);
@@ -918,7 +918,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doConfirmMoveToTrashBinder(UserRequest ureq) {
-		if(moveBinderToTrashCtrl != null) return;
+		if(guardModalController(moveBinderToTrashCtrl)) return;
 		
 		BinderStatistics stats = portfolioService.getBinderStatistics(binder);
 		moveBinderToTrashCtrl = new ConfirmMoveBinderToTrashController(ureq, getWindowControl(), stats);
@@ -949,7 +949,7 @@ public class TableOfContentController extends BasicController implements TooledC
 	}
 	
 	private void doConfirmDeleteBinder(UserRequest ureq) {
-		if(moveBinderToTrashCtrl != null) return;
+		if(guardModalController(moveBinderToTrashCtrl)) return;
 		
 		BinderStatistics stats = portfolioService.getBinderStatistics(binder);
 		deleteBinderCtrl = new ConfirmDeleteBinderController(ureq, getWindowControl(), stats);
diff --git a/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java b/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java
index 10d8fd4b38b6f65359b591c9b510e1b89004aa26..de26c7d01734fef273fb0811c5edb4a561157ee3 100644
--- a/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java
+++ b/src/main/java/org/olat/modules/quality/ui/DataCollectionConfigurationController.java
@@ -610,7 +610,7 @@ public class DataCollectionConfigurationController extends FormBasicController {
 	private void doSelectFormEntry(UserRequest ureq) {
 		formSearchCtrl = new ReferencableEntriesSearchController(getWindowControl(), ureq,
 				EvaluationFormResource.TYPE_NAME, translate("data.collection.form.select"));
-		this.listenTo(formSearchCtrl);
+		listenTo(formSearchCtrl);
 
 		cmc = new CloseableModalController(getWindowControl(), translate("close"),
 				formSearchCtrl.getInitialComponent(), true, translate("data.collection.form.select"));
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java b/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
index d2e5661eff7eae8088f974f0c7d3d2a3dd67f69a..d0b4241ef9234f28406e48c5d5d281c72147d3ce 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/IdentityCompetencesController.java
@@ -198,7 +198,7 @@ public class IdentityCompetencesController extends FormBasicController implement
 	}
 	
 	private void doSelectTaxonomyLevelsToAdd(UserRequest ureq, TaxonomyCompetenceTypes comptenceType) {
-		if(levelsSearchCtrl != null) return;
+		if(guardModalController(levelsSearchCtrl)) return;
 		
 		levelsSearchCtrl = new SelectTaxonomyLevelController(ureq, getWindowControl(), comptenceType);
 		listenTo(levelsSearchCtrl);
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelCompetenceController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelCompetenceController.java
index d2b796f23b6455e458699b12b37e8817a15a1903..8651982e5601e17c06ef6ef9ead8123db009230b 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelCompetenceController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelCompetenceController.java
@@ -259,7 +259,7 @@ public class TaxonomyLevelCompetenceController extends FormBasicController {
 	}
 	
 	private void doSelectTaxonomyLevelCompetence(UserRequest ureq, TaxonomyLevelCompetenceRow row) {
-		if(editCompetenceCtrl != null) return;
+		if(guardModalController(editCompetenceCtrl)) return;
 
 		TaxonomyCompetence competence = row.getCompetence();
 		editCompetenceCtrl = new EditTaxonomyCompetenceController(ureq, getWindowControl(), competence);
@@ -284,7 +284,7 @@ public class TaxonomyLevelCompetenceController extends FormBasicController {
 	}
 
 	private void doSearchUsersToAdd(UserRequest ureq, TaxonomyCompetenceTypes comptenceType) {
-		if(userSearchCtrl != null) return;
+		if(guardModalController(userSearchCtrl)) return;
 
 		userSearchCtrl = new UserSearchController(ureq, getWindowControl(), true, true, false);
 		userSearchCtrl.setUserObject(comptenceType);
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java
index cc4bb446d0d7b942c695d4229340afaad9de4c09..1068cb279e7db6c881cd936dfc7c4ef2971fcdaf 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyLevelOverviewController.java
@@ -219,7 +219,7 @@ public class TaxonomyLevelOverviewController extends BasicController implements
 	}
 	
 	private void doMove(UserRequest ureq) {
-		if(moveLevelCtrl != null) return;
+		if(guardModalController(moveLevelCtrl)) return;
 		
 		taxonomyLevel = taxonomyService.getTaxonomyLevel(taxonomyLevel);
 		Taxonomy taxonomy = taxonomyLevel.getTaxonomy();
@@ -234,7 +234,7 @@ public class TaxonomyLevelOverviewController extends BasicController implements
 	}
 	
 	private void doCreateTaxonomyLevel(UserRequest ureq) {
-		if(createTaxonomyLevelCtrl != null) return;
+		if(guardModalController(createTaxonomyLevelCtrl)) return;
 		
 		taxonomyLevel = taxonomyService.getTaxonomyLevel(taxonomyLevel);
 		Taxonomy taxonomy = taxonomyLevel.getTaxonomy();
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyListAdminController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyListAdminController.java
index fbffd15a6bb6f0927a153764af3eadea7648732f..5180a22312f84b44e04de0267a82e288b0a293d7 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyListAdminController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyListAdminController.java
@@ -292,7 +292,7 @@ public class TaxonomyListAdminController extends FormBasicController implements
 	}
 	
 	private void doCreateTaxonomy(UserRequest ureq) {
-		if(editTaxonomyCtrl != null) return;
+		if(guardModalController(editTaxonomyCtrl)) return;
 		
 		editTaxonomyCtrl = new EditTaxonomyController(ureq, getWindowControl(), null);
 		listenTo(editTaxonomyCtrl);
diff --git a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
index e66d6e8def69a46bfe707d2992d633a62b490cb3..d5785c12e53545bff897f45cbbd34ca3de26a93a 100644
--- a/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
+++ b/src/main/java/org/olat/modules/taxonomy/ui/TaxonomyTreeTableController.java
@@ -346,7 +346,7 @@ public class TaxonomyTreeTableController extends FormBasicController implements
 	}
 	
 	private void doAssignType(UserRequest ureq) {
-		if(typeLevelCtrl != null) return;
+		if(guardModalController(typeLevelCtrl)) return;
 		
 		List<TaxonomyLevel> levelsToMerge = getSelectedTaxonomyLevels(TaxonomyLevelManagedFlag.type);
 		if(levelsToMerge.isEmpty()) {
@@ -363,7 +363,7 @@ public class TaxonomyTreeTableController extends FormBasicController implements
 	}
 	
 	private void doMerge(UserRequest ureq) {
-		if(mergeCtrl != null) return;
+		if(guardModalController(mergeCtrl)) return;
 		
 		List<TaxonomyLevel> levelsToMerge = getSelectedTaxonomyLevels(TaxonomyLevelManagedFlag.delete);
 		if(levelsToMerge.isEmpty()) {
@@ -404,7 +404,7 @@ public class TaxonomyTreeTableController extends FormBasicController implements
 	}
 	
 	private void doCreateTaxonomyLevel(UserRequest ureq, TaxonomyLevel parentLevel) {
-		if(createTaxonomyLevelCtrl != null) return;
+		if(guardModalController(createTaxonomyLevelCtrl)) return;
 
 		createTaxonomyLevelCtrl = new EditTaxonomyLevelController(ureq, getWindowControl(), parentLevel, taxonomy);
 		listenTo(createTaxonomyLevelCtrl);
diff --git a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java
index b754e7a4007d7f6ddb3a102029f846716113243e..785034bf34e280830948905f200787a6379cf095 100644
--- a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java
+++ b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java
@@ -273,7 +273,7 @@ public class VideoChapterEditController extends BasicController {
 		}
 	
 		private void doEditChapter(UserRequest ureq, VideoChapterTableRow videoChapterTableRow, boolean chapterExists) {
-			if(chapterEditCtr != null) return;
+			if(guardModalController(chapterEditCtr)) return;
 
 			chapterEditCtr = new ChapterEditController(ureq, getWindowControl(), videoChapterTableRow, 
 					chapterExists, tableModel.getObjects(), durationInSeconds); 
diff --git a/src/main/java/org/olat/repository/ui/author/AuthorListController.java b/src/main/java/org/olat/repository/ui/author/AuthorListController.java
index a8925d5fd99a2b24b23f00f5c5b952168f52631d..b15b3df03a2fd81bd62c307c3a831598f37e20dd 100644
--- a/src/main/java/org/olat/repository/ui/author/AuthorListController.java
+++ b/src/main/java/org/olat/repository/ui/author/AuthorListController.java
@@ -751,7 +751,7 @@ public class AuthorListController extends FormBasicController implements Activat
 	}
 	
 	private void doImport(UserRequest ureq) {
-		if(importCtrl != null) return;
+		if(guardModalController(importCtrl)) return;
 
 		removeAsListenerAndDispose(importCtrl);
 		importCtrl = new ImportRepositoryEntryController(ureq, getWindowControl());
@@ -766,7 +766,7 @@ public class AuthorListController extends FormBasicController implements Activat
 	}
 	
 	private void doImportUrl(UserRequest ureq) {
-		if(importUrlCtrl != null) return;
+		if(guardModalController(importUrlCtrl)) return;
 
 		removeAsListenerAndDispose(importUrlCtrl);
 		importUrlCtrl = new ImportURLRepositoryEntryController(ureq, getWindowControl());
@@ -781,7 +781,7 @@ public class AuthorListController extends FormBasicController implements Activat
 	}
 	
 	private void doCreate(UserRequest ureq, RepositoryHandler handler) {
-		if(createCtrl != null) return;
+		if(guardModalController(createCtrl)) return;
 
 		removeAsListenerAndDispose(createCtrl);
 		createCtrl = handler.createCreateRepositoryEntryController(ureq, getWindowControl());
@@ -880,7 +880,7 @@ public class AuthorListController extends FormBasicController implements Activat
 	}
 	
 	private void doSendMail(UserRequest ureq, List<AuthoringEntryRow> rows) {
-		if(sendMailCtrl != null) return;
+		if(guardModalController(sendMailCtrl)) return;
 
 		removeAsListenerAndDispose(userSearchCtr);
 		sendMailCtrl = new SendMailController(ureq, getWindowControl(), rows);
@@ -894,7 +894,7 @@ public class AuthorListController extends FormBasicController implements Activat
 	}
 	
 	private void doAddOwners(UserRequest ureq, List<AuthoringEntryRow> rows) {
-		if(userSearchCtr != null) return;
+		if(guardModalController(userSearchCtr)) return;
 		
 		List<AuthoringEntryRow> manageableRows = new ArrayList<>(rows.size());
 		for(AuthoringEntryRow row:rows) {
diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
index ba440389c1671b85fffeee3b0d819c6d66bc9097..517a0621a590e34e13e5699c930d5f3a2711b323 100644
--- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
+++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryDetailsController.java
@@ -708,7 +708,7 @@ public class RepositoryEntryDetailsController extends FormBasicController {
 	}
 	
 	protected void doOpenComments(UserRequest ureq) {
-		if(commentsCtrl != null) return;
+		if(guardModalController(commentsCtrl)) return;
 		
 		boolean anonym = ureq.getUserSession().getRoles().isGuestOnly();
 		CommentAndRatingSecurityCallback secCallback = new CommentAndRatingDefaultSecurityCallback(getIdentity(), false, anonym);
diff --git a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
index 68823f5c90018e6fdf167398bc8a83f9ce01299b..1b85dc6ff0a0ab5fe3b82938ff9f950cc69ffa3e 100644
--- a/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
+++ b/src/main/java/org/olat/repository/ui/list/RepositoryEntryListController.java
@@ -558,7 +558,7 @@ public class RepositoryEntryListController extends FormBasicController
 	}
 	
 	protected void doOpenComments(UserRequest ureq, RepositoryEntryRow row) {
-		if(commentsCtrl != null) return;
+		if(guardModalController(commentsCtrl)) return;
 		
 		boolean anonym = ureq.getUserSession().getRoles().isGuestOnly();
 		CommentAndRatingSecurityCallback secCallback = new CommentAndRatingDefaultSecurityCallback(getIdentity(), false, anonym);
diff --git a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
index e9cae0b4027d754dced9e834008075a333e81335..c4eeba18add2e79bb2e9aa9e8ee5431d86ab617b 100644
--- a/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
+++ b/src/main/java/org/olat/user/ui/admin/UserSearchTableController.java
@@ -404,7 +404,7 @@ public class UserSearchTableController extends FormBasicController implements Ac
 	}
 	
 	private void doMail(UserRequest ureq) {
-		if(contactCtr != null) return;
+		if(guardModalController(contactCtr)) return;
 		
 		List<Identity> identities = getSelectedIdentitiesWithWarning();
 		if(identities.isEmpty()) {
diff --git a/src/main/java/org/olat/user/ui/organisation/OrganisationAdminConfigrationController.java b/src/main/java/org/olat/user/ui/organisation/OrganisationAdminConfigrationController.java
index 2b6330c2f7fcb1be816281d7a78fb77ac1c97b00..74603e3fffd9d69c1bb9e3b4f769fc4e469cabff 100644
--- a/src/main/java/org/olat/user/ui/organisation/OrganisationAdminConfigrationController.java
+++ b/src/main/java/org/olat/user/ui/organisation/OrganisationAdminConfigrationController.java
@@ -120,7 +120,7 @@ public class OrganisationAdminConfigrationController extends FormBasicController
 	}
 	
 	private void doConfirmMigration(UserRequest ureq) {
-		if(migratorCtrl != null) return;
+		if(guardModalController(migratorCtrl)) return;
 		
 		migratorCtrl = new InstitutionMigratorController(ureq, getWindowControl());
 		listenTo(migratorCtrl);
diff --git a/src/main/java/org/olat/user/ui/organisation/OrganisationResourceListController.java b/src/main/java/org/olat/user/ui/organisation/OrganisationResourceListController.java
index 05ba8757aff88522e436d151e9b3c48fc2f13c8f..9e39128e2c80310e11af2aea6de0da1fa6e0129e 100644
--- a/src/main/java/org/olat/user/ui/organisation/OrganisationResourceListController.java
+++ b/src/main/java/org/olat/user/ui/organisation/OrganisationResourceListController.java
@@ -216,7 +216,7 @@ public class OrganisationResourceListController extends FormBasicController impl
 	}
 	
 	private void doChooseResources(UserRequest ureq) {
-		if(repoSearchCtr != null) return;
+		if(guardModalController(repoSearchCtr)) return;
 		
 		repoSearchCtr = new ReferencableEntriesSearchController(getWindowControl(), ureq,
 				new String[]{ CourseModule.getCourseTypeName() }, null,
diff --git a/src/main/java/org/olat/user/ui/organisation/OrganisationTypesAdminController.java b/src/main/java/org/olat/user/ui/organisation/OrganisationTypesAdminController.java
index 39686d7e98b0f43cc841d6c0b5228038dfeff627..e2f5503ec59027c097a987ae336cb7c975e7880d 100644
--- a/src/main/java/org/olat/user/ui/organisation/OrganisationTypesAdminController.java
+++ b/src/main/java/org/olat/user/ui/organisation/OrganisationTypesAdminController.java
@@ -161,7 +161,7 @@ public class OrganisationTypesAdminController extends FormBasicController implem
 	}
 
 	private void doAddRootType(UserRequest ureq) {
-		if(rootTypeCtrl != null) return;
+		if(guardModalController(rootTypeCtrl)) return;
 		
 		rootTypeCtrl = new EditOrganisationTypeController(ureq, getWindowControl(), null);
 		listenTo(rootTypeCtrl);
@@ -172,7 +172,7 @@ public class OrganisationTypesAdminController extends FormBasicController implem
 	}
 	
 	private void doEditType(UserRequest ureq, OrganisationType type) {
-		if(editTypeCtrl != null) return;
+		if(guardModalController(editTypeCtrl)) return;
 		
 		OrganisationType reloadedType = organisationService.getOrganisationType(type);
 		editTypeCtrl = new EditOrganisationTypeController(ureq, getWindowControl(), reloadedType);
diff --git a/src/main/java/org/olat/user/ui/organisation/OrganisationUserManagementController.java b/src/main/java/org/olat/user/ui/organisation/OrganisationUserManagementController.java
index 0174e372dd60cacb4de27f4e4f522a449916e796..155ca36d40a5daa017a46f71613e2f8b5294cd39 100644
--- a/src/main/java/org/olat/user/ui/organisation/OrganisationUserManagementController.java
+++ b/src/main/java/org/olat/user/ui/organisation/OrganisationUserManagementController.java
@@ -288,7 +288,7 @@ public class OrganisationUserManagementController extends FormBasicController {
 	}
 	
 	private void doSearchMember(UserRequest ureq, OrganisationRoles role) {
-		if(userSearchCtrl != null) return;
+		if(guardModalController(userSearchCtrl)) return;
 
 		userSearchCtrl = new UserSearchController(ureq, getWindowControl(), true, true, false, true);
 		userSearchCtrl.setUserObject(role);
diff --git a/src/main/java/org/olat/user/ui/organisation/OrganisationsStructureAdminController.java b/src/main/java/org/olat/user/ui/organisation/OrganisationsStructureAdminController.java
index 618441a83cf2fedd3b3abbb7351c994add0bba5b..69439e536bbfb26a2e30a352f357fdc02933fce5 100644
--- a/src/main/java/org/olat/user/ui/organisation/OrganisationsStructureAdminController.java
+++ b/src/main/java/org/olat/user/ui/organisation/OrganisationsStructureAdminController.java
@@ -251,7 +251,7 @@ public class OrganisationsStructureAdminController extends FormBasicController i
 	}
 	
 	private void doCreateOrganisation(UserRequest ureq) {
-		if(newOrganisationCtrl != null) return;
+		if(guardModalController(newOrganisationCtrl)) return;
 
 		newOrganisationCtrl = new EditOrganisationController(ureq, getWindowControl(), null);
 		listenTo(newOrganisationCtrl);
@@ -262,7 +262,7 @@ public class OrganisationsStructureAdminController extends FormBasicController i
 	}
 	
 	private void doCreateOrganisation(UserRequest ureq, Organisation parentOrganisation) {
-		if(newOrganisationCtrl != null) return;
+		if(guardModalController(newOrganisationCtrl)) return;
 
 		newOrganisationCtrl = new EditOrganisationController(ureq, getWindowControl(), null, parentOrganisation);
 		listenTo(newOrganisationCtrl);
@@ -292,7 +292,7 @@ public class OrganisationsStructureAdminController extends FormBasicController i
 	}
 	
 	private void doMove(UserRequest ureq, Organisation organisation) {
-		if(moveCtrl != null) return;
+		if(guardModalController(moveCtrl)) return;
 		
 		moveCtrl = new MoveOrganisationController(ureq, getWindowControl(), Collections.singletonList(organisation));
 		listenTo(moveCtrl);
@@ -315,7 +315,7 @@ public class OrganisationsStructureAdminController extends FormBasicController i
 	}
 	
 	private void doConfirmDelete(UserRequest ureq, OrganisationRow row) {
-		if(confirmDeleteCtrl != null) return;
+		if(guardModalController(confirmDeleteCtrl)) return;
 		
 		confirmDeleteCtrl = new ConfirmOrganisationDeleteController(ureq, getWindowControl(), row);
 		listenTo(confirmDeleteCtrl);
diff --git a/src/main/java/org/olat/user/ui/role/RelationRolesAdminController.java b/src/main/java/org/olat/user/ui/role/RelationRolesAdminController.java
index 818f6ae3278ff95e4330a5b73d6d4ee114324581..1876cce3d64099811cc0fe1657944ad8a8c7905f 100644
--- a/src/main/java/org/olat/user/ui/role/RelationRolesAdminController.java
+++ b/src/main/java/org/olat/user/ui/role/RelationRolesAdminController.java
@@ -206,7 +206,7 @@ public class RelationRolesAdminController extends FormBasicController {
 	}
 	
 	private void doAddRole(UserRequest ureq) {
-		if(editRoleCtrl != null) return;
+		if(guardModalController(editRoleCtrl)) return;
 		
 		editRoleCtrl = new EditRelationRoleController(ureq, getWindowControl());
 		listenTo(editRoleCtrl);
@@ -217,7 +217,7 @@ public class RelationRolesAdminController extends FormBasicController {
 	}
 	
 	private void doEditRole(UserRequest ureq, RelationRoleRow row) {
-		if(editRoleCtrl != null) return;
+		if(guardModalController(editRoleCtrl)) return;
 		
 		RelationRole role = identityRelationsService.getRole(row.getKey());
 		if(role == null) {