diff --git a/src/main/java/org/olat/modules/appointments/ui/AppointmentListSelectionController.java b/src/main/java/org/olat/modules/appointments/ui/AppointmentListSelectionController.java
index 67a8b881ca3a5b2aedfc5644e5a9989c6efef4e1..12428784b78af1f6ea6e188a6cdd6829a484b4e2 100644
--- a/src/main/java/org/olat/modules/appointments/ui/AppointmentListSelectionController.java
+++ b/src/main/java/org/olat/modules/appointments/ui/AppointmentListSelectionController.java
@@ -185,10 +185,11 @@ public class AppointmentListSelectionController extends AppointmentListControlle
 		} else if (topic.isMultiParticipation() || userHasNoConfirmedParticipation) {
 			row.setFreeParticipations(freeParticipations);
 			
-			boolean selectable = Appointment.Status.confirmed == appointment.getStatus()
-					? false
-					: freeParticipations == null // no limit
-						|| freeParticipations.intValue() > 0;
+			
+			boolean selectable = Appointment.Status.planned == appointment.getStatus() || (topic.isAutoConfirmation() && !selected)
+					? freeParticipations == null // no limit
+						|| freeParticipations.intValue() > 0
+					: false;
 			
 			boolean unselectable = selected && Appointment.Status.planned == appointment.getStatus();
 			boolean enabled = selectable || unselectable;