diff --git a/src/main/java/org/olat/course/nodes/cal/CourseCalendars.java b/src/main/java/org/olat/course/nodes/cal/CourseCalendars.java
index a9eebdcab6c7a95dda039f3b8bf239f3188888d0..1b8f04ee7715b85e3c6cd8fd6d2dabab854f8062 100644
--- a/src/main/java/org/olat/course/nodes/cal/CourseCalendars.java
+++ b/src/main/java/org/olat/course/nodes/cal/CourseCalendars.java
@@ -145,13 +145,11 @@ public class CourseCalendars {
 			// learning groups
 			List<BusinessGroup> ownerGroups = cgm.getOwnedBusinessGroups(identity);
 			addCalendars(ureq, userCourseEnv, ownerGroups, !readOnly, clpc, calendars);
-			List<BusinessGroup> attendedGroups = cgm.getParticipatingBusinessGroups(identity);
-			for (BusinessGroup ownerGroup : ownerGroups) {
-				if (attendedGroups.contains(ownerGroup)) {
-					attendedGroups.remove(ownerGroup);
-				}
-			}
-			addCalendars(ureq, userCourseEnv, attendedGroups, false, clpc, calendars);
+			// always add all group calendars in this course no matter if the identity is a member
+			// as public entries should be visible anyway
+			List<BusinessGroup> allGroups = cgm.getAllBusinessGroups();
+			allGroups.removeAll(ownerGroups);
+			addCalendars(ureq, userCourseEnv, allGroups, false, clpc, calendars);			
 		}
 		return new CourseCalendars(courseKalendarWrapper, calendars);
 	}