diff --git a/src/main/java/de/thm/arsnova/controller/v2/CommentController.java b/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
index e117619c30aaf3b422e3b6d09fbab963ab4fc803..29e21a494c23c534210cd094a24ff1a673b24084 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/CommentController.java
@@ -78,7 +78,7 @@ public class CommentController extends PaginationController {
 	@DeprecatedApi
 	@Deprecated
 	public String getCommentCount(@ApiParam(value = "Room-Key from current room", required = true) @RequestParam("sessionkey") final String roomShortId) {
-		return String.valueOf(commentService.count(roomShortId));
+		return String.valueOf(commentService.count(roomService.getIdByShortId(roomShortId)));
 	}
 
 	@ApiOperation(value = "count all unread comments",
@@ -87,7 +87,7 @@ public class CommentController extends PaginationController {
 	@DeprecatedApi
 	@Deprecated
 	public CommentReadingCount getUnreadCommentCount(@ApiParam(value = "Room-Key from current room", required = true) @RequestParam("sessionkey") final String roomShortId, String user) {
-		return commentService.countRead(roomShortId, user);
+		return commentService.countRead(roomService.getIdByShortId(roomShortId), user);
 	}
 
 	@ApiOperation(value = "Retrieves all Comments for a Room",
@@ -95,7 +95,7 @@ public class CommentController extends PaginationController {
 	@RequestMapping(value = "/", method = RequestMethod.GET)
 	@Pagination
 	public List<Comment> getComments(@ApiParam(value = "Room-Key from current room", required = true) @RequestParam("sessionkey") final String roomShortId) {
-		return commentService.getByRoomShortId(roomShortId, offset, limit).stream()
+		return commentService.getByRoomId(roomService.getIdByShortId(roomShortId), offset, limit).stream()
 				.map(toV2Migrator::migrate).collect(Collectors.toList());
 	}
 
diff --git a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
index 590ef0b3678f93892c1a48a521d4def49ab5fb97..9191456fe8ee1f1d3564fe19d2f8212aa4cb70e3 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/ContentController.java
@@ -31,6 +31,7 @@ import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.exceptions.NotImplementedException;
 import de.thm.arsnova.services.ContentService;
+import de.thm.arsnova.services.RoomService;
 import de.thm.arsnova.services.TimerService;
 import de.thm.arsnova.util.PaginationListDecorator;
 import de.thm.arsnova.web.DeprecatedApi;
@@ -67,6 +68,9 @@ public class ContentController extends PaginationController {
 	@Autowired
 	private ContentService contentService;
 
+	@Autowired
+	private RoomService roomService;
+
 	@Autowired
 	private TimerService timerService;
 
@@ -202,6 +206,7 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false", required = false) final boolean lectureContentsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false", required = false) final boolean preparationContentsOnly
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		boolean disable = false;
 		List<de.thm.arsnova.entities.Content> contents;
 
@@ -210,13 +215,13 @@ public class ContentController extends PaginationController {
 		}
 
 		if (lectureContentsOnly) {
-			contents = contentService.getLectureContents(roomShortId);
-			contentService.setVotingAdmissions(roomShortId, disable, contents);
+			contents = contentService.getLectureContents(roomId);
+			contentService.setVotingAdmissions(roomId, disable, contents);
 		} else if (preparationContentsOnly) {
-			contents = contentService.getPreparationContents(roomShortId);
-			contentService.setVotingAdmissions(roomShortId, disable, contents);
+			contents = contentService.getPreparationContents(roomId);
+			contentService.setVotingAdmissions(roomId, disable, contents);
 		} else {
-			contentService.setVotingAdmissionForAllContents(roomShortId, disable);
+			contentService.setVotingAdmissionForAllContents(roomId, disable);
 		}
 	}
 
@@ -244,17 +249,18 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false", required = false) final boolean lectureContentsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false", required = false) final boolean preparationContentsOnly
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		boolean p = publish == null || publish;
 		List<de.thm.arsnova.entities.Content> contents;
 
 		if (lectureContentsOnly) {
-			contents = contentService.getLectureContents(roomShortId);
-			contentService.publishContents(roomShortId, p, contents);
+			contents = contentService.getLectureContents(roomId);
+			contentService.publishContents(roomId, p, contents);
 		} else if (preparationContentsOnly) {
-			contents = contentService.getPreparationContents(roomShortId);
-			contentService.publishContents(roomShortId, p, contents);
+			contents = contentService.getPreparationContents(roomId);
+			contentService.publishContents(roomId, p, contents);
 		} else {
-			contentService.publishAll(roomShortId, p);
+			contentService.publishAll(roomId, p);
 		}
 	}
 
@@ -300,15 +306,16 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "requestImageData", defaultValue = "false") final boolean requestImageData,
 			final HttpServletResponse response
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		List<de.thm.arsnova.entities.Content> contents;
 		if (lectureContentsOnly) {
-			contents = contentService.getLectureContents(roomShortId);
+			contents = contentService.getLectureContents(roomId);
 		} else if (flashcardsOnly) {
-			contents = contentService.getFlashcards(roomShortId);
+			contents = contentService.getFlashcards(roomId);
 		} else if (preparationContentsOnly) {
-			contents = contentService.getPreparationContents(roomShortId);
+			contents = contentService.getPreparationContents(roomId);
 		} else {
-			contents = contentService.getByRoomShortId(roomShortId);
+			contents = contentService.getByRoomId(roomId);
 		}
 		if (contents == null || contents.isEmpty()) {
 			response.setStatus(HttpStatus.NO_CONTENT.value());
@@ -329,14 +336,15 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationContentsOnly,
 			final HttpServletResponse response
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		if (lectureContentsOnly) {
-			contentService.deleteLectureContents(roomShortId);
+			contentService.deleteLectureContents(roomId);
 		} else if (preparationContentsOnly) {
-			contentService.deletePreparationContents(roomShortId);
+			contentService.deletePreparationContents(roomId);
 		} else if (flashcardsOnly) {
-			contentService.deleteFlashcards(roomShortId);
+			contentService.deleteFlashcards(roomId);
 		} else {
-			contentService.deleteAllContents(roomShortId);
+			contentService.deleteAllContents(roomId);
 		}
 	}
 
@@ -351,15 +359,16 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "flashcardsonly", defaultValue = "false") final boolean flashcardsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationContentsOnly
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		int count = 0;
 		if (lectureContentsOnly) {
-			count = contentService.countLectureContents(roomShortId);
+			count = contentService.countLectureContents(roomId);
 		} else if (preparationContentsOnly) {
-			count = contentService.countPreparationContents(roomShortId);
+			count = contentService.countPreparationContents(roomId);
 		} else if (flashcardsOnly) {
-			count = contentService.countFlashcards(roomShortId);
+			count = contentService.countFlashcards(roomId);
 		} else {
-			count = contentService.countByRoomShortId(roomShortId);
+			count = contentService.countByRoomId(roomId);
 		}
 
 		return String.valueOf(count);
@@ -384,13 +393,14 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureContentsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationContentsOnly
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		List<String> answers;
 		if (lectureContentsOnly) {
-			answers = contentService.getUnAnsweredLectureContentIds(roomShortId);
+			answers = contentService.getUnAnsweredLectureContentIds(roomId);
 		} else if (preparationContentsOnly) {
-			answers = contentService.getUnAnsweredPreparationContentIds(roomShortId);
+			answers = contentService.getUnAnsweredPreparationContentIds(roomId);
 		} else {
-			answers = contentService.getUnAnsweredContentIds(roomShortId);
+			answers = contentService.getUnAnsweredContentIds(roomId);
 		}
 		if (answers == null || answers.isEmpty()) {
 			throw new NoContentException();
@@ -564,12 +574,13 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationContentsOnly,
 			final HttpServletResponse response
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		if (lectureContentsOnly) {
-			contentService.deleteAllLectureAnswers(roomShortId);
+			contentService.deleteAllLectureAnswers(roomId);
 		} else if (preparationContentsOnly) {
-			contentService.deleteAllPreparationAnswers(roomShortId);
+			contentService.deleteAllPreparationAnswers(roomId);
 		} else {
-			contentService.deleteAllContentsAnswers(roomShortId);
+			contentService.deleteAllContentsAnswers(roomId);
 		}
 	}
 
@@ -650,13 +661,14 @@ public class ContentController extends PaginationController {
 			@RequestParam(value = "lecturequestionsonly", defaultValue = "false") final boolean lectureContentsOnly,
 			@RequestParam(value = "preparationquestionsonly", defaultValue = "false") final boolean preparationContentsOnly
 			) {
+		String roomId = roomService.getIdByShortId(roomShortId);
 		int count = 0;
 		if (lectureContentsOnly) {
-			count = contentService.countLectureContentAnswers(roomShortId);
+			count = contentService.countLectureContentAnswers(roomId);
 		} else if (preparationContentsOnly) {
-			count = contentService.countPreparationContentAnswers(roomShortId);
+			count = contentService.countPreparationContentAnswers(roomId);
 		} else {
-			count = contentService.countTotalAnswersByRoomShortId(roomShortId);
+			count = contentService.countTotalAnswersByRoomId(roomId);
 		}
 
 		return String.valueOf(count);
diff --git a/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java b/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
index 1d15fada0748fe9bf3cc718076a3384b655b473d..99dc8dd31bd05e028bda6fd057635d72a0a89c23 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/FeedbackController.java
@@ -22,6 +22,7 @@ import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.UserAuthentication;
 import de.thm.arsnova.exceptions.NotFoundException;
 import de.thm.arsnova.services.FeedbackService;
+import de.thm.arsnova.services.RoomService;
 import de.thm.arsnova.services.UserService;
 import de.thm.arsnova.web.DeprecatedApi;
 import de.thm.arsnova.websocket.ArsnovaSocketioServerImpl;
@@ -46,6 +47,9 @@ public class FeedbackController extends AbstractController {
 	@Autowired
 	private FeedbackService feedbackService;
 
+	@Autowired
+	private RoomService roomService;
+
 	@Autowired
 	private UserService userService;
 
@@ -53,14 +57,15 @@ public class FeedbackController extends AbstractController {
 	@Deprecated
 	@RequestMapping(value = "/session/{shortId}/feedback", method = RequestMethod.GET)
 	public Feedback getFeedback(@PathVariable final String shortId) {
-		return feedbackService.getByRoomShortId(shortId);
+		return feedbackService.getByRoomId(roomService.getIdByShortId(shortId));
 	}
 
 	@DeprecatedApi
 	@Deprecated
 	@RequestMapping(value = "/session/{shortId}/myfeedback", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
 	public String getMyFeedback(@PathVariable final String shortId) {
-		Integer value = feedbackService.getByRoomShortIdAndUser(shortId, userService.getCurrentUser());
+		String roomId = roomService.getIdByShortId(shortId);
+		Integer value = feedbackService.getByRoomIdAndUser(roomId, userService.getCurrentUser());
 		if (value != null && value >= Feedback.MIN_FEEDBACK_TYPE && value <= Feedback.MAX_FEEDBACK_TYPE) {
 			return value.toString();
 		}
@@ -71,21 +76,21 @@ public class FeedbackController extends AbstractController {
 	@Deprecated
 	@RequestMapping(value = "/session/{shortId}/feedbackcount", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
 	public String getFeedbackCount(@PathVariable final String shortId) {
-		return String.valueOf(feedbackService.countFeedbackByRoomShortId(shortId));
+		return String.valueOf(feedbackService.countFeedbackByRoomId(roomService.getIdByShortId(shortId)));
 	}
 
 	@DeprecatedApi
 	@Deprecated
 	@RequestMapping(value = "/session/{shortId}/roundedaveragefeedback", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
 	public String getAverageFeedbackRounded(@PathVariable final String shortId) {
-		return String.valueOf(feedbackService.calculateRoundedAverageFeedback(shortId));
+		return String.valueOf(feedbackService.calculateRoundedAverageFeedback(roomService.getIdByShortId(shortId)));
 	}
 
 	@DeprecatedApi
 	@Deprecated
 	@RequestMapping(value = "/session/{shortId}/averagefeedback", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
 	public String getAverageFeedback(@PathVariable final String shortId) {
-		return String.valueOf(feedbackService.calculateAverageFeedback(shortId));
+		return String.valueOf(feedbackService.calculateAverageFeedback(roomService.getIdByShortId(shortId)));
 	}
 
 	@DeprecatedApi
@@ -96,9 +101,10 @@ public class FeedbackController extends AbstractController {
 			@PathVariable final String shortId,
 			@RequestBody final int value
 			) {
+		String roomId = roomService.getIdByShortId(shortId);
 		UserAuthentication user = userService.getCurrentUser();
-		feedbackService.save(shortId, value, user);
-		Feedback feedback = feedbackService.getByRoomShortId(shortId);
+		feedbackService.save(roomId, value, user);
+		Feedback feedback = feedbackService.getByRoomId(roomId);
 
 		return feedback;
 	}
diff --git a/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java b/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
index 1cbc28b4a462d2c98930bda35993759f3951626a..80eb19c4de334b6da2c7a776a5dc105d6ece6c22 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/LegacyController.java
@@ -101,7 +101,7 @@ public class LegacyController extends AbstractController {
 	@RequestMapping(value = "/session/{shortId}/interposed", method = RequestMethod.DELETE)
 	@ResponseBody
 	public void deleteAllInterposedQuestions(@PathVariable final String shortId) {
-		commentService.deleteByRoomShortId(shortId);
+		commentService.deleteByRoomId(shortId);
 	}
 
 	@DeprecatedApi
diff --git a/src/main/java/de/thm/arsnova/controller/v2/MotdController.java b/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
index 141cdea0c3f1eb9e6bbbcef9edeeced8ead795a1..25803e290786323aaaa5740d0ce8ff7fdb856af1 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/MotdController.java
@@ -26,6 +26,7 @@ import de.thm.arsnova.entities.migration.v2.MotdList;
 import de.thm.arsnova.exceptions.ForbiddenException;
 import de.thm.arsnova.security.User;
 import de.thm.arsnova.services.MotdService;
+import de.thm.arsnova.services.RoomService;
 import de.thm.arsnova.services.UserService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -58,6 +59,9 @@ public class MotdController extends AbstractController {
 	@Autowired
 	private MotdService motdService;
 
+	@Autowired
+	private RoomService roomService;
+
 	@Autowired
 	private UserService userService;
 
@@ -77,7 +81,7 @@ public class MotdController extends AbstractController {
 		@ApiParam(value = "clientdate", required = false) @RequestParam(value = "clientdate", defaultValue = "") final String clientdate,
 		@ApiParam(value = "adminview", required = false) @RequestParam(value = "adminview", defaultValue = "false") final Boolean adminview,
 		@ApiParam(value = "audience", required = false) @RequestParam(value = "audience", defaultValue = "all") final String audience,
-		@ApiParam(value = "sessionkey", required = false) @RequestParam(value = "sessionkey", defaultValue = "null") final String roomShortId
+		@ApiParam(value = "sessionkey", required = false) @RequestParam(value = "sessionkey", required = false) final String roomShortId
 	) {
 		List<de.thm.arsnova.entities.Motd> motds;
 		Date date = new Date(System.currentTimeMillis());
@@ -86,7 +90,7 @@ public class MotdController extends AbstractController {
 		}
 		String roomId = "";
 		if (roomShortId != null) {
-			// roomId = ; // FIXME
+			roomId = roomService.getIdByShortId(roomShortId);
 		}
 		if (adminview) {
 			motds = "session".equals(audience) ?
diff --git a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
index 6fa4d191b72e9cef7d21b45de4809c7a764c3678..90ca741c839ea40ab397847ac744d636bce1b4fe 100644
--- a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
+++ b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java
@@ -104,7 +104,7 @@ public class RoomController extends PaginationController {
 	@Deprecated
 	@RequestMapping(value = "/{shortId}/activeusercount", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
 	public String countActiveUsers(@ApiParam(value = "Room-Key from current Room", required = true) @PathVariable final String shortId) {
-		return String.valueOf(roomService.activeUsers(shortId));
+		return String.valueOf(roomService.activeUsers(roomService.getIdByShortId(shortId)));
 	}
 
 	@ApiOperation(value = "Creates a new Room and returns the Room's data",
@@ -141,7 +141,8 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "Room-Key from current Room", required = true) @PathVariable final String shortId,
 			@ApiParam(value = "current room", required = true) @RequestBody final Room room
 			) {
-		return toV2Migrator.migrate(roomService.update(shortId, fromV2Migrator.migrate(room)));
+		return toV2Migrator.migrate(roomService.update(
+				roomService.getIdByShortId(shortId), fromV2Migrator.migrate(room)));
 	}
 
 	@ApiOperation(value = "change the Room creator (owner)", nickname = "changeRoomCreator")
@@ -150,7 +151,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "Room-key from current Room", required = true) @PathVariable final String shortId,
 			@ApiParam(value = "new Room creator", required = true) @RequestBody final String newCreator
 			) {
-		return toV2Migrator.migrate(roomService.updateCreator(shortId, newCreator));
+		return toV2Migrator.migrate(roomService.updateCreator(roomService.getIdByShortId(shortId), newCreator));
 	}
 
 	@ApiOperation(value = "Retrieves a list of Rooms",
@@ -309,12 +310,13 @@ public class RoomController extends PaginationController {
 		List<ImportExportContainer> rooms = new ArrayList<>();
 		ImportExportContainer temp;
 		for (String shortId : shortIds) {
-			roomService.setActive(shortId, false);
-			temp = roomService.exportRoom(shortId, withAnswerStatistics, withFeedbackQuestions);
+			String id = roomService.getIdByShortId(shortId);
+			roomService.setActive(id, false);
+			temp = roomService.exportRoom(id, withAnswerStatistics, withFeedbackQuestions);
 			if (temp != null) {
 				rooms.add(temp);
 			}
-			roomService.setActive(shortId, true);
+			roomService.setActive(id, true);
 		}
 		return rooms;
 	}
@@ -325,9 +327,10 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "Room-Key from current Room", required = true) @PathVariable final String shortId,
 			@ApiParam(value = "public pool attributes for Room", required = true) @RequestBody final ImportExportContainer.PublicPool publicPool
 			) {
-		roomService.setActive(shortId, false);
+		String id = roomService.getIdByShortId(shortId);
+		roomService.setActive(id, false);
 		de.thm.arsnova.entities.Room roomInfo = roomService.copyRoomToPublicPool(shortId, publicPool);
-		roomService.setActive(shortId, true);
+		roomService.setActive(id, true);
 
 		return toV2Migrator.migrate(roomInfo);
 	}
@@ -345,7 +348,7 @@ public class RoomController extends PaginationController {
 			final HttpServletResponse response
 			) {
 		if (lock != null) {
-			return toV2Migrator.migrate(roomService.setActive(shortId, lock));
+			return toV2Migrator.migrate(roomService.setActive(roomService.getIdByShortId(shortId), lock));
 		}
 		response.setStatus(HttpStatus.NOT_FOUND.value());
 		return null;
@@ -360,7 +363,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "question variant", required = false) @RequestParam(value = "questionVariant", required = false) final String questionVariant,
 			final HttpServletResponse response
 			) {
-		return roomService.getLearningProgress(shortId, type, questionVariant);
+		return roomService.getLearningProgress(roomService.getIdByShortId(shortId), type, questionVariant);
 	}
 
 	@ApiOperation(value = "retrieves a value for the learning progress for the current user",
@@ -372,7 +375,7 @@ public class RoomController extends PaginationController {
 			@RequestParam(value = "questionVariant", required = false) final String questionVariant,
 			final HttpServletResponse response
 			) {
-		return roomService.getMyLearningProgress(shortId, type, questionVariant);
+		return roomService.getMyLearningProgress(roomService.getIdByShortId(shortId), type, questionVariant);
 	}
 
 	@ApiOperation(value = "retrieves all Room features",
@@ -396,7 +399,7 @@ public class RoomController extends PaginationController {
 			) {
 		de.thm.arsnova.entities.Room room = roomService.getByShortId(shortId);
 		room.setSettings(fromV2Migrator.migrate(features));
-		roomService.update(shortId, room);
+		roomService.update(room.getId(), room);
 
 		return toV2Migrator.migrate(room.getSettings());
 	}
@@ -409,7 +412,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "lock", required = true) @RequestParam(required = true) final Boolean lock,
 			final HttpServletResponse response
 			) {
-		return String.valueOf(roomService.lockFeedbackInput(shortId, lock));
+		return String.valueOf(roomService.lockFeedbackInput(roomService.getIdByShortId(shortId), lock));
 	}
 
 	@RequestMapping(value = "/{shortId}/flipflashcards", method = RequestMethod.POST, produces = MediaType.TEXT_PLAIN_VALUE)
@@ -420,7 +423,7 @@ public class RoomController extends PaginationController {
 			@ApiParam(value = "flip", required = true) @RequestParam(required = true) final Boolean flip,
 			final HttpServletResponse response
 			) {
-		return String.valueOf(roomService.flipFlashcards(shortId, flip));
+		return String.valueOf(roomService.flipFlashcards(roomService.getIdByShortId(shortId), flip));
 	}
 
 	/* internal redirections */
diff --git a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java b/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java
index eea81a7ae99e21910429a51db6944f85210008b1..642e4465fce4436ce528a3e72d6251925ef10f58 100644
--- a/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/AnswerRepository.java
@@ -31,7 +31,7 @@ public interface AnswerRepository extends CrudRepository<Answer, String> {
 	int countByContentId(String contentId);
 	<T extends Answer> List<T> findByContentId(String contentId, Class<T> type, int start, int limit);
 	List<Answer> findByUserRoomId(UserAuthentication user, String roomId);
-	int countByRoomShortId(String roomShortId);
+	int countByRoomId(String roomId);
 	int deleteByContentId(String contentId);
 	int countByRoomIdOnlyLectureVariant(String roomId);
 	int countByRoomIdOnlyPreparationVariant(String roomId);
diff --git a/src/main/java/de/thm/arsnova/persistance/RoomRepository.java b/src/main/java/de/thm/arsnova/persistance/RoomRepository.java
index c1defdf988cb11d2b7b2186eb4261df63a001149..2822560482e1041a857cd39b0ac4e499e5da02c8 100644
--- a/src/main/java/de/thm/arsnova/persistance/RoomRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/RoomRepository.java
@@ -39,6 +39,6 @@ public interface RoomRepository extends CrudRepository<Room, String> {
 	List<Room> findInfosForPublicPoolByOwner(UserAuthentication owner);
 	List<Room> findRoomsByCourses(List<Course> courses);
 	Room importRoom(UserAuthentication user, ImportExportContainer importRoom);
-	ImportExportContainer exportRoom(String shortId, Boolean withAnswer, Boolean withFeedbackQuestions);
+	ImportExportContainer exportRoom(String id, Boolean withAnswer, Boolean withFeedbackQuestions);
 	LoggedIn registerAsOnlineUser(UserAuthentication user, Room room);
 }
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java
index b3e52494230207b77abb8e635cb66b33fd8cbcb2..cd2902c420a0a1b6b7a5be0ad9af3942d1fb131c 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbAnswerRepository.java
@@ -150,8 +150,8 @@ public class CouchDbAnswerRepository extends CouchDbCrudRepository<Answer> imple
 	}
 
 	@Override
-	public int countByRoomShortId(final String roomShortId) {
-		final ViewResult result = db.queryView(createQuery("by_roomid_variant").key(roomShortId));
+	public int countByRoomId(final String roomId) {
+		final ViewResult result = db.queryView(createQuery("by_roomid_variant").key(roomId));
 
 		return result.isEmpty() ? 0 : result.getRows().get(0).getValueAsInt();
 	}
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java
index 1578d7706a9cb214c5100b8e5a8c2e6b4efe31f1..84685b18f84e117dc98467ee990e9ac7030e02b3 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbRoomRepository.java
@@ -60,7 +60,6 @@ public class CouchDbRoomRepository extends CouchDbCrudRepository<Room> implement
 	}
 
 	@Override
-	@Cacheable("rooms")
 	public Room findByShortId(final String shortId) {
 		final List<Room> roomList = queryView("by_shortid", shortId);
 
@@ -195,7 +194,7 @@ public class CouchDbRoomRepository extends CouchDbCrudRepository<Room> implement
 	/* TODO: Move to service layer. */
 	@Override
 	public ImportExportContainer exportRoom(
-			final String shortId,
+			final String id,
 			final Boolean withAnswers,
 			final Boolean withFeedbackQuestions) {
 		/* FIXME: not yet migrated - move to service layer */
diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
index cbe620a40fdc00884fab8cbaa6b5c0468e01ab4f..0d47d923717c837a59819cca9db722d3bba0e813 100644
--- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
+++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
@@ -100,7 +100,7 @@ public class ApplicationPermissionEvaluator implements PermissionEvaluator {
 				targetUserProfile.setId(targetId.toString());
 				return hasUserProfilePermission(userId, targetUserProfile, permission.toString());
 			case "room":
-				final Room targetRoom = roomRepository.findByShortId(targetId.toString());
+				final Room targetRoom = roomRepository.findOne(targetId.toString());
 				return targetRoom != null && hasRoomPermission(userId, targetRoom, permission.toString());
 			case "content":
 				final Content targetContent = contentRepository.findOne(targetId.toString());
diff --git a/src/main/java/de/thm/arsnova/services/CommentService.java b/src/main/java/de/thm/arsnova/services/CommentService.java
index 713a912ccceb939fa1d9658e4b1ee898fc729a73..0720538f6df26caae94d0c7af8e8ac56ebd6b25a 100644
--- a/src/main/java/de/thm/arsnova/services/CommentService.java
+++ b/src/main/java/de/thm/arsnova/services/CommentService.java
@@ -9,15 +9,15 @@ import java.util.List;
 public interface CommentService extends EntityService<Comment> {
 	boolean save(Comment comment);
 
-	int count(String roomShortId);
+	int count(String roomId);
 
-	CommentReadingCount countRead(String roomShortId, String username);
+	CommentReadingCount countRead(String roomId, String username);
 
-	List<Comment> getByRoomShortId(String roomShortId, int offset, int limit);
+	List<Comment> getByRoomId(String roomId, int offset, int limit);
 
 	Comment getAndMarkRead(String commentId) throws IOException;
 
 	void delete(String commentId);
 
-	void deleteByRoomShortId(String roomShortId);
+	void deleteByRoomId(String roomId);
 }
diff --git a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
index 59f0891252726099b6370b6e3673da00a882a50b..3fc6522ae4e1889c1871ed883dd3743ab0daf05f 100644
--- a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
@@ -82,15 +82,15 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem
 		}
 		commentRepository.delete(comment);
 
-		final Room room = roomRepository.findByShortId(comment.getRoomId());
+		final Room room = roomRepository.findOne(comment.getRoomId());
 		final DeleteCommentEvent event = new DeleteCommentEvent(this, room, comment);
 		this.publisher.publishEvent(event);
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void deleteByRoomShortId(final String roomShortId) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public void deleteByRoomId(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		if (room == null) {
 			throw new UnauthorizedException();
 		}
@@ -104,33 +104,29 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int count(final String roomShortId) {
-		return commentRepository.countByRoomId(getRoom(roomShortId).getId());
+	public int count(final String roomId) {
+		return commentRepository.countByRoomId(roomId);
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public CommentReadingCount countRead(final String roomShortId, String username) {
-		final Room room = roomRepository.findByShortId(roomShortId);
-		if (room == null) {
-			throw new NotFoundException();
-		}
+	public CommentReadingCount countRead(final String roomId, String username) {
 		if (username == null) {
-			return commentRepository.countReadingByRoomId(room.getId());
+			return commentRepository.countReadingByRoomId(roomId);
 		} else {
 			UserAuthentication currentUser = userService.getCurrentUser();
 			if (!currentUser.getUsername().equals(username)) {
 				throw new ForbiddenException();
 			}
 
-			return commentRepository.countReadingByRoomIdAndUser(room.getId(), currentUser);
+			return commentRepository.countReadingByRoomIdAndUser(roomId, currentUser);
 		}
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public List<Comment> getByRoomShortId(final String roomShortId, final int offset, final int limit) {
-		final Room room = this.getRoom(roomShortId);
+	public List<Comment> getByRoomId(final String roomId, final int offset, final int limit) {
+		final Room room = roomRepository.findOne(roomId);
 		final UserAuthentication user = getCurrentUser();
 		if (room.getOwnerId().equals(user.getId())) {
 			return commentRepository.findByRoomId(room.getId(), offset, limit);
@@ -160,12 +156,4 @@ public class CommentServiceImpl extends DefaultEntityServiceImpl<Comment> implem
 		}
 		return user;
 	}
-
-	private Room getRoom(final String shortId) {
-		final Room room = roomRepository.findByShortId(shortId);
-		if (room == null) {
-			throw new NotFoundException();
-		}
-		return room;
-	}
 }
diff --git a/src/main/java/de/thm/arsnova/services/ContentService.java b/src/main/java/de/thm/arsnova/services/ContentService.java
index eb75d3f5bdd47e5ece1f0cae19a4fd3aa6944bb9..066fbe87adcdf8744a51f475c59ca04c5d51d693 100644
--- a/src/main/java/de/thm/arsnova/services/ContentService.java
+++ b/src/main/java/de/thm/arsnova/services/ContentService.java
@@ -34,13 +34,13 @@ public interface ContentService extends EntityService<Content> {
 
 	Content get(String id);
 
-	List<Content> getByRoomShortId(String roomShortId);
+	List<Content> getByRoomId(String roomId);
 
-	int countByRoomShortId(String roomShortId);
+	int countByRoomId(String roomId);
 
 	void delete(String questionId);
 
-	List<String> getUnAnsweredContentIds(String roomShortId);
+	List<String> getUnAnsweredContentIds(String roomId);
 
 	Answer getMyAnswer(String contentId);
 
@@ -64,9 +64,9 @@ public interface ContentService extends EntityService<Content> {
 
 	List<TextAnswer> getTextAnswersByContentId(String contentId, int offset, int limit);
 
-	List<Answer> getMyAnswersByRoomShortId(String roomShortId);
+	List<Answer> getMyAnswersByRoomId(String roomId);
 
-	int countTotalAnswersByRoomShortId(String roomShortId);
+	int countTotalAnswersByRoomId(String roomId);
 
 	int countTotalAnswersByContentId(String contentId);
 
@@ -82,61 +82,61 @@ public interface ContentService extends EntityService<Content> {
 
 	void deleteAnswer(String contentId, String answerId);
 
-	List<Content> getLectureContents(String roomShortId);
+	List<Content> getLectureContents(String roomId);
 
-	List<Content> getFlashcards(String roomShortId);
+	List<Content> getFlashcards(String roomId);
 
-	List<Content> getPreparationContents(String roomShortId);
+	List<Content> getPreparationContents(String roomId);
 
-	int countLectureContents(String roomShortId);
+	int countLectureContents(String roomId);
 
-	int countFlashcards(String roomShortId);
+	int countFlashcards(String roomId);
 
-	int countPreparationContents(String roomShortId);
+	int countPreparationContents(String roomId);
 
 	Map<String, Object> countAnswersAndAbstentionsInternal(String contentId);
 
-	int countLectureContentAnswers(String roomShortId);
+	int countLectureContentAnswers(String roomId);
 
-	int countLectureQuestionAnswersInternal(String roomShortId);
+	int countLectureQuestionAnswersInternal(String roomId);
 
-	int countPreparationContentAnswers(String roomShortId);
+	int countPreparationContentAnswers(String roomId);
 
-	int countPreparationQuestionAnswersInternal(String roomShortId);
+	int countPreparationQuestionAnswersInternal(String roomId);
 
-	int countFlashcardsForUserInternal(String roomShortId);
+	int countFlashcardsForUserInternal(String roomId);
 
-	void deleteAllContents(String roomShortId);
+	void deleteAllContents(String roomId);
 
-	void deleteLectureContents(String roomShortId);
+	void deleteLectureContents(String roomId);
 
-	void deletePreparationContents(String roomShortId);
+	void deletePreparationContents(String roomId);
 
-	void deleteFlashcards(String roomShortId);
+	void deleteFlashcards(String roomId);
 
-	List<String> getUnAnsweredLectureContentIds(String roomShortId);
+	List<String> getUnAnsweredLectureContentIds(String roomId);
 
-	List<String> getUnAnsweredLectureContentIds(String roomShortId, UserAuthentication user);
+	List<String> getUnAnsweredLectureContentIds(String roomId, UserAuthentication user);
 
-	List<String> getUnAnsweredPreparationContentIds(String roomShortId);
+	List<String> getUnAnsweredPreparationContentIds(String roomId);
 
-	List<String> getUnAnsweredPreparationContentIds(String roomShortId, UserAuthentication user);
+	List<String> getUnAnsweredPreparationContentIds(String roomId, UserAuthentication user);
 
-	void publishAll(String roomShortId, boolean publish);
+	void publishAll(String roomId, boolean publish);
 
-	void publishContents(String roomShortId, boolean publish, List<Content> contents);
+	void publishContents(String roomId, boolean publish, List<Content> contents);
 
-	void deleteAllContentsAnswers(String roomShortId);
+	void deleteAllContentsAnswers(String roomId);
 
-	void deleteAllPreparationAnswers(String roomShortId);
+	void deleteAllPreparationAnswers(String roomId);
 
-	void deleteAllLectureAnswers(String roomShortId);
+	void deleteAllLectureAnswers(String roomId);
 
 	int countTotalAbstentionsByContentId(String contentId);
 
 	void setVotingAdmission(String contentId, boolean disableVoting);
 
-	void setVotingAdmissions(String roomShortId, boolean disableVoting, List<Content> contents);
+	void setVotingAdmissions(String roomId, boolean disableVoting, List<Content> contents);
 
-	void setVotingAdmissionForAllContents(String roomShortId, boolean disableVoting);
+	void setVotingAdmissionForAllContents(String roomId, boolean disableVoting);
 }
diff --git a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
index 7d679f2e77701754631fea07e5e01012ef760327..4bf4beefc7cceebb5900602ef4055b6a8580cd3d 100644
--- a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
@@ -201,26 +201,24 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	//@Cacheable("contentlists")
-	public List<Content> getByRoomShortId(final String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public List<Content> getByRoomId(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		final UserAuthentication user = userService.getCurrentUser();
 		if (room.getOwnerId().equals(user.getId())) {
-			return contentRepository.findByRoomIdForSpeaker(room.getId());
+			return contentRepository.findByRoomIdForSpeaker(roomId);
 		} else {
-			return contentRepository.findByRoomIdForUsers(room.getId());
+			return contentRepository.findByRoomIdForUsers(roomId);
 		}
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countByRoomShortId(final String roomShortId) {
-		final Room room = roomRepository.findByShortId(roomShortId);
-		return contentRepository.countByRoomId(room.getId());
+	public int countByRoomId(final String roomId) {
+		return contentRepository.countByRoomId(roomId);
 	}
 
-	/* FIXME: #content.getShortId() cannot be checked since keyword is no longer set for content. */
 	@Override
-	@PreAuthorize("hasPermission(#content.getShortId(), 'room', 'owner')")
+	@PreAuthorize("hasPermission(#content.roomId, 'room', 'owner')")
 	public Content save(final Content content) {
 		final Room room = roomRepository.findOne(content.getRoomId());
 		content.setTimestamp(new Date());
@@ -310,29 +308,29 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void deleteAllContents(final String roomShortId) {
-		final Room room = getRoomWithAuthCheck(roomShortId);
+	public void deleteAllContents(final String roomId) {
+		final Room room = getRoomWithAuthCheck(roomId);
 		deleteBySessionAndVariant(room, "all");
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void deleteLectureContents(final String roomShortId) {
-		final Room room = getRoomWithAuthCheck(roomShortId);
+	public void deleteLectureContents(final String roomId) {
+		final Room room = getRoomWithAuthCheck(roomId);
 		deleteBySessionAndVariant(room, "lecture");
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void deletePreparationContents(final String roomShortId) {
-		final Room room = getRoomWithAuthCheck(roomShortId);
+	public void deletePreparationContents(final String roomId) {
+		final Room room = getRoomWithAuthCheck(roomId);
 		deleteBySessionAndVariant(room, "preparation");
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void deleteFlashcards(final String roomShortId) {
-		final Room room = getRoomWithAuthCheck(roomShortId);
+	public void deleteFlashcards(final String roomId) {
+		final Room room = getRoomWithAuthCheck(roomId);
 		deleteBySessionAndVariant(room, "flashcard");
 	}
 
@@ -361,13 +359,13 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	@Caching(evict = { @CacheEvict(value = "contents", allEntries = true),
-			@CacheEvict(value = "contentlists", key = "#roomShortId"),
-			@CacheEvict(value = "lecturecontentlists", key = "#roomShortId"),
-			@CacheEvict(value = "preparationcontentlists", key = "#roomShortId"),
-			@CacheEvict(value = "flashcardcontentlists", key = "#roomShortId") })
-	public void setVotingAdmissions(final String roomShortId, final boolean disableVoting, List<Content> contents) {
+			@CacheEvict(value = "contentlists", key = "#roomId"),
+			@CacheEvict(value = "lecturecontentlists", key = "#roomId"),
+			@CacheEvict(value = "preparationcontentlists", key = "#roomId"),
+			@CacheEvict(value = "flashcardcontentlists", key = "#roomId") })
+	public void setVotingAdmissions(final String roomId, final boolean disableVoting, List<Content> contents) {
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (!room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
@@ -387,9 +385,9 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void setVotingAdmissionForAllContents(final String roomShortId, final boolean disableVoting) {
+	public void setVotingAdmissionForAllContents(final String roomId, final boolean disableVoting) {
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (!room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
@@ -397,9 +395,9 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 		setVotingAdmissionForAllContents(room.getId(), disableVoting);
 	}
 
-	private Room getRoomWithAuthCheck(final String shortId) {
+	private Room getRoomWithAuthCheck(final String roomId) {
 		final UserAuthentication user = userService.getCurrentUser();
-		final Room room = roomRepository.findByShortId(shortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (user == null || room == null || !room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
@@ -418,10 +416,9 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public List<String> getUnAnsweredContentIds(final String roomShortId) {
+	public List<String> getUnAnsweredContentIds(final String roomId) {
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
-		return contentRepository.findUnansweredIdsByRoomIdAndUser(room.getId(), user);
+		return contentRepository.findUnansweredIdsByRoomIdAndUser(roomId, user);
 	}
 
 	private UserAuthentication getCurrentUser() {
@@ -585,17 +582,16 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public List<Answer> getMyAnswersByRoomShortId(final String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public List<Answer> getMyAnswersByRoomId(final String roomId) {
 		// Load contents first because we are only interested in answers of the latest piRound.
-		final List<Content> contents = getByRoomShortId(roomShortId);
+		final List<Content> contents = getByRoomId(roomId);
 		final Map<String, Content> contentIdToContent = new HashMap<>();
 		for (final Content content : contents) {
 			contentIdToContent.put(content.getId(), content);
 		}
 
 		/* filter answers by active piRound per content */
-		final List<Answer> answers = answerRepository.findByUserRoomId(userService.getCurrentUser(), room.getId());
+		final List<Answer> answers = answerRepository.findByUserRoomId(userService.getCurrentUser(), roomId);
 		final List<Answer> filteredAnswers = new ArrayList<>();
 		for (final Answer answer : answers) {
 			final Content content = contentIdToContent.get(answer.getContentId());
@@ -619,8 +615,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countTotalAnswersByRoomShortId(final String roomShortId) {
-		return answerRepository.countByRoomShortId(roomShortId);
+	public int countTotalAnswersByRoomId(final String roomId) {
+		return answerRepository.countByRoomId(roomId);
 	}
 
 	@Override
@@ -714,8 +710,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	//@Cacheable("lecturecontentlists")
-	public List<Content> getLectureContents(final String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public List<Content> getLectureContents(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		final UserAuthentication user = userService.getCurrentUser();
 		if (room.getOwnerId().equals(user.getId())) {
 			return contentRepository.findByRoomIdOnlyLectureVariant(room.getId());
@@ -728,8 +724,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	//@Cacheable("flashcardcontentlists")
-	public List<Content> getFlashcards(final String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public List<Content> getFlashcards(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		final UserAuthentication user = userService.getCurrentUser();
 		if (room.getOwnerId().equals(user.getId())) {
 			return contentRepository.findByRoomIdOnlyFlashcardVariant(room.getId());
@@ -742,8 +738,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	//@Cacheable("preparationcontentlists")
-	public List<Content> getPreparationContents(final String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public List<Content> getPreparationContents(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		final UserAuthentication user = userService.getCurrentUser();
 		if (room.getOwnerId().equals(user.getId())) {
 			return contentRepository.findByRoomIdOnlyPreparationVariant(room.getId());
@@ -752,36 +748,28 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 		}
 	}
 
-	private Room getRoom(final String roomShortId) {
-		final Room room = roomRepository.findByShortId(roomShortId);
-		if (room == null) {
-			throw new NotFoundException();
-		}
-		return room;
-	}
-
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countLectureContents(final String roomShortId) {
-		return contentRepository.countLectureVariantByRoomId(getRoom(roomShortId).getId());
+	public int countLectureContents(final String roomId) {
+		return contentRepository.countLectureVariantByRoomId(roomRepository.findOne(roomId).getId());
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countFlashcards(final String roomShortId) {
-		return contentRepository.countFlashcardVariantRoomId(getRoom(roomShortId).getId());
+	public int countFlashcards(final String roomId) {
+		return contentRepository.countFlashcardVariantRoomId(roomRepository.findOne(roomId).getId());
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countPreparationContents(final String roomShortId) {
-		return contentRepository.countPreparationVariantByRoomId(getRoom(roomShortId).getId());
+	public int countPreparationContents(final String roomId) {
+		return contentRepository.countPreparationVariantByRoomId(roomRepository.findOne(roomId).getId());
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countLectureContentAnswers(final String roomShortId) {
-		return this.countLectureQuestionAnswersInternal(roomShortId);
+	public int countLectureContentAnswers(final String roomId) {
+		return this.countLectureQuestionAnswersInternal(roomId);
 	}
 
 	/*
@@ -789,8 +777,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	 * TODO: Find a better way of doing this...
 	 */
 	@Override
-	public int countLectureQuestionAnswersInternal(final String roomShortId) {
-		return answerRepository.countByRoomIdOnlyLectureVariant(getRoom(roomShortId).getId());
+	public int countLectureQuestionAnswersInternal(final String roomId) {
+		return answerRepository.countByRoomIdOnlyLectureVariant(roomRepository.findOne(roomId).getId());
 	}
 
 	@Override
@@ -811,8 +799,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public int countPreparationContentAnswers(final String roomShortId) {
-		return this.countPreparationQuestionAnswersInternal(roomShortId);
+	public int countPreparationContentAnswers(final String roomId) {
+		return this.countPreparationQuestionAnswersInternal(roomId);
 	}
 
 	/*
@@ -820,8 +808,8 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	 * TODO: Find a better way of doing this...
 	 */
 	@Override
-	public int countPreparationQuestionAnswersInternal(final String roomShortId) {
-		return answerRepository.countByRoomIdOnlyPreparationVariant(getRoom(roomShortId).getId());
+	public int countPreparationQuestionAnswersInternal(final String roomId) {
+		return answerRepository.countByRoomIdOnlyPreparationVariant(roomRepository.findOne(roomId).getId());
 	}
 
 	/*
@@ -829,59 +817,57 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	 * TODO: Find a better way of doing this...
 	 */
 	@Override
-	public int countFlashcardsForUserInternal(final String roomShortId) {
-		return contentRepository.findByRoomIdOnlyFlashcardVariantAndActive(getRoom(roomShortId).getId()).size();
+	public int countFlashcardsForUserInternal(final String roomId) {
+		return contentRepository.findByRoomIdOnlyFlashcardVariantAndActive(roomId).size();
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public List<String> getUnAnsweredLectureContentIds(final String roomShortId) {
+	public List<String> getUnAnsweredLectureContentIds(final String roomId) {
 		final UserAuthentication user = getCurrentUser();
-		return this.getUnAnsweredLectureContentIds(roomShortId, user);
+		return this.getUnAnsweredLectureContentIds(roomId, user);
 	}
 
 	@Override
-	public List<String> getUnAnsweredLectureContentIds(final String roomShortId, final UserAuthentication user) {
-		final Room room = getRoom(roomShortId);
-		return contentRepository.findUnansweredIdsByRoomIdAndUserOnlyLectureVariant(room.getId(), user);
+	public List<String> getUnAnsweredLectureContentIds(final String roomId, final UserAuthentication user) {
+		return contentRepository.findUnansweredIdsByRoomIdAndUserOnlyLectureVariant(roomId, user);
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public List<String> getUnAnsweredPreparationContentIds(final String roomShortId) {
+	public List<String> getUnAnsweredPreparationContentIds(final String roomId) {
 		final UserAuthentication user = getCurrentUser();
-		return this.getUnAnsweredPreparationContentIds(roomShortId, user);
+		return this.getUnAnsweredPreparationContentIds(roomId, user);
 	}
 
 	@Override
-	public List<String> getUnAnsweredPreparationContentIds(final String roomShortId, final UserAuthentication user) {
-		final Room room = getRoom(roomShortId);
-		return contentRepository.findUnansweredIdsByRoomIdAndUserOnlyPreparationVariant(room.getId(), user);
+	public List<String> getUnAnsweredPreparationContentIds(final String roomId, final UserAuthentication user) {
+		return contentRepository.findUnansweredIdsByRoomIdAndUserOnlyPreparationVariant(roomId, user);
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
-	public void publishAll(final String roomShortId, final boolean publish) {
+	public void publishAll(final String roomId, final boolean publish) {
 		/* TODO: resolve redundancies */
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (!room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
 		final List<Content> contents = contentRepository.findByRoomId(room.getId());
-		publishContents(roomShortId, publish, contents);
+		publishContents(roomId, publish, contents);
 	}
 
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	@Caching(evict = { @CacheEvict(value = "contents", allEntries = true),
-			@CacheEvict(value = "contentlists", key = "#roomShortId"),
-			@CacheEvict(value = "lecturecontentlists", key = "#roomShortId"),
-			@CacheEvict(value = "preparationcontentlists", key = "#roomShortId"),
-			@CacheEvict(value = "flashcardcontentlists", key = "#roomShortId") })
-	public void publishContents(final String roomShortId, final boolean publish, List<Content> contents) {
+			@CacheEvict(value = "contentlists", key = "#roomId"),
+			@CacheEvict(value = "lecturecontentlists", key = "#roomId"),
+			@CacheEvict(value = "preparationcontentlists", key = "#roomId"),
+			@CacheEvict(value = "flashcardcontentlists", key = "#roomId") })
+	public void publishContents(final String roomId, final boolean publish, List<Content> contents) {
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (!room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
@@ -901,9 +887,9 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 	@Override
 	@PreAuthorize("isAuthenticated()")
 	@CacheEvict(value = "answerlists", allEntries = true)
-	public void deleteAllContentsAnswers(final String roomShortId) {
+	public void deleteAllContentsAnswers(final String roomId) {
 		final UserAuthentication user = getCurrentUser();
-		final Room room = getRoom(roomShortId);
+		final Room room = roomRepository.findOne(roomId);
 		if (!room.getOwnerId().equals(user.getId())) {
 			throw new UnauthorizedException();
 		}
@@ -918,10 +904,10 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	/* TODO: Only evict cache entry for the answer's content. This requires some refactoring. */
 	@Override
-	@PreAuthorize("hasPermission(#roomShortId, 'room', 'owner')")
+	@PreAuthorize("hasPermission(#roomId, 'room', 'owner')")
 	@CacheEvict(value = "answerlists", allEntries = true)
-	public void deleteAllPreparationAnswers(String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public void deleteAllPreparationAnswers(String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 
 		final List<Content> contents = contentRepository.findByRoomIdAndVariantAndActive(room.getId(), "preparation");
 		resetContentsRoundState(room.getId(), contents);
@@ -933,10 +919,10 @@ public class ContentServiceImpl extends DefaultEntityServiceImpl<Content> implem
 
 	/* TODO: Only evict cache entry for the answer's content. This requires some refactoring. */
 	@Override
-	@PreAuthorize("hasPermission(#roomShortId, 'room', 'owner')")
+	@PreAuthorize("hasPermission(#roomId, 'room', 'owner')")
 	@CacheEvict(value = "answerlists", allEntries = true)
-	public void deleteAllLectureAnswers(String roomShortId) {
-		final Room room = getRoom(roomShortId);
+	public void deleteAllLectureAnswers(String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 
 		final List<Content> contents = contentRepository.findByRoomIdAndVariantAndActive(room.getId(), "lecture");
 		resetContentsRoundState(room.getId(), contents);
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackService.java b/src/main/java/de/thm/arsnova/services/FeedbackService.java
index 9e0de22720ab60e9868131f569421ad5050eadae..5c4b9518cbd428961ad7ba58303453d4e3612df8 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackService.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackService.java
@@ -26,17 +26,17 @@ import de.thm.arsnova.entities.UserAuthentication;
 public interface FeedbackService {
 	void cleanFeedbackVotes();
 
-	void cleanFeedbackVotesByRoomShortId(String roomShortId, int cleanupFeedbackDelayInMins);
+	void cleanFeedbackVotesByRoomId(String roomId, int cleanupFeedbackDelayInMins);
 
-	Feedback getByRoomShortId(String roomShortId);
+	Feedback getByRoomId(String roomId);
 
-	int countFeedbackByRoomShortId(String roomShortId);
+	int countFeedbackByRoomId(String roomId);
 
-	double calculateAverageFeedback(String roomShortId);
+	double calculateAverageFeedback(String roomId);
 
-	long calculateRoundedAverageFeedback(String roomShortId);
+	long calculateRoundedAverageFeedback(String roomId);
 
-	boolean save(String roomShortId, int value, UserAuthentication user);
+	boolean save(String roomId, int value, UserAuthentication user);
 
-	Integer getByRoomShortIdAndUser(String roomShortId, UserAuthentication user);
+	Integer getByRoomIdAndUser(String roomId, UserAuthentication user);
 }
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
index d3b59d538774578a0b10aa6f0bd4175b0ed96a06..e7eae27f78683bec0de34b1c06913cd160d32294 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
@@ -101,8 +101,8 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub
 	}
 
 	@Override
-	public void cleanFeedbackVotesByRoomShortId(final String roomShortId, final int cleanupFeedbackDelayInMins) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public void cleanFeedbackVotesByRoomId(final String roomId, final int cleanupFeedbackDelayInMins) {
+		final Room room = roomRepository.findOne(roomId);
 		List<UserAuthentication> affectedUsers = feedbackStorage.cleanVotesByRoom(room, cleanupFeedbackDelayInMins);
 		Set<Room> sessionSet = new HashSet<>();
 		sessionSet.add(room);
@@ -116,8 +116,8 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub
 	}
 
 	@Override
-	public Feedback getByRoomShortId(final String roomShortId) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public Feedback getByRoomId(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		if (room == null) {
 			throw new NotFoundException();
 		}
@@ -125,16 +125,16 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub
 	}
 
 	@Override
-	public int countFeedbackByRoomShortId(final String roomShortId) {
-		final Feedback feedback = this.getByRoomShortId(roomShortId);
+	public int countFeedbackByRoomId(final String roomId) {
+		final Feedback feedback = this.getByRoomId(roomId);
 		final List<Integer> values = feedback.getValues();
 		return values.get(Feedback.FEEDBACK_FASTER) + values.get(Feedback.FEEDBACK_OK)
 				+ values.get(Feedback.FEEDBACK_SLOWER) + values.get(Feedback.FEEDBACK_AWAY);
 	}
 
 	@Override
-	public double calculateAverageFeedback(final String roomShortId) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public double calculateAverageFeedback(final String roomId) {
+		final Room room = roomRepository.findOne(roomId);
 		if (room == null) {
 			throw new NotFoundException();
 		}
@@ -152,13 +152,13 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub
 	}
 
 	@Override
-	public long calculateRoundedAverageFeedback(final String roomShortId) {
-		return Math.round(calculateAverageFeedback(roomShortId));
+	public long calculateRoundedAverageFeedback(final String roomId) {
+		return Math.round(calculateAverageFeedback(roomId));
 	}
 
 	@Override
-	public boolean save(final String roomShortId, final int value, final UserAuthentication user) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public boolean save(final String roomId, final int value, final UserAuthentication user) {
+		final Room room = roomRepository.findOne(roomId);
 		if (room == null) {
 			throw new NotFoundException();
 		}
@@ -169,8 +169,8 @@ public class FeedbackServiceImpl implements FeedbackService, ApplicationEventPub
 	}
 
 	@Override
-	public Integer getByRoomShortIdAndUser(final String roomShortId, final UserAuthentication user) {
-		final Room room = roomRepository.findByShortId(roomShortId);
+	public Integer getByRoomIdAndUser(final String roomId, final UserAuthentication user) {
+		final Room room = roomRepository.findOne(roomId);
 		if (room == null) {
 			throw new NotFoundException();
 		}
diff --git a/src/main/java/de/thm/arsnova/services/MotdService.java b/src/main/java/de/thm/arsnova/services/MotdService.java
index 67075b5b7ca1ecf1ffeb3b755475a1eb4e73a103..25ee3d3987b4062efe057a277a259fe74bdc28b6 100644
--- a/src/main/java/de/thm/arsnova/services/MotdService.java
+++ b/src/main/java/de/thm/arsnova/services/MotdService.java
@@ -48,5 +48,5 @@ public interface MotdService extends EntityService<Motd> {
 
 	Motd update(Motd motd);
 
-	Motd update(final String roomShortId, Motd motd);
+	Motd update(final String roomId, Motd motd);
 }
diff --git a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
index 0a1e52285edf3d3cb65d48f5b0531f6d90b5d3a8..9f1915f4ea509f4b017d5a387caefb008d380563 100644
--- a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
@@ -114,7 +114,7 @@ public class MotdServiceImpl extends DefaultEntityServiceImpl<Motd> implements M
 	@Override
 	@PreAuthorize("hasPermission(#roomId, 'room', 'owner')")
 	public Motd save(final String roomId, final Motd motd) {
-		Room room = roomService.getByShortId(roomId);
+		Room room = roomService.get(roomId);
 		motd.setRoomId(room.getId());
 
 		return createOrUpdateMotd(motd);
@@ -127,8 +127,8 @@ public class MotdServiceImpl extends DefaultEntityServiceImpl<Motd> implements M
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#roomShortId, 'room', 'owner')")
-	public Motd update(final String roomShortId, final Motd motd) {
+	@PreAuthorize("hasPermission(#roomId, 'room', 'owner')")
+	public Motd update(final String roomId, final Motd motd) {
 		return createOrUpdateMotd(motd);
 	}
 
diff --git a/src/main/java/de/thm/arsnova/services/RoomService.java b/src/main/java/de/thm/arsnova/services/RoomService.java
index e0dd3de7c4adb4956b793e5524c41f8607df5de7..2b537cb44d780ccd940b63cbf74e6dcbd60c95db 100644
--- a/src/main/java/de/thm/arsnova/services/RoomService.java
+++ b/src/main/java/de/thm/arsnova/services/RoomService.java
@@ -30,11 +30,13 @@ import java.util.UUID;
  * The functionality the session service should provide.
  */
 public interface RoomService extends EntityService<Room> {
+	String getIdByShortId(String shortId);
+
 	Room getByShortId(String shortId);
 
-	Room getForAdmin(final String shortId);
+	Room getForAdmin(final String id);
 
-	Room getInternal(String shortId, UserAuthentication user);
+	Room getInternal(String id, UserAuthentication user);
 
 	Room save(Room session);
 
@@ -52,23 +54,23 @@ public interface RoomService extends EntityService<Room> {
 
 	int countRoomsByCourses(List<Course> courses);
 
-	int activeUsers(String shortId);
+	int activeUsers(String id);
 
-	Room setActive(String shortId, Boolean lock);
+	Room setActive(String id, Boolean lock);
 
-	Room join(String shortId, UUID socketId);
+	Room join(String id, UUID socketId);
 
-	Room update(String shortId, Room room);
+	Room update(String id, Room room);
 
-	Room updateCreator(String shortId, String newCreator);
+	Room updateCreator(String id, String newCreator);
 
 	Room updateInternal(Room room, UserAuthentication user);
 
 	int[] deleteCascading(Room room);
 
-	ScoreStatistics getLearningProgress(String shortId, String type, String questionVariant);
+	ScoreStatistics getLearningProgress(String id, String type, String questionVariant);
 
-	ScoreStatistics getMyLearningProgress(String shortId, String type, String questionVariant);
+	ScoreStatistics getMyLearningProgress(String id, String type, String questionVariant);
 
 	List<Room> getMyRoomsInfo(int offset, int limit);
 
@@ -80,17 +82,17 @@ public interface RoomService extends EntityService<Room> {
 
 	Room importRooms(ImportExportContainer importExportRoom);
 
-	ImportExportContainer exportRoom(String shortId, Boolean withAnswerStatistics, Boolean withFeedbackQuestions);
+	ImportExportContainer exportRoom(String id, Boolean withAnswerStatistics, Boolean withFeedbackQuestions);
 
-	Room copyRoomToPublicPool(String shortId, ImportExportContainer.PublicPool pp);
+	Room copyRoomToPublicPool(String id, ImportExportContainer.PublicPool pp);
 
-	Room.Settings getFeatures(String shortId);
+	Room.Settings getFeatures(String id);
 
-	Room.Settings updateFeatures(String shortId, Room.Settings settings);
+	Room.Settings updateFeatures(String id, Room.Settings settings);
 
-	boolean lockFeedbackInput(String shortId, Boolean lock);
+	boolean lockFeedbackInput(String id, Boolean lock);
 
-	boolean flipFlashcards(String shortId, Boolean flip);
+	boolean flipFlashcards(String id, Boolean flip);
 
 	void deleteInactiveRooms();
 }
diff --git a/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java b/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java
index 4c5155fc019eed19510dad2917c4c4eda504201f..355d62a0d0e01436a02980cb31a0b5ccbd24b37d 100644
--- a/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/RoomServiceImpl.java
@@ -46,6 +46,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.CachePut;
+import org.springframework.cache.annotation.Cacheable;
 import org.springframework.cache.annotation.Caching;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.context.ApplicationEventPublisherAware;
@@ -168,10 +169,10 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	public Room join(final String shortId, final UUID socketId) {
+	public Room join(final String id, final UUID socketId) {
 		/* Socket.IO solution */
 
-		Room room = null != shortId ? roomRepository.findByShortId(shortId) : null;
+		Room room = null != id ? roomRepository.findOne(id) : null;
 
 		if (null == room) {
 			userService.removeUserFromRoomBySocketId(socketId);
@@ -179,7 +180,7 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 		}
 		final UserAuthentication user = userService.getUserToSocketId(socketId);
 
-		userService.addUserToRoomBySocketId(socketId, shortId);
+		userService.addUserToRoomBySocketId(socketId, id);
 
 		roomRepository.registerAsOnlineUser(user, room);
 
@@ -199,12 +200,23 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	@PreAuthorize("isAuthenticated()")
 	public Room getByShortId(final String shortId) {
 		final UserAuthentication user = userService.getCurrentUser();
-		return this.getInternal(shortId, user);
+		return this.getInternal(getIdByShortId(shortId), user);
 	}
 
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public Room getForAdmin(final String shortId) {
-		return roomRepository.findByShortId(shortId);
+	@Override
+	@Cacheable("room.id-by-shortid")
+	public String getIdByShortId(final String shortId) {
+		Room room = roomRepository.findByShortId(shortId);
+		if (room == null) {
+			throw new NotFoundException("No Room exists for short ID");
+		}
+
+		return room.getId();
+	}
+
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public Room getForAdmin(final String id) {
+		return roomRepository.findOne(id);
 	}
 
 	/*
@@ -212,8 +224,8 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	 * TODO: Find a better way of doing this...
 	 */
 	@Override
-	public Room getInternal(final String shortId, final UserAuthentication user) {
-		final Room room = roomRepository.findByShortId(shortId);
+	public Room getInternal(final String id, final UserAuthentication user) {
+		final Room room = roomRepository.findOne(id);
 		if (room == null) {
 			throw new NotFoundException();
 		}
@@ -295,7 +307,7 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 
 	@Override
 	@PreAuthorize("hasPermission(#room, 'create')")
-	@Caching(evict = @CacheEvict(cacheNames = "rooms", key = "#result.shortId"))
+	@Caching(evict = @CacheEvict(cacheNames = "rooms", key = "#result.id"))
 	public Room save(final Room room) {
 		/* FIXME: migrate LMS course support
 		if (connectorClient != null && room.getCourseId() != null) {
@@ -325,7 +337,7 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	@Override
 	public boolean isShortIdAvailable(final String shortId) {
 		try {
-			return getByShortId(shortId) == null;
+			return getIdByShortId(shortId) == null;
 		} catch (final NotFoundException e) {
 			return true;
 		}
@@ -354,14 +366,14 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	public int activeUsers(final String shortId) {
-		return userService.getUsersByRoomShortId(shortId).size();
+	public int activeUsers(final String id) {
+		return userService.getUsersByRoomId(id).size();
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public Room setActive(final String shortId, final Boolean lock) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public Room setActive(final String id, final Boolean lock) {
+		final Room room = roomRepository.findOne(id);
 		room.setClosed(!lock);
 		this.publisher.publishEvent(new StatusRoomEvent(this, room));
 		roomRepository.save(room);
@@ -372,8 +384,8 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	@Override
 	@PreAuthorize("hasPermission(#room.id, 'room', 'owner')")
 	@CachePut(value = "rooms", key = "#room")
-	public Room update(final String shortId, final Room room) {
-		final Room existingRoom = roomRepository.findByShortId(shortId);
+	public Room update(final String id, final Room room) {
+		final Room existingRoom = roomRepository.findOne(id);
 		room.setOwnerId(existingRoom.getOwnerId());
 		handleLogo(room);
 		update(existingRoom, room);
@@ -383,8 +395,8 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 
 	@Override
 	@PreAuthorize("hasPermission('', 'motd', 'admin')")
-	@Caching(evict = { @CacheEvict("rooms"), @CacheEvict(cacheNames = "rooms", key = "#shortId") })
-	public Room updateCreator(String shortId, String newCreator) {
+	@Caching(evict = { @CacheEvict("rooms"), @CacheEvict(cacheNames = "rooms", key = "#id") })
+	public Room updateCreator(String id, String newCreator) {
 		throw new UnsupportedOperationException("No longer implemented.");
 	}
 
@@ -403,7 +415,10 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 
 	@Override
 	@PreAuthorize("hasPermission(#room, 'owner')")
-	@CacheEvict("rooms")
+	@Caching(evict = {
+			@CacheEvict("rooms"),
+			@CacheEvict(value = "room.id-by-shortid", key = "#room.shortId")
+	})
 	public int[] deleteCascading(final Room room) {
 		int[] count = new int[] {0, 0, 0};
 		List<String> contentIds = contentRepository.findIdsByRoomId(room.getId());
@@ -420,17 +435,17 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'read')")
-	public ScoreStatistics getLearningProgress(final String shortId, final String type, final String questionVariant) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'read')")
+	public ScoreStatistics getLearningProgress(final String id, final String type, final String questionVariant) {
+		final Room room = roomRepository.findOne(id);
 		ScoreCalculator scoreCalculator = scoreCalculatorFactory.create(type, questionVariant);
 		return scoreCalculator.getCourseProgress(room);
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'read')")
-	public ScoreStatistics getMyLearningProgress(final String shortId, final String type, final String questionVariant) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'read')")
+	public ScoreStatistics getMyLearningProgress(final String id, final String type, final String questionVariant) {
+		final Room room = roomRepository.findOne(id);
 		final UserAuthentication user = userService.getCurrentUser();
 		ScoreCalculator scoreCalculator = scoreCalculatorFactory.create(type, questionVariant);
 		return scoreCalculator.getMyProgress(room, user);
@@ -448,15 +463,15 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public ImportExportContainer exportRoom(String shortId, Boolean withAnswerStatistics, Boolean withFeedbackQuestions) {
-		return roomRepository.exportRoom(shortId, withAnswerStatistics, withFeedbackQuestions);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public ImportExportContainer exportRoom(String id, Boolean withAnswerStatistics, Boolean withFeedbackQuestions) {
+		return roomRepository.exportRoom(id, withAnswerStatistics, withFeedbackQuestions);
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public Room copyRoomToPublicPool(String shortId, ImportExportContainer.PublicPool pp) {
-		ImportExportContainer temp = roomRepository.exportRoom(shortId, false, false);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public Room copyRoomToPublicPool(String id, ImportExportContainer.PublicPool pp) {
+		ImportExportContainer temp = roomRepository.exportRoom(id, false, false);
 		temp.getSession().setPublicPool(pp);
 		temp.getSession().setSessionType("public_pool");
 		final UserAuthentication user = userService.getCurrentUser();
@@ -469,15 +484,15 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'read')")
-	public Room.Settings getFeatures(String shortId) {
-		return roomRepository.findByShortId(shortId).getSettings();
+	@PreAuthorize("hasPermission(#id, 'room', 'read')")
+	public Room.Settings getFeatures(String id) {
+		return roomRepository.findOne(id).getSettings();
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public Room.Settings updateFeatures(String shortId, Room.Settings settings) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public Room.Settings updateFeatures(String id, Room.Settings settings) {
+		final Room room = roomRepository.findOne(id);
 		final UserAuthentication user = userService.getCurrentUser();
 		room.setSettings(settings);
 		this.publisher.publishEvent(new FeatureChangeEvent(this, room));
@@ -487,12 +502,12 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public boolean lockFeedbackInput(String shortId, Boolean lock) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public boolean lockFeedbackInput(String id, Boolean lock) {
+		final Room room = roomRepository.findOne(id);
 		final UserAuthentication user = userService.getCurrentUser();
 		if (!lock) {
-			feedbackService.cleanFeedbackVotesByRoomShortId(shortId, 0);
+			feedbackService.cleanFeedbackVotesByRoomId(id, 0);
 		}
 
 		room.getSettings().setFeedbackLocked(lock);
@@ -503,9 +518,9 @@ public class RoomServiceImpl extends DefaultEntityServiceImpl<Room> implements R
 	}
 
 	@Override
-	@PreAuthorize("hasPermission(#shortId, 'room', 'owner')")
-	public boolean flipFlashcards(String shortId, Boolean flip) {
-		final Room room = roomRepository.findByShortId(shortId);
+	@PreAuthorize("hasPermission(#id, 'room', 'owner')")
+	public boolean flipFlashcards(String id, Boolean flip) {
+		final Room room = roomRepository.findOne(id);
 		this.publisher.publishEvent(new FlipFlashcardsEvent(this, room));
 
 		return flip;
diff --git a/src/main/java/de/thm/arsnova/services/UserService.java b/src/main/java/de/thm/arsnova/services/UserService.java
index 703b27cbfe880d93b91891c716dc11ec489617ab..6b450534bcf550cd7d20acce4c8560d7e4d70571 100644
--- a/src/main/java/de/thm/arsnova/services/UserService.java
+++ b/src/main/java/de/thm/arsnova/services/UserService.java
@@ -51,13 +51,13 @@ public interface UserService extends EntityService<UserProfile> {
 
 	Set<Map.Entry<UUID, UserAuthentication>> getSocketIdToUser();
 
-	boolean isUserInRoom(UserAuthentication user, String roomShortId);
+	boolean isUserInRoom(UserAuthentication user, String roomId);
 
-	Set<UserAuthentication> getUsersByRoomShortId(String roomShortId);
+	Set<UserAuthentication> getUsersByRoomId(String roomId);
 
-	String getRoomByUserId(String userId);
+	String getRoomIdByUserId(String userId);
 
-	void addUserToRoomBySocketId(UUID socketId, String roomShortId);
+	void addUserToRoomBySocketId(UUID socketId, String roomId);
 
 	void removeUserFromRoomBySocketId(UUID socketId);
 
diff --git a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserServiceImpl.java
index c6b2863321dae8751ac8ab2298471c6fe098309b..b725c8d63498a0cf8095720f6428fa189fc88376 100644
--- a/src/main/java/de/thm/arsnova/services/UserServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/UserServiceImpl.java
@@ -256,20 +256,17 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple
 	}
 
 	@Override
-	public boolean isUserInRoom(final UserAuthentication user, final String roomShortId) {
-		if (roomShortId == null) {
-			return false;
-		}
-		String session = userToRoomId.get(user);
+	public boolean isUserInRoom(final UserAuthentication user, final String expectedRoomId) {
+		String actualRoomId = userToRoomId.get(user);
 
-		return session != null && roomShortId.equals(session);
+		return actualRoomId != null && actualRoomId.equals(expectedRoomId);
 	}
 
 	@Override
-	public Set<UserAuthentication> getUsersByRoomShortId(final String roomShortId) {
+	public Set<UserAuthentication> getUsersByRoomId(final String roomId) {
 		final Set<UserAuthentication> result = new HashSet<>();
 		for (final Entry<UserAuthentication, String> e : userToRoomId.entrySet()) {
-			if (e.getValue().equals(roomShortId)) {
+			if (e.getValue().equals(roomId)) {
 				result.add(e.getKey());
 			}
 		}
@@ -279,9 +276,9 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple
 
 	@Override
 	@Transactional(isolation = Isolation.READ_COMMITTED)
-	public void addUserToRoomBySocketId(final UUID socketId, final String roomShortId) {
+	public void addUserToRoomBySocketId(final UUID socketId, final String roomId) {
 		final UserAuthentication user = socketIdToUser.get(socketId);
-		userToRoomId.put(user, roomShortId);
+		userToRoomId.put(user, roomId);
 	}
 
 	@Override
@@ -297,7 +294,7 @@ public class UserServiceImpl extends DefaultEntityServiceImpl<UserProfile> imple
 	}
 
 	@Override
-	public String getRoomByUserId(final String userId) {
+	public String getRoomIdByUserId(final String userId) {
 		for (final Entry<UserAuthentication, String> entry  : userToRoomId.entrySet()) {
 			if (entry.getKey().getId().equals(userId)) {
 				return entry.getValue();
diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
index 121f1c0452fa915639e0859efc4eb2e36120bcc1..ca4d13d0580787f81acd858019908e0de35dc3e1 100644
--- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
+++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
@@ -143,15 +143,15 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 
 					return;
 				}
-				final String roomShortId = userService.getRoomByUserId(u.getId());
-				final de.thm.arsnova.entities.Room room = roomService.getInternal(roomShortId, u);
+				final String roomId = userService.getRoomIdByUserId(u.getId());
+				final de.thm.arsnova.entities.Room room = roomService.getInternal(roomId, u);
 
 				if (room.getSettings().isFeedbackLocked()) {
-					logger.debug("Feedback save blocked: {}", u, roomShortId, data.getValue());
+					logger.debug("Feedback save blocked: {}", u, roomId, data.getValue());
 				} else {
-					logger.debug("Feedback recieved: {}", u, roomShortId, data.getValue());
-					if (null != roomShortId) {
-						feedbackService.save(roomShortId, data.getValue(), u);
+					logger.debug("Feedback recieved: {}", u, roomId, data.getValue());
+					if (null != roomId) {
+						feedbackService.save(roomId, data.getValue(), u);
 					}
 				}
 			}
@@ -167,19 +167,20 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 
 					return;
 				}
-				final String oldShortRoomId = userService.getRoomByUserId(u.getId());
-				if (null != room.getKeyword() && room.getKeyword().equals(oldShortRoomId)) {
+				final String oldRoomId = userService.getRoomIdByUserId(u.getId());
+				if (null != room.getKeyword() && room.getKeyword().equals(oldRoomId)) {
 					return;
 				}
+				final String roomId = roomService.getIdByShortId(room.getKeyword());
 
-				if (null != roomService.join(room.getKeyword(), client.getSessionId())) {
+				if (null != roomId && null != roomService.join(roomId, client.getSessionId())) {
 					/* active user count has to be sent to the client since the broadcast is
 					 * not always sent as long as the polling solution is active simultaneously */
-					reportActiveUserCountForRoom(room.getKeyword());
-					reportRoomDataToClient(room.getKeyword(), u, client);
+					reportActiveUserCountForRoom(roomId);
+					reportRoomDataToClient(roomId, u, client);
 				}
-				if (null != oldShortRoomId) {
-					reportActiveUserCountForRoom(oldShortRoomId);
+				if (null != oldRoomId) {
+					reportActiveUserCountForRoom(oldRoomId);
 				}
 			}
 		});
@@ -255,12 +256,12 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 					return;
 				}
 				final String userId = userService.getUserToSocketId(client.getSessionId()).getId();
-				final String shortRoomId = userService.getRoomByUserId(userId);
+				final String roomId = userService.getRoomIdByUserId(userId);
 				userService.removeUserFromRoomBySocketId(client.getSessionId());
 				userService.removeUserToSocketId(client.getSessionId());
-				if (null != shortRoomId) {
+				if (null != roomId) {
 					/* user disconnected before joining a session */
-					reportActiveUserCountForRoom(shortRoomId);
+					reportActiveUserCountForRoom(roomId);
 				}
 			}
 		});
@@ -328,12 +329,12 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		this.useSSL = useSSL;
 	}
 
-	public void reportDeletedFeedback(final UserAuthentication user, final Set<de.thm.arsnova.entities.Room> arsRooms) {
-		final List<String> keywords = new ArrayList<>();
-		for (final de.thm.arsnova.entities.Room room : arsRooms) {
-			keywords.add(room.getShortId());
+	public void reportDeletedFeedback(final UserAuthentication user, final Set<de.thm.arsnova.entities.Room> rooms) {
+		final List<String> roomShortIds = new ArrayList<>();
+		for (final de.thm.arsnova.entities.Room room : rooms) {
+			roomShortIds.add(room.getShortId());
 		}
-		this.sendToUser(user, "feedbackReset", keywords);
+		this.sendToUser(user, "feedbackReset", roomShortIds);
 	}
 
 	private List<UUID> findConnectionIdForUser(final UserAuthentication user) {
@@ -364,26 +365,26 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	 * Currently only sends the feedback data to the client. Should be used for all
 	 * relevant Socket.IO data, the client needs to know after joining a session.
 	 */
-	public void reportRoomDataToClient(final String shortRoomId, final UserAuthentication user, final SocketIOClient client) {
-		final de.thm.arsnova.entities.Room room = roomService.getInternal(shortRoomId, user);
-		final de.thm.arsnova.entities.Room.Settings settings = roomService.getFeatures(shortRoomId);
-
-		client.sendEvent("unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(shortRoomId, user));
-		client.sendEvent("unansweredPreparationQuestions", contentService.getUnAnsweredPreparationContentIds(shortRoomId, user));
-		client.sendEvent("countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(shortRoomId));
-		client.sendEvent("countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(shortRoomId));
-		client.sendEvent("activeUserCountData", roomService.activeUsers(shortRoomId));
+	public void reportRoomDataToClient(final String roomId, final UserAuthentication user, final SocketIOClient client) {
+		final de.thm.arsnova.entities.Room room = roomService.getInternal(roomId, user);
+		final de.thm.arsnova.entities.Room.Settings settings = room.getSettings();
+
+		client.sendEvent("unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(roomId, user));
+		client.sendEvent("unansweredPreparationQuestions", contentService.getUnAnsweredPreparationContentIds(roomId, user));
+		client.sendEvent("countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(roomId));
+		client.sendEvent("countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(roomId));
+		client.sendEvent("activeUserCountData", roomService.activeUsers(roomId));
 //		client.sendEvent("learningProgressOptions", room.getLearningProgressOptions());
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomShortId(shortRoomId);
+		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(roomId);
 		client.sendEvent("feedbackData", fb.getValues());
 
 		if (settings.isFlashcardsEnabled()) {
-			client.sendEvent("countFlashcards", contentService.countFlashcardsForUserInternal(shortRoomId));
+			client.sendEvent("countFlashcards", contentService.countFlashcardsForUserInternal(roomId));
 //			client.sendEvent("flipFlashcards", room.getFlipFlashcards());
 		}
 
 		try {
-			final long averageFeedback = feedbackService.calculateRoundedAverageFeedback(shortRoomId);
+			final long averageFeedback = feedbackService.calculateRoundedAverageFeedback(roomId);
 			client.sendEvent("feedbackDataRoundedAverage", averageFeedback);
 		} catch (final NoContentException e) {
 			final Object object = null; // can't directly use "null".
@@ -392,18 +393,18 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	}
 
 	public void reportUpdatedFeedbackForRoom(final de.thm.arsnova.entities.Room room) {
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomShortId(room.getShortId());
-		broadcastInRoom(room.getShortId(), "feedbackData", fb.getValues());
+		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(room.getId());
+		broadcastInRoom(room.getId(), "feedbackData", fb.getValues());
 		try {
-			final long averageFeedback = feedbackService.calculateRoundedAverageFeedback(room.getShortId());
-			broadcastInRoom(room.getShortId(), "feedbackDataRoundedAverage", averageFeedback);
+			final long averageFeedback = feedbackService.calculateRoundedAverageFeedback(room.getId());
+			broadcastInRoom(room.getId(), "feedbackDataRoundedAverage", averageFeedback);
 		} catch (final NoContentException e) {
-			broadcastInRoom(room.getShortId(), "feedbackDataRoundedAverage", null);
+			broadcastInRoom(room.getId(), "feedbackDataRoundedAverage", null);
 		}
 	}
 
 	public void reportFeedbackForUserInRoom(final Room room, final UserAuthentication user) {
-		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomShortId(room.getKeyword());
+		final de.thm.arsnova.entities.Feedback fb = feedbackService.getByRoomId(room.getKeyword());
 		Long averageFeedback;
 		try {
 			averageFeedback = feedbackService.calculateRoundedAverageFeedback(room.getKeyword());
@@ -423,19 +424,19 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		}
 	}
 
-	public void reportActiveUserCountForRoom(final String shortRoomId) {
-		final int count = userService.getUsersByRoomShortId(shortRoomId).size();
+	public void reportActiveUserCountForRoom(final String roomId) {
+		final int count = userService.getUsersByRoomId(roomId).size();
 
-		broadcastInRoom(shortRoomId, "activeUserCountData", count);
+		broadcastInRoom(roomId, "activeUserCountData", count);
 	}
 
 	public void reportAnswersToContentAvailable(final de.thm.arsnova.entities.Room room, final Content content) {
-		broadcastInRoom(room.getShortId(), "answersToLecQuestionAvail", content.get_id());
+		broadcastInRoom(room.getId(), "answersToLecQuestionAvail", content.get_id());
 	}
 
 	public void reportCommentAvailable(final de.thm.arsnova.entities.Room room, final Comment comment) {
 		/* TODO role handling implementation, send this only to users with role lecturer */
-		broadcastInRoom(room.getShortId(), "audQuestionAvail", comment.getId());
+		broadcastInRoom(room.getId(), "audQuestionAvail", comment.getId());
 	}
 
 	public void reportContentAvailable(final de.thm.arsnova.entities.Room room, final List<de.thm.arsnova.entities.Content> qs) {
@@ -446,9 +447,9 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 
 		/* TODO role handling implementation, send this only to users with role audience */
 		if (!qs.isEmpty()) {
-			broadcastInRoom(room.getShortId(), "lecQuestionAvail", contents.get(0).get_id()); // deprecated!
+			broadcastInRoom(room.getId(), "lecQuestionAvail", contents.get(0).get_id()); // deprecated!
 		}
-		broadcastInRoom(room.getShortId(), "lecturerQuestionAvailable", contents);
+		broadcastInRoom(room.getId(), "lecturerQuestionAvailable", contents);
 	}
 
 	public void reportContentsLocked(final de.thm.arsnova.entities.Room room, final List<de.thm.arsnova.entities.Content> qs) {
@@ -456,19 +457,19 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		for (de.thm.arsnova.entities.Content q : qs) {
 			contents.add(new Content(q));
 		}
-		broadcastInRoom(room.getShortId(), "lecturerQuestionLocked", contents);
+		broadcastInRoom(room.getId(), "lecturerQuestionLocked", contents);
 	}
 
-	public void reportRoomStatus(final String shortRoomId, final boolean active) {
-		broadcastInRoom(shortRoomId, "setSessionActive", active);
+	public void reportRoomStatus(final String roomId, final boolean active) {
+		broadcastInRoom(roomId, "setSessionActive", active);
 	}
 
-	public void broadcastInRoom(final String shortRoomId, final String eventName, final Object data) {
+	public void broadcastInRoom(final String roomId, final String eventName, final Object data) {
 		/* collect a list of users which are in the current room iterate over
 		 * all connected clients and if send feedback, if user is in current
 		 * room
 		 */
-		final Set<UserAuthentication> users = userService.getUsersByRoomShortId(shortRoomId);
+		final Set<UserAuthentication> users = userService.getUsersByRoomId(roomId);
 
 		for (final SocketIOClient c : server.getAllClients()) {
 			final UserAuthentication u = userService.getUserToSocketId(c.getSessionId());
@@ -512,18 +513,18 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	@Timed(name = "visit.NewAnswerEvent")
 	public void visit(NewAnswerEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
+		final String roomId = event.getRoom().getId();
 		this.reportAnswersToContentAvailable(event.getRoom(), new Content(event.getContent()));
-		broadcastInRoom(shortRoomId, "countQuestionAnswersByQuestionId", contentService.countAnswersAndAbstentionsInternal(event.getContent().getId()));
-		broadcastInRoom(shortRoomId, "countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(shortRoomId));
-		broadcastInRoom(shortRoomId, "countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(shortRoomId));
+		broadcastInRoom(roomId, "countQuestionAnswersByQuestionId", contentService.countAnswersAndAbstentionsInternal(event.getContent().getId()));
+		broadcastInRoom(roomId, "countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(roomId));
+		broadcastInRoom(roomId, "countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(roomId));
 
 		// Update the unanswered count for the content variant that was answered.
 		final de.thm.arsnova.entities.Content content = event.getContent();
 		if ("lecture".equals(content.getGroup())) {
-			sendToUser(event.getUser(), "unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(shortRoomId, event.getUser()));
+			sendToUser(event.getUser(), "unansweredLecturerQuestions", contentService.getUnAnsweredLectureContentIds(roomId, event.getUser()));
 		} else if ("preparation".equals(content.getGroup())) {
-			sendToUser(event.getUser(), "unansweredPreparationQuestions", contentService.getUnAnsweredPreparationContentIds(shortRoomId, event.getUser()));
+			sendToUser(event.getUser(), "unansweredPreparationQuestions", contentService.getUnAnsweredPreparationContentIds(roomId, event.getUser()));
 		}
 	}
 
@@ -531,53 +532,53 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	@Timed(name = "visit.DeleteAnswerEvent")
 	public void visit(DeleteAnswerEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
+		final String roomId = event.getRoom().getId();
 		this.reportAnswersToContentAvailable(event.getRoom(), new Content(event.getQuestion()));
 		// We do not know which user's answer was deleted, so we can't update his 'unanswered' list of questions...
-		broadcastInRoom(shortRoomId, "countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(shortRoomId));
-		broadcastInRoom(shortRoomId, "countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(shortRoomId));
+		broadcastInRoom(roomId, "countLectureQuestionAnswers", contentService.countLectureQuestionAnswersInternal(roomId));
+		broadcastInRoom(roomId, "countPreparationQuestionAnswers", contentService.countPreparationQuestionAnswersInternal(roomId));
 	}
 
 	@Async
 	@Override
 	@Timed(name = "visit.PiRoundDelayedStartEvent")
 	public void visit(PiRoundDelayedStartEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "startDelayedPiRound", event.getPiRoundInformations());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "startDelayedPiRound", event.getPiRoundInformations());
 	}
 
 	@Async
 	@Override
 	@Timed(name = "visit.PiRoundEndEvent")
 	public void visit(PiRoundEndEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "endPiRound", event.getPiRoundEndInformations());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "endPiRound", event.getPiRoundEndInformations());
 	}
 
 	@Async
 	@Override
 	@Timed(name = "visit.PiRoundCancelEvent")
 	public void visit(PiRoundCancelEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "cancelPiRound", event.getContentId());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "cancelPiRound", event.getContentId());
 	}
 
 	@Override
 	public void visit(PiRoundResetEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "resetPiRound", event.getPiRoundResetInformations());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "resetPiRound", event.getPiRoundResetInformations());
 	}
 
 	@Override
 	public void visit(LockVoteEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "lockVote", event.getVotingAdmission());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "lockVote", event.getVotingAdmission());
 	}
 
 	@Override
 	public void visit(UnlockVoteEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
-		broadcastInRoom(shortRoomId, "unlockVote", event.getVotingAdmission());
+		final String roomId = event.getRoom().getId();
+		broadcastInRoom(roomId, "unlockVote", event.getVotingAdmission());
 	}
 
 	@Override
@@ -586,7 +587,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		for (de.thm.arsnova.entities.Content q : event.getQuestions()) {
 			contents.add(new Content(q));
 		}
-		broadcastInRoom(event.getRoom().getShortId(), "lockVotes", contents);
+		broadcastInRoom(event.getRoom().getId(), "lockVotes", contents);
 	}
 
 	@Override
@@ -595,29 +596,29 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		for (de.thm.arsnova.entities.Content q : event.getQuestions()) {
 			contents.add(new Content(q));
 		}
-		broadcastInRoom(event.getRoom().getShortId(), "unlockVotes", contents);
+		broadcastInRoom(event.getRoom().getId(), "unlockVotes", contents);
 	}
 
 	@Override
 	public void visit(FeatureChangeEvent event) {
-		final String shortRoomId = event.getRoom().getShortId();
+		final String roomId = event.getRoom().getId();
 		final de.thm.arsnova.entities.Room.Settings settings = event.getRoom().getSettings();
-		broadcastInRoom(shortRoomId, "featureChange", settings);
+		broadcastInRoom(roomId, "featureChange", settings);
 
 		if (settings.isFlashcardsEnabled()) {
-			broadcastInRoom(shortRoomId, "countFlashcards", contentService.countFlashcardsForUserInternal(shortRoomId));
-//			broadcastInRoom(shortRoomId, "flipFlashcards", event.getRoom().getFlipFlashcards());
+			broadcastInRoom(roomId, "countFlashcards", contentService.countFlashcardsForUserInternal(roomId));
+//			broadcastInRoom(roomId, "flipFlashcards", event.getRoom().getFlipFlashcards());
 		}
 	}
 
 	@Override
 	public void visit(LockFeedbackEvent event) {
-		broadcastInRoom(event.getRoom().getShortId(), "lockFeedback", event.getRoom().getSettings().isFeedbackLocked());
+		broadcastInRoom(event.getRoom().getId(), "lockFeedback", event.getRoom().getSettings().isFeedbackLocked());
 	}
 
 	@Override
 	public void visit(FlipFlashcardsEvent event) {
-//		broadcastInRoom(event.getRoom().getShortId(), "flipFlashcards", event.getRoom().getFlipFlashcards());
+//		broadcastInRoom(event.getRoom().getId(), "flipFlashcards", event.getRoom().getFlipFlashcards());
 	}
 
 	@Override
@@ -669,12 +670,12 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 
 	@Override
 	public void visit(StatusRoomEvent event) {
-		this.reportRoomStatus(event.getRoom().getShortId(), !event.getRoom().isClosed());
+		this.reportRoomStatus(event.getRoom().getId(), !event.getRoom().isClosed());
 	}
 
 	@Override
 	public void visit(ChangeScoreEvent event) {
-		broadcastInRoom(event.getRoom().getShortId(), "learningProgressChange", null);
+		broadcastInRoom(event.getRoom().getId(), "learningProgressChange", null);
 	}
 
 	@Override