diff --git a/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java b/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java
index d38923e85e93c0db65acc4c1c64e5e82b8245c4e..fd4c8130476ae257682aba41577e72f1c7131357 100644
--- a/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java
+++ b/src/main/java/org/olat/commons/calendar/restapi/CalendarWSHelper.java
@@ -54,6 +54,14 @@ public class CalendarWSHelper {
 		kalEvent.setLiveStreamUrl(event.getLiveStreamUrl());
         kalEvent.setExternalId(event.getExternalId());
         kalEvent.setExternalSource(event.getExternalSource());
+        if(event.getClassification() != null) {
+        	int classification = event.getClassification().intValue();
+        	if(classification == KalendarEvent.CLASS_PRIVATE
+        			|| classification == KalendarEvent.CLASS_PUBLIC
+        			|| classification == KalendarEvent.CLASS_X_FREEBUSY) {
+        		kalEvent.setClassification(classification);
+        	}
+        }
 	}
 	
 	static boolean hasReadAccess(KalendarRenderWrapper wrapper) {
diff --git a/src/main/java/org/olat/commons/calendar/restapi/EventVO.java b/src/main/java/org/olat/commons/calendar/restapi/EventVO.java
index dcff953f347bd2a1c8eb0d011166277732def2ee..134fa20b313b79900a188a1b0e84118a4ccfa334 100644
--- a/src/main/java/org/olat/commons/calendar/restapi/EventVO.java
+++ b/src/main/java/org/olat/commons/calendar/restapi/EventVO.java
@@ -45,6 +45,8 @@ public class EventVO {
 	private Date end;
 	private boolean allDayEvent;
 	
+	private Integer classification;
+	
 	private String liveStreamUrl;
 	
 	@Schema(required = true, description = "Action to be performed on managedFlags", allowableValues = { 
@@ -79,6 +81,7 @@ public class EventVO {
 		managedFlags = CalendarManagedFlag.toString(event.getManagedFlags());
 		externalId = event.getExternalId();
 		externalSource = event.getExternalSource();
+		classification = event.getClassification();
 	}
 
 	public String getId() {
@@ -157,6 +160,14 @@ public class EventVO {
 		this.calendarId = calendarId;
 	}
 
+	public Integer getClassification() {
+		return classification;
+	}
+
+	public void setClassification(Integer classification) {
+		this.classification = classification;
+	}
+
 	public String getManagedFlags() {
 		return managedFlags;
 	}
diff --git a/src/test/java/org/olat/restapi/CourseCalendarTest.java b/src/test/java/org/olat/restapi/CourseCalendarTest.java
index b354c88b5df9a89d49399b83e3fdb610212431b8..aee46c4637b061f5d6bdc73302fc0481398d36c3 100644
--- a/src/test/java/org/olat/restapi/CourseCalendarTest.java
+++ b/src/test/java/org/olat/restapi/CourseCalendarTest.java
@@ -186,6 +186,42 @@ public class CourseCalendarTest extends OlatRestTestCase {
 		conn.shutdown();
 	}
 	
+	@Test
+	public void putVisibleCalendarEvent() throws IOException, URISyntaxException {
+		RestConnection conn = new RestConnection();
+		assertTrue(conn.login(auth1.getName(), "A6B7C8"));
+
+		//create an event
+		EventVO event = new EventVO();
+		Calendar cal = Calendar.getInstance();
+		event.setBegin(cal.getTime());
+		cal.add(Calendar.HOUR_OF_DAY, 1);
+		event.setEnd(cal.getTime());
+		String subject = UUID.randomUUID().toString();
+		event.setSubject(subject);
+		event.setClassification(KalendarEvent.CLASS_PUBLIC);
+
+		URI eventUri = UriBuilder.fromUri(getContextURI()).path("repo").path("courses")
+				.path(course1.getResourceableId().toString()).path("calendar").path("event").build();
+		HttpPut putEventMethod = conn.createPut(eventUri, MediaType.APPLICATION_JSON, true);
+		conn.addJsonEntity(putEventMethod, event);
+		HttpResponse putEventResponse = conn.execute(putEventMethod);
+		assertEquals(200, putEventResponse.getStatusLine().getStatusCode());
+		EntityUtils.consume(putEventResponse.getEntity());
+		
+		//check if the event is saved
+		KalendarRenderWrapper calendarWrapper = calendarManager.getCourseCalendar(course1);
+		Collection<KalendarEvent> savedEvents = calendarWrapper.getKalendar().getEvents();
+		
+		KalendarEvent savedEvent = savedEvents.stream()
+				.filter(e -> subject.equals(e.getSubject()))
+				.findFirst().get();
+		
+		Assert.assertEquals(KalendarEvent.CLASS_PUBLIC, savedEvent.getClassification());
+
+		conn.shutdown();
+	}
+	
 	@Test
 	public void putCalendarEvents() throws IOException, URISyntaxException {
 		RestConnection conn = new RestConnection();