diff --git a/src/main/java/org/olat/modules/lecture/LectureModule.java b/src/main/java/org/olat/modules/lecture/LectureModule.java
index 2fd9e63bcd564e4f25cfed4caa3cf7909be2a838..9683cf1b6f375ebb48dfd568f559c79d9276b715 100644
--- a/src/main/java/org/olat/modules/lecture/LectureModule.java
+++ b/src/main/java/org/olat/modules/lecture/LectureModule.java
@@ -41,6 +41,7 @@ public class LectureModule extends AbstractSpringModule implements ConfigOnOff {
 	
 	private static final String LECTURE_ENABLED = "lecture.enabled";
 	private static final String LECTURE_MANAGED = "lecture.managed";
+	private static final String LECTURE_ABSENCE_NOTICE_ENABLED = "lecture.absence.notice.enabled";
 	
 	private static final String ASSESSMENT_MODE_ENABLED = "lecture.assessment.mode.enabled";
 	private static final String ASSESSMENT_MODE_LEAD_TIME = "lecture.assessment.mode.lead.time";
@@ -89,6 +90,8 @@ public class LectureModule extends AbstractSpringModule implements ConfigOnOff {
 	private boolean lecturesManaged;
 	@Value("${lecture.can.override.standard.configuration:false}")
 	private boolean canOverrideStandardConfiguration;
+	@Value("${lecture.absence.notice.enabled:false}")
+	private boolean absenceNoticeEnabled;
 	
 	@Value("${lecture.status.partially.done.enabled:true}")
 	private boolean statusPartiallyDoneEnabled;
@@ -201,7 +204,12 @@ public class LectureModule extends AbstractSpringModule implements ConfigOnOff {
 		if(StringHelper.containsNonWhitespace(managedObj)) {
 			lecturesManaged = "true".equals(managedObj);
 		}
-	
+		
+		String absenceNoticeEnabledObj = getStringPropertyValue(LECTURE_ABSENCE_NOTICE_ENABLED, true);
+		if(StringHelper.containsNonWhitespace(absenceNoticeEnabledObj)) {
+			absenceNoticeEnabled = "true".equals(absenceNoticeEnabledObj);
+		}
+		
 		String canOverrideSStandardConfigurationObj = getStringPropertyValue(CAN_OVERRIDE_STANDARD_CONFIGURATION, true);
 		if(StringHelper.containsNonWhitespace(canOverrideSStandardConfigurationObj)) {
 			canOverrideStandardConfiguration = "true".equals(canOverrideSStandardConfigurationObj);
@@ -393,6 +401,15 @@ public class LectureModule extends AbstractSpringModule implements ConfigOnOff {
 		this.lecturesManaged = lecturesManaged;
 		setStringProperty(LECTURE_MANAGED, Boolean.toString(lecturesManaged), true);
 	}
+	
+	public boolean isAbsenceNoticeEnabled() {
+		return absenceNoticeEnabled;
+	}
+
+	public void setAbsenceNoticeEnabled(boolean enabled) {
+		this.absenceNoticeEnabled = enabled;
+		setStringProperty(LECTURE_ABSENCE_NOTICE_ENABLED, Boolean.toString(enabled), true);
+	}
 
 	public boolean isAuthorizedAbsenceEnabled() {
 		return authorizedAbsenceEnabled;
diff --git a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
index 1741b3ba26d0f37d9eb5c03b44b0d7df923fb02e..d80fec01668716582c196951f97ccd9ec9d4a0af 100644
--- a/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
+++ b/src/main/java/org/olat/modules/lecture/ui/LecturesSecurityCallbackFactory.java
@@ -124,6 +124,10 @@ public class LecturesSecurityCallbackFactory {
 		
 		@Override
 		public boolean canAddAbsences() {
+			if(!lectureModule.isAbsenceNoticeEnabled()) {
+				return false;
+			}
+			
 			// same permissions as dispensations
 			if(viewAs == LectureRoles.participant) {
 				return false;
@@ -142,6 +146,10 @@ public class LecturesSecurityCallbackFactory {
 
 		@Override
 		public boolean canAddNoticeOfAbsences() {
+			if(!lectureModule.isAbsenceNoticeEnabled()) {
+				return false;
+			}
+			
 			if(viewAs == LectureRoles.participant) {
 				return lectureModule.isParticipantCanNotice();
 			}
diff --git a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_de.properties
index f1de0643fd7de1b0313b11ecd59f95416bfd48f4..bbbb3ff301f3fdec7453b5883b9107a5280b1b57 100644
--- a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_de.properties
+++ b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_de.properties
@@ -163,6 +163,7 @@ info.no.lectures=Sie haben momentan keine geplanten Lektionen
 infos.participant.attendance.rate=Pers\u00F6nlicher Schwellwert\: {0}%
 interceptor.start=Sie haben jetzt einen Lektionenblock f\u00FCr den Kurs "{0}" {1} von {4} bis {5}.
 lecture.absence.default.authorized=Absenzen standardm\u00E4ssig als entschuldigt z\u00E4hlen
+lecture.absence.notice.enabled=Absenzen/Abmeldungen/Dispenzen einschalten
 lecture.admin.course.override.title=Konfiguration - Auf Kursebene \u00FCbersteuerbar
 lecture.admin.enabled=Lektionen- und Absenzenmanagement einschalten
 lecture.admin.global.title=Globale Konfiguration
diff --git a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties
index 6de88f533ada4942d3152c53b69a04448ab7bdf7..9dfdfaf9cfcc52e13294f3cc0a46de32712335eb 100644
--- a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties
+++ b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_en.properties
@@ -163,6 +163,7 @@ info.no.lectures=You don't follow any lectures for the moment.
 infos.participant.attendance.rate=Personal attendance rate\: {0}%
 interceptor.start=You have now a roll call for the course "{0}" {1} from {4} until {5}.
 lecture.absence.default.authorized=Absence per default authorized
+lecture.absence.notice.enabled=Enable absences/notices of absence/dispensations
 lecture.admin.course.override.title=Configuration - can be overridden at course level
 lecture.admin.enabled=Enable lectures and absence management
 lecture.admin.global.title=Global configuration
diff --git a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_fr.properties
index 969fb3dd0fdbbfbc89d24a2e5a09ff894214bd9c..fa578acd49a68bae418de35e9ef5552e89f72ce1 100644
--- a/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_fr.properties
+++ b/src/main/java/org/olat/modules/lecture/ui/_i18n/LocalStrings_fr.properties
@@ -163,6 +163,7 @@ info.no.lectures=Vous ne suivez pour l'instant aucun cours bloc.
 infos.participant.attendance.rate=Valeur seuil personelle\: {0}%
 interceptor.start=Vous avez un cours bloc pour le cours "{0}" {1} de {4} \u00E0 {5}.
 lecture.absence.default.authorized=Compter les absences par d\u00E9faut comme excus\u00E9es
+lecture.absence.notice.enabled=Activer absences/avis d'absences/dispenses
 lecture.admin.course.override.title=Configuration - modifiable au niveau du cours
 lecture.admin.enabled=Activer l'administration des cours blocs et des absences
 lecture.admin.global.title=Configuration globale
diff --git a/src/main/java/org/olat/modules/lecture/ui/admin/LectureSettingsAdminController.java b/src/main/java/org/olat/modules/lecture/ui/admin/LectureSettingsAdminController.java
index a85b2ec318f6cfcf503f43bd5b56464955009879..bc953120d2cffd017f23e0916a6de2a2cf22e086 100644
--- a/src/main/java/org/olat/modules/lecture/ui/admin/LectureSettingsAdminController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/admin/LectureSettingsAdminController.java
@@ -67,6 +67,7 @@ public class LectureSettingsAdminController extends FormBasicController {
 	private TextElement assessmentFollowupTimeEl;
 	private TextElement assessmentSafeExamBrowserEl;
 	private MultipleSelectionElement enableEl;
+	private MultipleSelectionElement enableAbsenceNoticeEl;
 	private MultipleSelectionElement enableAssessmentModeEl;
 	private MultipleSelectionElement calculateAttendanceRateEnableEl;
 	private MultipleSelectionElement appealAbsenceEnableEl;
@@ -107,7 +108,9 @@ public class LectureSettingsAdminController extends FormBasicController {
 		String[] onValues = new String[] { translate("on") };
 		enableEl = uifactory.addCheckboxesHorizontal("lecture.admin.enabled", courseCont, onKeys, onValues);
 		enableEl.addActionListener(FormEvent.ONCHANGE);
-
+		
+		enableAbsenceNoticeEl = uifactory.addCheckboxesHorizontal("lecture.absence.notice.enabled", courseCont, onKeys, onValues);
+		
 		String[] yesNoValues = new String[]{ translate("yes"), translate("no") };
 		canOverrideStandardConfigEl = uifactory.addRadiosHorizontal("lecture.can.override.standard.configuration", courseCont, yesNoKeys, yesNoValues);
 
@@ -197,6 +200,9 @@ public class LectureSettingsAdminController extends FormBasicController {
 		if(lectureModule.isEnabled()) {
 			enableEl.select(onKeys[0], true);
 		}
+		if(lectureModule.isAbsenceNoticeEnabled()) {
+			enableAbsenceNoticeEl.select(onKeys[0], true);
+		}
 		
 		if(lectureModule.isCanOverrideStandardConfiguration()) {
 			canOverrideStandardConfigEl.select(yesNoKeys[0], true);
@@ -324,6 +330,7 @@ public class LectureSettingsAdminController extends FormBasicController {
 	
 	private void updateUI() {
 		boolean enabled = enableEl.isAtLeastSelected(1);
+		enableAbsenceNoticeEl.setVisible(enabled);
 		canOverrideStandardConfigEl.setVisible(enabled);
 		authorizedAbsenceEnableEl.setVisible(enabled);
 		attendanceRateEl.setVisible(enabled);
@@ -444,6 +451,7 @@ public class LectureSettingsAdminController extends FormBasicController {
 		
 		if(enabled) {
 			lectureModule.setCanOverrideStandardConfiguration(canOverrideStandardConfigEl.isSelected(0));
+			lectureModule.setAbsenceNoticeEnabled(enableAbsenceNoticeEl.isSelected(0));
 
 			//enabled user tool
 			Set<String> availableTools = userToolsModule.getAvailableUserToolSet();
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/AbsencesController.java b/src/main/java/org/olat/modules/lecture/ui/coach/AbsencesController.java
index aa7d782f283dac64c3d508f9376818b865f92536..bed5c19d5f7cd57c22d62e77dc3500ccac6d45b3 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/AbsencesController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/AbsencesController.java
@@ -94,6 +94,7 @@ public class AbsencesController extends BasicController {
 		
 		addAbsenceButton = LinkFactory.createButton("add.absence", mainVC, this);
 		addAbsenceButton.setIconLeftCSS("o_icon o_icon_add");
+		addAbsenceButton.setVisible(secCallback.canAddAbsences());
 		
 		putInitialPanel(mainVC);
 		noticesListCtlr.loadModel(searchParams);
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCoachingController.java b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCoachingController.java
index 1a9289c0ec2f5d7713d6e7d1256c2747ea66fac7..5c0a7bbe7529a90453a57628c05767458634cbcc 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCoachingController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCoachingController.java
@@ -41,6 +41,7 @@ import org.olat.core.id.context.ContextEntry;
 import org.olat.core.id.context.StateEntry;
 import org.olat.core.util.Util;
 import org.olat.core.util.resource.OresHelper;
+import org.olat.modules.lecture.LectureModule;
 import org.olat.modules.lecture.ui.LectureRepositoryAdminController;
 import org.olat.modules.lecture.ui.LectureRoles;
 import org.olat.modules.lecture.ui.LecturesSecurityCallback;
@@ -48,6 +49,7 @@ import org.olat.modules.lecture.ui.TeacherToolOverviewController;
 import org.olat.modules.lecture.ui.event.OpenRepositoryEntryEvent;
 import org.olat.modules.lecture.ui.event.SelectLectureIdentityEvent;
 import org.olat.repository.RepositoryEntry;
+import org.springframework.beans.factory.annotation.Autowired;
 
 /**
  * 
@@ -59,10 +61,10 @@ public class LecturesCoachingController extends BasicController implements Activ
 	
 	private Link reportLink;
 	private Link appealsLink;
+	private Link absenceLink;
+	private Link dispensationLink;
 	private final Link cockpitLink;
 	private final Link lecturesLink;
-	private final Link absenceLink;
-	private final Link dispensationLink;
 	private final Link lecturesSearchLink;
 	private final VelocityContainer mainVC;
 	private final TooledStackedPanel stackPanel;
@@ -78,6 +80,9 @@ public class LecturesCoachingController extends BasicController implements Activ
 	private DispensationsController dispensationsController;
 	private TeacherToolOverviewController teacherToolOverviewController;
 	
+	@Autowired
+	private LectureModule lectureModule;
+	
 	public LecturesCoachingController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel,
 			LecturesSecurityCallback secCallback) {
 		super(ureq, wControl, Util.createPackageTranslator(LectureRepositoryAdminController.class, ureq.getLocale()));
@@ -91,12 +96,14 @@ public class LecturesCoachingController extends BasicController implements Activ
 		lecturesLink = LinkFactory.createLink("coach.lectures", mainVC, this);
 		segmentView.addSegment(lecturesLink, false);
 		
-		absenceLink = LinkFactory.createLink("coach.absence", mainVC, this);
-		segmentView.addSegment(absenceLink, false);
-		dispensationLink = LinkFactory.createLink("coach.dispensation", mainVC, this);
-		segmentView.addSegment(dispensationLink, false);
+		if(lectureModule.isAbsenceNoticeEnabled()) {
+			absenceLink = LinkFactory.createLink("coach.absence", mainVC, this);
+			segmentView.addSegment(absenceLink, false);
+			dispensationLink = LinkFactory.createLink("coach.dispensation", mainVC, this);
+			segmentView.addSegment(dispensationLink, false);
+		}
 		
-		if(secCallback.canSeeAppeals()) {
+		if(lectureModule.isAbsenceAppealEnabled() && secCallback.canSeeAppeals()) {
 			appealsLink = LinkFactory.createLink("coach.appeals", mainVC, this);
 			segmentView.addSegment(appealsLink, false);
 		}
@@ -134,10 +141,10 @@ public class LecturesCoachingController extends BasicController implements Activ
 			} else if("Teacher".equalsIgnoreCase(type)) {
 				doOpenLectures(ureq);
 				segmentView.select(lecturesLink);
-			} else if("Absences".equalsIgnoreCase(type)) {
+			} else if("Absences".equalsIgnoreCase(type) && absenceLink != null) {
 				doAbsences(ureq);
 				segmentView.select(absenceLink);
-			} else if("Dispenses".equalsIgnoreCase(type)) {
+			} else if("Dispenses".equalsIgnoreCase(type) && dispensationLink != null) {
 				doDispenses(ureq);
 				segmentView.select(dispensationLink);
 			} else if("Appeals".equalsIgnoreCase(type)) {
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCockpitController.java b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCockpitController.java
index 4fa017d4384abb8650adb5ca35fd5854619eac5b..72ad09b1a8eb433892452508071b58fa10cd912f 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCockpitController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/LecturesCockpitController.java
@@ -75,8 +75,8 @@ public class LecturesCockpitController extends BasicController implements Activa
 	private final VelocityContainer mainVC;
 	private final List<Link> pendingLecturesLink = new ArrayList<>();
 	
+	private DailyAbsencesController absencesListCtrl;
 	private final DayChooserController dayChooserCtrl;
-	private final DailyAbsencesController absencesListCtrl;
 	private DailyLectureBlockOverviewController lectureBlocksCtrl;
 
 	private TeacherRollCallController rollCallCtrl;
@@ -108,9 +108,11 @@ public class LecturesCockpitController extends BasicController implements Activa
 			mainVC.put("lectureBlocks", lectureBlocksCtrl.getInitialComponent());
 		}
 		
-		absencesListCtrl = new DailyAbsencesController(ureq, getWindowControl(), getCurrentDate(), null, secCallback);
-		listenTo(absencesListCtrl);
-		mainVC.put("absences", absencesListCtrl.getInitialComponent());
+		if(lectureModule.isAbsenceNoticeEnabled()) {
+			absencesListCtrl = new DailyAbsencesController(ureq, getWindowControl(), getCurrentDate(), null, secCallback);
+			listenTo(absencesListCtrl);
+			mainVC.put("absences", absencesListCtrl.getInitialComponent());
+		}
 		
 		mainVC.contextPut("pendingLectures", pendingLecturesLink);
 
@@ -194,7 +196,9 @@ public class LecturesCockpitController extends BasicController implements Activa
 		if(lectureBlocksCtrl != null) {
 			lectureBlocksCtrl.loadModel();
 		}
-		absencesListCtrl.reloadModel();
+		if(absencesListCtrl != null) {
+			absencesListCtrl.reloadModel();
+		}
 		loadPendingLectureBlocks();
 	}
 	
@@ -280,7 +284,9 @@ public class LecturesCockpitController extends BasicController implements Activa
 		if(lectureBlocksCtrl != null) {
 			lectureBlocksCtrl.setCurrentDate(date);
 		}
-		absencesListCtrl.setCurrentDate(date);
+		if(absencesListCtrl != null) {
+			absencesListCtrl.setCurrentDate(date);
+		}
 		updateCurrentDate();
 	}
 }
diff --git a/src/main/java/org/olat/modules/lecture/ui/coach/_content/cockpit.html b/src/main/java/org/olat/modules/lecture/ui/coach/_content/cockpit.html
index 74679d7017912e26582b9f8643fef1a3a424d5db..5c43219022632a35dbad59712089a7ebfcef5229 100644
--- a/src/main/java/org/olat/modules/lecture/ui/coach/_content/cockpit.html
+++ b/src/main/java/org/olat/modules/lecture/ui/coach/_content/cockpit.html
@@ -29,10 +29,12 @@
 		#end
 	</div>
 	#end
+	#if($r.visible("absences"))
 	<div class="clearfix">
 		<h4>$r.translate("cockpit.absences")</h4>
 		$r.render("absences")
 	</div>
+	#end
 </fieldset>
 
 #end
\ No newline at end of file
diff --git a/src/main/java/org/olat/modules/lecture/ui/profile/IdentityProfileController.java b/src/main/java/org/olat/modules/lecture/ui/profile/IdentityProfileController.java
index c35cff8f6b0e9c3d87d77b7cb9b5404e5858ddce..4cfa8cc66b0788d896846081a4e9cc979267a7b7 100644
--- a/src/main/java/org/olat/modules/lecture/ui/profile/IdentityProfileController.java
+++ b/src/main/java/org/olat/modules/lecture/ui/profile/IdentityProfileController.java
@@ -45,6 +45,7 @@ import org.olat.core.util.StringHelper;
 import org.olat.core.util.Util;
 import org.olat.modules.coach.CoachingService;
 import org.olat.modules.lecture.AbsenceNoticeType;
+import org.olat.modules.lecture.LectureModule;
 import org.olat.modules.lecture.model.EditAbsenceNoticeWrapper;
 import org.olat.modules.lecture.ui.AppealListRepositoryController;
 import org.olat.modules.lecture.ui.LectureRepositoryAdminController;
@@ -73,8 +74,8 @@ public class IdentityProfileController extends BasicController implements Activa
 	
 	private final int dailyTab;
 	private final int lecturesTab;
-	private final int appealsTab;
-	private final int dispensationsTab;
+	private int appealsTab;
+	private int dispensationsTab;
 	
 	private TabbedPane tabPane;
 	private final VelocityContainer mainVC;
@@ -88,6 +89,8 @@ public class IdentityProfileController extends BasicController implements Activa
 	private DailyOverviewProfilController dailyOverviewCtrl;
 	private ParticipantLecturesOverviewController lecturesCtrl;
 	
+	@Autowired
+	private LectureModule lectureModule;
 	@Autowired
 	private CoachingService coachingService;
 	
@@ -154,18 +157,22 @@ public class IdentityProfileController extends BasicController implements Activa
 		});
 
 		// dispensation
-		dispensationsTab = tabPane.addTab(translate("user.overview.dispensation"), uureq -> {
-			dispensationsCtrl = new DispensationsController(uureq, getWindowControl(), null, secCallback, false, false);
-			listenTo(dispensationsCtrl);
-			return dispensationsCtrl.getInitialComponent();
-		});
+		if(lectureModule.isAbsenceNoticeEnabled()) {
+			dispensationsTab = tabPane.addTab(translate("user.overview.dispensation"), uureq -> {
+				dispensationsCtrl = new DispensationsController(uureq, getWindowControl(), null, secCallback, false, false);
+				listenTo(dispensationsCtrl);
+				return dispensationsCtrl.getInitialComponent();
+			});
+		}
 
 		// appeals
-		appealsTab = tabPane.addTab(translate("user.overview.appeals"), uureq -> {
-			appealsCtrl = new AppealListRepositoryController(uureq, getWindowControl(), profiledIdentity, secCallback);
-			listenTo(appealsCtrl);
-			return appealsCtrl.getInitialComponent();
-		});
+		if(lectureModule.isAbsenceAppealEnabled()) {
+			appealsTab = tabPane.addTab(translate("user.overview.appeals"), uureq -> {
+				appealsCtrl = new AppealListRepositoryController(uureq, getWindowControl(), profiledIdentity, secCallback);
+				listenTo(appealsCtrl);
+				return appealsCtrl.getInitialComponent();
+			});
+		}
 		
 		putInitialPanel(mainVC);
 	}