diff --git a/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java b/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java
index e7c8b8556bdc8d640a468ca95c1de9bc0268cf78..4dc53578e812e8a1a77ba2b5081cebd590e115b0 100644
--- a/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java
+++ b/src/main/java/org/olat/course/nodes/appointments/ParticipationSearchParams.java
@@ -20,6 +20,7 @@
 package org.olat.course.nodes.appointments;
 
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.stream.Collectors;
 
@@ -113,6 +114,10 @@ public class ParticipationSearchParams {
 				.map(AppointmentRef::getKey)
 				.collect(Collectors.toSet());
 	}
+	
+	public void setAppointment(AppointmentRef appointment) {
+		this.appointmentKeys = Collections.singletonList(appointment.getKey());
+	}
 
 	public Date getStartAfter() {
 		return startAfter;
diff --git a/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java b/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java
index f8a8e9f895573c81998d5780df280d0d76af7a11..ee4140755595123e8c660861bd14983cd585ad23 100644
--- a/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java
+++ b/src/main/java/org/olat/course/nodes/appointments/ui/AppointmentEditController.java
@@ -56,6 +56,7 @@ public class AppointmentEditController extends FormBasicController {
 	
 	private Topic topic;
 	private Appointment appointment;
+	private final boolean hasParticipations;
 	
 	@Autowired
 	private AppointmentsService appointmentsService;
@@ -63,12 +64,18 @@ public class AppointmentEditController extends FormBasicController {
 	public AppointmentEditController(UserRequest ureq, WindowControl wControl, Topic topic) {
 		super(ureq, wControl);
 		this.topic = topic;
+		this.hasParticipations = false;
 		initForm(ureq);
 	}
 
 	public AppointmentEditController(UserRequest ureq, WindowControl wControl, Appointment appointment) {
 		super(ureq, wControl);
 		this.appointment = appointment;
+		
+		ParticipationSearchParams params = new ParticipationSearchParams();
+		params.setAppointment(appointment);
+		this.hasParticipations = appointmentsService.getParticipationCount(params).longValue() > 0;
+		
 		initForm(ureq);
 	}
 
@@ -78,12 +85,14 @@ public class AppointmentEditController extends FormBasicController {
 		startEl = uifactory.addDateChooser("appointment.start", start, formLayout);
 		startEl.setDateChooserTimeEnabled(true);
 		startEl.setMandatory(true);
+		startEl.setEnabled(!hasParticipations);
 		startEl.addActionListener(FormEvent.ONCHANGE);
 		
 		Date end = appointment != null? appointment.getEnd(): null;
 		endEl = uifactory.addDateChooser("appointment.end", end, formLayout);
 		endEl.setDateChooserTimeEnabled(true);
 		endEl.setMandatory(true);
+		endEl.setEnabled(!hasParticipations);
 		
 		String location = appointment != null? appointment.getLocation(): null;
 		locationEl = uifactory.addTextElement("appointment.location", 128, location, formLayout);