diff --git a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
index bcb956f15826384490a44cf3a05cca5dc3470441..226c619dd83e847e15b5cb71d2da432a0e0ac5c6 100644
--- a/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
+++ b/src/main/java/org/olat/commons/calendar/ICalFileCalendarManager.java
@@ -324,6 +324,9 @@ public class ICalFileCalendarManager extends BasicManager implements CalendarMan
 	 */
 	public KalendarConfig findKalendarConfigForIdentity(Kalendar kalendar, UserRequest ureq) {
 		Preferences guiPreferences = ureq.getUserSession().getGuiPreferences();
+		if(guiPreferences == null) {
+			return null;
+		}
 		return (KalendarConfig)guiPreferences.get(KalendarConfig.class, kalendar.getCalendarID());
 	}
 
diff --git a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
index 7d01b6feb7e2238de682bf8e1a82db53c86d3bd3..e6269232b182837f2015fd82e8054d2d31eefef1 100644
--- a/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
+++ b/src/main/java/org/olat/restapi/repository/course/CoursesWebService.java
@@ -210,7 +210,8 @@ public class CoursesWebService {
 	@PUT
 	@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
 	public Response createEmptyCourse(@QueryParam("shortTitle") String shortTitle, @QueryParam("title") String title,
-			@QueryParam("softKey") String softKey, @QueryParam("access") Integer access, @QueryParam("membersOnly") Boolean membersOnly, 
+			@QueryParam("displayName") String displayName, @QueryParam("softKey") String softKey,
+			@QueryParam("access") Integer access, @QueryParam("membersOnly") Boolean membersOnly, 
 			@QueryParam("externalId") String externalId, @QueryParam("externalRef") String externalRef,
 			@QueryParam("managedFlags") String managedFlags, @QueryParam("sharedFolderSoftKey") String sharedFolderSoftKey,
 			@QueryParam("copyFrom") Long copyFrom,
@@ -223,13 +224,16 @@ public class CoursesWebService {
 		
 		int accessInt = (access == null ? RepositoryEntry.ACC_OWNERS : access.intValue());
 		boolean membersOnlyBool = (membersOnly == null ? false : membersOnly.booleanValue());
+		if(!StringHelper.containsNonWhitespace(displayName)) {
+			displayName = shortTitle;
+		}
 		
 		ICourse course;
 		UserRequest ureq = getUserRequest(request);
 		if(copyFrom != null) {
-			course = copyCourse(copyFrom, ureq, shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
+			course = copyCourse(copyFrom, ureq, shortTitle, title, displayName, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
 		} else {
-			course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
+			course = createEmptyCourse(ureq.getIdentity(), shortTitle, title, displayName, softKey, accessInt, membersOnlyBool, externalId, externalRef, managedFlags, configVO);
 		}
 		CourseVO vo = ObjectFactory.get(course);
 		return Response.ok(vo).build();
@@ -257,8 +261,9 @@ public class CoursesWebService {
 		UserRequest ureq = getUserRequest(request);
 
 		CourseConfigVO configVO = new CourseConfigVO();
-		ICourse course = createEmptyCourse(ureq.getIdentity(), courseVo.getTitle(),
-				courseVo.getTitle(), courseVo.getSoftKey(), RepositoryEntry.ACC_OWNERS, false,
+		ICourse course = createEmptyCourse(ureq.getIdentity(),
+				courseVo.getTitle(), courseVo.getTitle(), courseVo.getTitle(),
+				courseVo.getSoftKey(), RepositoryEntry.ACC_OWNERS, false,
 				courseVo.getExternalId(), courseVo.getExternalRef(), courseVo.getManagedFlags(),
 				configVO);
 		CourseVO vo = ObjectFactory.get(course);
@@ -423,10 +428,10 @@ public class CoursesWebService {
 		}
 	}
 	
-	public static ICourse copyCourse(Long copyFrom, UserRequest ureq, String name, String longTitle,
+	private static ICourse copyCourse(Long copyFrom, UserRequest ureq, String shortTitle, String longTitle, String displayName,
 			String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags,
 			CourseConfigVO courseConfigVO) {
-		String shortTitle = name;
+
 		//String learningObjectives = name + " (Example of creating a new course)";
 		
 		OLATResourceable originalOresTrans = OresHelper.createOLATResourceableInstance(CourseModule.class, copyFrom);
@@ -450,8 +455,8 @@ public class CoursesWebService {
 			preparedEntry.setCanDownload(src.getCanDownload());
 			preparedEntry.setCanLaunch(src.getCanLaunch());
 			
-			if (courseConfigVO != null && StringHelper.containsNonWhitespace(shortTitle)) {
-				preparedEntry.setDisplayname(shortTitle);
+			if (courseConfigVO != null && StringHelper.containsNonWhitespace(displayName)) {
+				preparedEntry.setDisplayname(displayName);
 			} else {
 				preparedEntry.setDisplayname("Copy of " + src.getDisplayname());
 			}
@@ -488,7 +493,7 @@ public class CoursesWebService {
 			// copy image if available
 			RepositoryManager.getInstance().copyImage(src, preparedEntry);
 			
-			ICourse course = prepareCourse(preparedEntry, courseConfigVO);
+			ICourse course = prepareCourse(preparedEntry,shortTitle, longTitle, courseConfigVO);
 			RepositoryHandlerFactory.getInstance().getRepositoryHandler(src).releaseLock(lockResult);
 			return course;
 		}
@@ -505,7 +510,7 @@ public class CoursesWebService {
 	 * @return
 	 */
 	public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) {
-		return createEmptyCourse(initialAuthor, shortTitle, longTitle, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, courseConfigVO);
+		return createEmptyCourse(initialAuthor, shortTitle, longTitle, shortTitle, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, courseConfigVO);
 	}
 	
 	/**
@@ -520,18 +525,22 @@ public class CoursesWebService {
 	 * @param courseConfigVO
 	 * @return
 	 */
-	public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle,
+	public static ICourse createEmptyCourse(Identity initialAuthor, String shortTitle, String longTitle, String reDisplayName,
 			String softKey, int access, boolean membersOnly, String externalId, String externalRef, String managedFlags, CourseConfigVO courseConfigVO) {
+		
 		String learningObjectives = shortTitle + " (Example of creating a new course)";
-
+		if(!StringHelper.containsNonWhitespace(reDisplayName)) {
+			reDisplayName = shortTitle;
+		}
+		
 		try {
 			OLATResourceable oresable = OLATResourceManager.getInstance().createOLATResourceInstance(CourseModule.class);
 			// create a repository entry
-			RepositoryEntry addedEntry = createCourseRepositoryEntry(initialAuthor, shortTitle,  softKey, externalId, externalRef, managedFlags, oresable);
+			RepositoryEntry addedEntry = createCourseRepositoryEntry(initialAuthor, reDisplayName,  softKey, externalId, externalRef, managedFlags, oresable);
 			// create an empty course
 			CourseFactory.createEmptyCourse(oresable, shortTitle, longTitle, learningObjectives);
 			prepareSecurityGroup(initialAuthor, addedEntry, access, membersOnly);
-			return prepareCourse(addedEntry, courseConfigVO);
+			return prepareCourse(addedEntry, shortTitle, longTitle, courseConfigVO);
 		} catch (Exception e) {
 			throw new WebApplicationException(e);
 		}
@@ -605,19 +614,27 @@ public class CoursesWebService {
 		RepositoryManager.getInstance().saveRepositoryEntry(addedEntry);
 	}
 	
-	private static ICourse prepareCourse(RepositoryEntry addedEntry, CourseConfigVO courseConfigVO) {
+	private static ICourse prepareCourse(RepositoryEntry addedEntry, String shortTitle, String longTitle, CourseConfigVO courseConfigVO) {
 		BaseSecurity securityManager = BaseSecurityManager.getInstance();
 		securityManager.createAndPersistPolicy(addedEntry.getOwnerGroup(), Constants.PERMISSION_ADMIN, addedEntry.getOlatResource());
 
 		// set root node title
+		String courseShortTitle = addedEntry.getDisplayname();
+		if(StringHelper.containsNonWhitespace(shortTitle)) {
+			courseShortTitle = shortTitle;
+		}
+		String courseLongTitle = addedEntry.getDisplayname();
+		if(StringHelper.containsNonWhitespace(longTitle)) {
+			courseLongTitle = longTitle;
+		}
+		
 		ICourse course = CourseFactory.openCourseEditSession(addedEntry.getOlatResource().getResourceableId());
-		String displayName = addedEntry.getDisplayname();
-		course.getRunStructure().getRootNode().setShortTitle(Formatter.truncate(displayName, 25));
-		course.getRunStructure().getRootNode().setLongTitle(displayName);
+		course.getRunStructure().getRootNode().setShortTitle(Formatter.truncate(courseShortTitle, 25));
+		course.getRunStructure().getRootNode().setLongTitle(courseLongTitle);
 
 		CourseNode rootNode = ((CourseEditorTreeNode) course.getEditorTreeModel().getRootNode()).getCourseNode();
-		rootNode.setShortTitle(Formatter.truncate(displayName, 25));
-		rootNode.setLongTitle(displayName);
+		rootNode.setShortTitle(Formatter.truncate(courseShortTitle, 25));
+		rootNode.setLongTitle(courseLongTitle);
 		
 		if(courseConfigVO != null) {
 			CourseConfig courseConfig = course.getCourseEnvironment().getCourseConfig();
@@ -625,7 +642,6 @@ public class CoursesWebService {
 				courseConfig.setSharedFolderSoftkey(courseConfigVO.getSharedFolderSoftKey());
 			}
 		}
-		//RepositoryManager.getInstance().updateRepositoryEntry(addedEntry);
 
 		CourseFactory.saveCourse(course.getResourceableId());
 		CourseFactory.closeCourseEditSession(course.getResourceableId(), true);
diff --git a/src/test/java/org/olat/restapi/CoursesTest.java b/src/test/java/org/olat/restapi/CoursesTest.java
index 730bbc992e5f295129f5c18b5173b241ff8173d5..f91494200e97da26dc26b2e7dde67b34643e039e 100644
--- a/src/test/java/org/olat/restapi/CoursesTest.java
+++ b/src/test/java/org/olat/restapi/CoursesTest.java
@@ -103,16 +103,16 @@ public class CoursesTest extends OlatJerseyTestCase {
 		try {
 			// create course and persist as OLATResourceImpl
 			admin = BaseSecurityManager.getInstance().findIdentityByName("administrator");
-			course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, RepositoryEntry.ACC_OWNERS, false, null, null, null, null);
+			course1 = CoursesWebService.createEmptyCourse(admin, "courses1", "courses1 long name", null, null, RepositoryEntry.ACC_OWNERS, false, null, null, null, null);
 			
 			externalId = UUID.randomUUID().toString();
 			externalRef = UUID.randomUUID().toString();
-			course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId, externalRef, "all", null);
+			course2 = CoursesWebService.createEmptyCourse(admin, "courses2", "courses2 long name", null, null, RepositoryEntry.ACC_OWNERS, false, externalId, externalRef, "all", null);
 			
 			dbInstance.commitAndCloseSession();
 
 			externalId3 = UUID.randomUUID().toString();
-			course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, RepositoryEntry.ACC_OWNERS, false, externalId3, null, "all", null);
+			course3 = CoursesWebService.createEmptyCourse(admin, "courses3", "courses3 long name", null, null, RepositoryEntry.ACC_OWNERS, false, externalId3, null, "all", null);
 			RepositoryEntry re3 = repositoryManager.lookupRepositoryEntry(course3, false);
 			RepositoryEntryLifecycle lifecycle3 = reLifecycleDao.create("course3 lifecycle", UUID.randomUUID().toString(), true, new Date(), new Date());
 			dbInstance.commit();