diff --git a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
index f3f7ad86058bfffbfc74d0d0f02bbf6f6155d4cd..2ef9a36af402db2b5af3a214e03473b5b4a233b1 100644
--- a/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
+++ b/src/main/java/de/thm/arsnova/aop/UserSessionAspect.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.aop;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.services.UserSessionService;
 import org.aspectj.lang.JoinPoint;
 import org.aspectj.lang.annotation.AfterReturning;
diff --git a/src/main/java/de/thm/arsnova/controller/LoginController.java b/src/main/java/de/thm/arsnova/controller/LoginController.java
index 10e1bd4b0062961b845274bb13eef2a24115c7f2..960958397713bd3c3a6aec851239734fd571f8c9 100644
--- a/src/main/java/de/thm/arsnova/controller/LoginController.java
+++ b/src/main/java/de/thm/arsnova/controller/LoginController.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.controller;
 
 import de.thm.arsnova.entities.ServiceDescription;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.exceptions.UnauthorizedException;
 import de.thm.arsnova.services.UserService;
diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index ac95db32f9837ed4e8b1de4d1de9f62f2534337b..98b1f6c1ac26d80d4c2474ecdb4fd6d170968a59 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -18,9 +18,9 @@
 package de.thm.arsnova.controller;
 
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionFeature;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionFeature;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.ScoreStatistics;
 import de.thm.arsnova.exceptions.UnauthorizedException;
diff --git a/src/main/java/de/thm/arsnova/entities/LoggedIn.java b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
index 275196fabf9682064f47c3eaff68b8942aad7211..aff7b46fe2f20f5311970f3036d09e10a022b6f5 100644
--- a/src/main/java/de/thm/arsnova/entities/LoggedIn.java
+++ b/src/main/java/de/thm/arsnova/entities/LoggedIn.java
@@ -18,6 +18,7 @@
 package de.thm.arsnova.entities;
 
 import com.fasterxml.jackson.annotation.JsonView;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.serialization.View;
 
 import java.util.ArrayList;
diff --git a/src/main/java/de/thm/arsnova/entities/Session.java b/src/main/java/de/thm/arsnova/entities/Session.java
index ee09f44be3fc739044edc0e38341fe5a227a7c9c..40929550597d1f7bbc753e709f6f3723d1ea031b 100644
--- a/src/main/java/de/thm/arsnova/entities/Session.java
+++ b/src/main/java/de/thm/arsnova/entities/Session.java
@@ -1,363 +1,98 @@
-/*
- * This file is part of ARSnova Backend.
- * Copyright (C) 2012-2018 The ARSnova Team and Contributors
- *
- * ARSnova Backend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * ARSnova Backend is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
 package de.thm.arsnova.entities;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonView;
 import de.thm.arsnova.entities.serialization.View;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 
-/**
- * Represents an ARSnova session.
- */
-@ApiModel(value = "session", description = "the session entity")
 public class Session implements Entity {
 	private String id;
 	private String rev;
+	private String shortId;
+	private String ownerId;
 	private String name;
-	private String shortName;
-	private String keyword;
-	private String creator;
-	private boolean active;
-	private long lastOwnerActivity;
-	private String courseType;
-	private String courseId;
-	private long creationTime;
-	private ScoreOptions learningProgressOptions = new ScoreOptions();
-	private SessionFeature features = new SessionFeature();
-
-	private String ppAuthorName;
-	private String ppAuthorMail;
-	private String ppUniversity;
-	private String ppLogo;
-	private String ppSubject;
-	private String ppLicense;
-	private String ppDescription;
-	private String ppFaculty;
-	private String ppLevel;
-	private String sessionType;
-	private boolean feedbackLock;
-	private boolean flipFlashcards;
+	private String abbreviation;
+	private boolean closed;
+	private SessionStatistics statistics;
 
+	@Override
 	@JsonView({View.Persistence.class, View.Public.class})
 	public String getId() {
 		return id;
 	}
 
+	@Override
 	@JsonView({View.Persistence.class, View.Public.class})
 	public void setId(final String id) {
 		this.id = id;
 	}
 
+	@Override
 	@JsonView({View.Persistence.class, View.Public.class})
 	public String getRevision() {
 		return rev;
 	}
 
+	@Override
 	@JsonView({View.Persistence.class, View.Public.class})
 	public void setRevision(final String rev) {
 		this.rev = rev;
 	}
 
-	@ApiModelProperty(required = true, value = "the name")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getName() {
-		return name;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setName(final String name) {
-		this.name = name;
-	}
-
-	@ApiModelProperty(required = true, value = "the short name")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getShortName() {
-		return shortName;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setShortName(final String shortName) {
-		this.shortName = shortName;
-	}
-
-	@ApiModelProperty(required = true, value = "the keyword")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getKeyword() {
-		return keyword;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setKeyword(final String keyword) {
-		this.keyword = keyword;
-	}
-
-	@ApiModelProperty(required = true, value = "the session creator")
-	@JsonView(View.Persistence.class)
-	public String getCreator() {
-		return creator;
-	}
-
-	@JsonView(View.Persistence.class)
-	public void setCreator(final String creator) {
-		this.creator = creator;
-	}
-
-	@ApiModelProperty(required = true, value = "true for active session")
 	@JsonView({View.Persistence.class, View.Public.class})
-	public boolean isActive() {
-		return active;
+	public String getShortId() {
+		return shortId;
 	}
 
 	@JsonView({View.Persistence.class, View.Public.class})
-	public void setActive(final boolean active) {
-		this.active = active;
+	public void setShortId(final String shortId) {
+		this.shortId = shortId;
 	}
 
-	@ApiModelProperty(required = true, value = "timestamp from the last activity of the owner")
 	@JsonView(View.Persistence.class)
-	public long getLastOwnerActivity() {
-		return lastOwnerActivity;
+	public String getOwnerId() {
+		return ownerId;
 	}
 
 	@JsonView(View.Persistence.class)
-	public void setLastOwnerActivity(final long lastOwnerActivity) {
-		this.lastOwnerActivity = lastOwnerActivity;
-	}
-
-	public boolean isCreator(final User user) {
-		return user.getUsername().equals(creator);
-	}
-
-	@ApiModelProperty(required = true, value = "the source the course comes from (example: moodle)")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getCourseType() {
-		return courseType;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setCourseType(final String courseType) {
-		this.courseType = courseType;
-	}
-
-	@ApiModelProperty(required = true, value = "the course ID")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getCourseId() {
-		return courseId;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setCourseId(final String courseId) {
-		this.courseId = courseId;
-	}
-
-	@JsonIgnore
-	public boolean isCourseSession() {
-		return getCourseId() != null && !getCourseId().isEmpty();
-	}
-
-	@ApiModelProperty(required = true, value = "creation timestamp")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public long getCreationTime() {
-		return creationTime;
-	}
-
-	@JsonView(View.Persistence.class)
-	public void setCreationTime(long creationTime) {
-		this.creationTime = creationTime;
-	}
-
-	@ApiModelProperty(required = true, value = "the score options")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public ScoreOptions getLearningProgressOptions() {
-		return learningProgressOptions;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setLearningProgressOptions(ScoreOptions learningProgressOptions) {
-		this.learningProgressOptions = learningProgressOptions;
-	}
-
-	@ApiModelProperty(required = true, value = "the enabled features (e.g. feedback, interposed, learning Progress, lecture)")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public SessionFeature getFeatures() {
-		return features;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setFeatures(SessionFeature features) {
-		this.features = features;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool author name")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpAuthorName() {
-		return ppAuthorName;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpAuthorName(final String ppAuthorName) {
-		this.ppAuthorName = ppAuthorName;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool author email")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpAuthorMail() {
-		return ppAuthorMail;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpAuthorMail(final String ppAuthorMail) {
-		this.ppAuthorMail = ppAuthorMail;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool university")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpUniversity() {
-		return ppUniversity;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpUniversity(final String ppUniversity) {
-		this.ppUniversity = ppUniversity;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool logo")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpLogo() {
-		return ppLogo;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpLogo(final String ppLogo) {
-		this.ppLogo = ppLogo;
-	}
-
-	@ApiModelProperty(required = true, value = "used to display subject")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpSubject() {
-		return ppSubject;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpSubject(final String ppSubject) {
-		this.ppSubject = ppSubject;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool license")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpLicense() {
-		return ppLicense;
+	public void setOwnerId(final String ownerId) {
+		this.ownerId = ownerId;
 	}
 
 	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpLicense(final String ppLicense) {
-		this.ppLicense = ppLicense;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool description")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpDescription() {
-		return ppDescription;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpDescription(final String ppDescription) {
-		this.ppDescription = ppDescription;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool faculty")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpFaculty() {
-		return ppFaculty;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpFaculty(final String ppFaculty) {
-		this.ppFaculty = ppFaculty;
-	}
-
-	@ApiModelProperty(required = true, value = "the public pool level")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getPpLevel() {
-		return ppLevel;
-	}
-
-	@JsonView({View.Persistence.class, View.Public.class})
-	public void setPpLevel(final String ppLevel) {
-		this.ppLevel = ppLevel;
-	}
-
-	@ApiModelProperty(required = true, value = "the session type")
-	@JsonView({View.Persistence.class, View.Public.class})
-	public String getSessionType() {
-		return sessionType;
+	public String getName() {
+		return name;
 	}
 
 	@JsonView({View.Persistence.class, View.Public.class})
-	public void setSessionType(final String sessionType) {
-		this.sessionType = sessionType;
+	public void setName(final String name) {
+		this.name = name;
 	}
 
-	@ApiModelProperty(required = true, value = "the feedback lock status")
 	@JsonView({View.Persistence.class, View.Public.class})
-	public boolean getFeedbackLock() {
-		return feedbackLock;
+	public String getAbbreviation() {
+		return abbreviation;
 	}
 
 	@JsonView({View.Persistence.class, View.Public.class})
-	public void setFeedbackLock(Boolean lock) {
-		this.feedbackLock = lock;
+	public void setAbbreviation(final String abbreviation) {
+		this.abbreviation = abbreviation;
 	}
 
-	@ApiModelProperty(required = true, value = "the flashcard flip condition")
 	@JsonView({View.Persistence.class, View.Public.class})
-	public boolean getFlipFlashcards() {
-		return flipFlashcards;
+	public boolean isClosed() {
+		return closed;
 	}
 
 	@JsonView({View.Persistence.class, View.Public.class})
-	public void setFlipFlashcards(Boolean flip) {
-		this.flipFlashcards = flip;
-	}
-
-	@Override
-	public String toString() {
-		return "Session [keyword=" + keyword + ", type=" + getType() + ", creator=" + creator + "]";
+	public void setClosed(final boolean closed) {
+		this.closed = closed;
 	}
 
-	@Override
-	public int hashCode() {
-		// See http://stackoverflow.com/a/113600
-		final int theAnswer = 42;
-		final int theOthers = 37;
-
-		return theOthers * theAnswer + this.keyword.hashCode();
+	@JsonView(View.Public.class)
+	public SessionStatistics getStatistics() {
+		return statistics;
 	}
 
-	@Override
-	public boolean equals(Object obj) {
-		if (obj == null || !obj.getClass().equals(this.getClass())) {
-			return false;
-		}
-		Session other = (Session) obj;
-		return this.keyword.equals(other.keyword);
+	public void setStatistics(final SessionStatistics statistics) {
+		this.statistics = statistics;
 	}
-
 }
diff --git a/src/main/java/de/thm/arsnova/entities/SessionStatistics.java b/src/main/java/de/thm/arsnova/entities/SessionStatistics.java
new file mode 100644
index 0000000000000000000000000000000000000000..890be0beaf6820aeee998a766c56fa880ee8eeda
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/SessionStatistics.java
@@ -0,0 +1,61 @@
+package de.thm.arsnova.entities;
+
+import com.fasterxml.jackson.annotation.JsonView;
+import de.thm.arsnova.entities.serialization.View;
+
+public class SessionStatistics {
+	private int contentCount = 0;
+	private int answerCount = 0;
+	private int unreadAnswerCount = 0;
+	private int commentCount = 0;
+	private int unreadCommentCount = 0;
+
+	public SessionStatistics() {
+
+	}
+
+	@JsonView(View.Public.class)
+	public int getContentCount() {
+		return contentCount;
+	}
+
+	public void setContentCount(int contentCount) {
+		this.contentCount = contentCount;
+	}
+
+	@JsonView(View.Public.class)
+	public int getAnswerCount() {
+		return answerCount;
+	}
+
+	public void setAnswerCount(int answerCount) {
+		this.answerCount = answerCount;
+	}
+
+	@JsonView(View.Public.class)
+	public int getUnreadAnswerCount() {
+		return unreadAnswerCount;
+	}
+
+	public void setUnreadAnswerCount(int unreadAnswerCount) {
+		this.unreadAnswerCount = unreadAnswerCount;
+	}
+
+	@JsonView(View.Public.class)
+	public int getCommentCount() {
+		return commentCount;
+	}
+
+	public void setCommentCount(int commentCount) {
+		this.commentCount = commentCount;
+	}
+
+	@JsonView(View.Public.class)
+	public int getUnreadCommentCount() {
+		return unreadCommentCount;
+	}
+
+	public void setUnreadCommentCount(int unreadCommentCount) {
+		this.unreadCommentCount = unreadCommentCount;
+	}
+}
diff --git a/src/main/java/de/thm/arsnova/entities/VisitedSession.java b/src/main/java/de/thm/arsnova/entities/VisitedSession.java
index 26bd030bda214dd754b21869539ae19a2a6cde4c..90bbf9abfe2e50505026d9fe81cf87afccf0c81c 100644
--- a/src/main/java/de/thm/arsnova/entities/VisitedSession.java
+++ b/src/main/java/de/thm/arsnova/entities/VisitedSession.java
@@ -18,6 +18,7 @@
 package de.thm.arsnova.entities;
 
 import com.fasterxml.jackson.annotation.JsonView;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.serialization.View;
 
 /**
diff --git a/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java b/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java
index 83a84eee587419c84f3b559b552cad13356f54f8..93b6aa898a716b8c0f9688576d7eca9090aefb4b 100644
--- a/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java
+++ b/src/main/java/de/thm/arsnova/entities/migration/V2Migrator.java
@@ -2,11 +2,13 @@ package de.thm.arsnova.entities.migration;
 
 import de.thm.arsnova.entities.ChoiceAnswer;
 import de.thm.arsnova.entities.ChoiceQuestionContent;
+import de.thm.arsnova.entities.DbUser;
 import de.thm.arsnova.entities.Entity;
 import de.thm.arsnova.entities.TextAnswer;
 import de.thm.arsnova.entities.migration.v2.Answer;
 import de.thm.arsnova.entities.migration.v2.AnswerOption;
 import de.thm.arsnova.entities.migration.v2.Content;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -17,6 +19,21 @@ public class V2Migrator {
 		to.setRevision(from.getRevision());
 	}
 
+	public de.thm.arsnova.entities.Session migrate(final Session from, final DbUser owner) {
+		if (!owner.getUsername().equals(from.getCreator())) {
+			throw new IllegalArgumentException("Username of owner object does not match session creator.");
+		}
+		final de.thm.arsnova.entities.Session to = new de.thm.arsnova.entities.Session();
+		copyCommonProperties(from, to);
+		to.setShortId(from.getKeyword());
+		to.setOwnerId(owner.getId());
+		to.setName(from.getName());
+		to.setAbbreviation(from.getShortName());
+		to.setClosed(!from.isActive());
+
+		return to;
+	}
+
 	public de.thm.arsnova.entities.Content migrate(final Content from) {
 		de.thm.arsnova.entities.Content to;
 		switch (from.getQuestionType()) {
diff --git a/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java b/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java
new file mode 100644
index 0000000000000000000000000000000000000000..13e6191f51b1134865000522fbbc69a46599893f
--- /dev/null
+++ b/src/main/java/de/thm/arsnova/entities/migration/v2/Session.java
@@ -0,0 +1,366 @@
+/*
+ * This file is part of ARSnova Backend.
+ * Copyright (C) 2012-2017 The ARSnova Team
+ *
+ * ARSnova Backend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * ARSnova Backend is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package de.thm.arsnova.entities.migration.v2;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonView;
+import de.thm.arsnova.entities.Entity;
+import de.thm.arsnova.entities.ScoreOptions;
+import de.thm.arsnova.entities.User;
+import de.thm.arsnova.entities.serialization.View;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Represents an ARSnova session.
+ */
+@ApiModel(value = "session", description = "the session entity")
+public class Session implements Entity {
+	private String id;
+	private String rev;
+	private String name;
+	private String shortName;
+	private String keyword;
+	private String creator;
+	private boolean active;
+	private long lastOwnerActivity;
+	private String courseType;
+	private String courseId;
+	private long creationTime;
+	private ScoreOptions learningProgressOptions = new ScoreOptions();
+	private SessionFeature features = new SessionFeature();
+
+	private String ppAuthorName;
+	private String ppAuthorMail;
+	private String ppUniversity;
+	private String ppLogo;
+	private String ppSubject;
+	private String ppLicense;
+	private String ppDescription;
+	private String ppFaculty;
+	private String ppLevel;
+	private String sessionType;
+	private boolean feedbackLock;
+	private boolean flipFlashcards;
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getId() {
+		return id;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setId(final String id) {
+		this.id = id;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getRevision() {
+		return rev;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setRevision(final String rev) {
+		this.rev = rev;
+	}
+
+	@ApiModelProperty(required = true, value = "the name")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getName() {
+		return name;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setName(final String name) {
+		this.name = name;
+	}
+
+	@ApiModelProperty(required = true, value = "the short name")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getShortName() {
+		return shortName;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setShortName(final String shortName) {
+		this.shortName = shortName;
+	}
+
+	@ApiModelProperty(required = true, value = "the keyword")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getKeyword() {
+		return keyword;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setKeyword(final String keyword) {
+		this.keyword = keyword;
+	}
+
+	@ApiModelProperty(required = true, value = "the session creator")
+	@JsonView(View.Persistence.class)
+	public String getCreator() {
+		return creator;
+	}
+
+	@JsonView(View.Persistence.class)
+	public void setCreator(final String creator) {
+		this.creator = creator;
+	}
+
+	@ApiModelProperty(required = true, value = "true for active session")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public boolean isActive() {
+		return active;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setActive(final boolean active) {
+		this.active = active;
+	}
+
+	@ApiModelProperty(required = true, value = "timestamp from the last activity of the owner")
+	@JsonView(View.Persistence.class)
+	public long getLastOwnerActivity() {
+		return lastOwnerActivity;
+	}
+
+	@JsonView(View.Persistence.class)
+	public void setLastOwnerActivity(final long lastOwnerActivity) {
+		this.lastOwnerActivity = lastOwnerActivity;
+	}
+
+	public boolean isCreator(final User user) {
+		return user.getUsername().equals(creator);
+	}
+
+	@ApiModelProperty(required = true, value = "the source the course comes from (example: moodle)")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getCourseType() {
+		return courseType;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setCourseType(final String courseType) {
+		this.courseType = courseType;
+	}
+
+	@ApiModelProperty(required = true, value = "the course ID")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getCourseId() {
+		return courseId;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setCourseId(final String courseId) {
+		this.courseId = courseId;
+	}
+
+	@JsonIgnore
+	public boolean isCourseSession() {
+		return getCourseId() != null && !getCourseId().isEmpty();
+	}
+
+	@ApiModelProperty(required = true, value = "creation timestamp")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public long getCreationTime() {
+		return creationTime;
+	}
+
+	@JsonView(View.Persistence.class)
+	public void setCreationTime(long creationTime) {
+		this.creationTime = creationTime;
+	}
+
+	@ApiModelProperty(required = true, value = "the score options")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public ScoreOptions getLearningProgressOptions() {
+		return learningProgressOptions;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setLearningProgressOptions(ScoreOptions learningProgressOptions) {
+		this.learningProgressOptions = learningProgressOptions;
+	}
+
+	@ApiModelProperty(required = true, value = "the enabled features (e.g. feedback, interposed, learning Progress, lecture)")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public SessionFeature getFeatures() {
+		return features;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setFeatures(SessionFeature features) {
+		this.features = features;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool author name")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpAuthorName() {
+		return ppAuthorName;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpAuthorName(final String ppAuthorName) {
+		this.ppAuthorName = ppAuthorName;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool author email")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpAuthorMail() {
+		return ppAuthorMail;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpAuthorMail(final String ppAuthorMail) {
+		this.ppAuthorMail = ppAuthorMail;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool university")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpUniversity() {
+		return ppUniversity;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpUniversity(final String ppUniversity) {
+		this.ppUniversity = ppUniversity;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool logo")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpLogo() {
+		return ppLogo;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpLogo(final String ppLogo) {
+		this.ppLogo = ppLogo;
+	}
+
+	@ApiModelProperty(required = true, value = "used to display subject")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpSubject() {
+		return ppSubject;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpSubject(final String ppSubject) {
+		this.ppSubject = ppSubject;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool license")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpLicense() {
+		return ppLicense;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpLicense(final String ppLicense) {
+		this.ppLicense = ppLicense;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool description")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpDescription() {
+		return ppDescription;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpDescription(final String ppDescription) {
+		this.ppDescription = ppDescription;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool faculty")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpFaculty() {
+		return ppFaculty;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpFaculty(final String ppFaculty) {
+		this.ppFaculty = ppFaculty;
+	}
+
+	@ApiModelProperty(required = true, value = "the public pool level")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getPpLevel() {
+		return ppLevel;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setPpLevel(final String ppLevel) {
+		this.ppLevel = ppLevel;
+	}
+
+	@ApiModelProperty(required = true, value = "the session type")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public String getSessionType() {
+		return sessionType;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setSessionType(final String sessionType) {
+		this.sessionType = sessionType;
+	}
+
+	@ApiModelProperty(required = true, value = "the feedback lock status")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public boolean getFeedbackLock() {
+		return feedbackLock;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setFeedbackLock(Boolean lock) {
+		this.feedbackLock = lock;
+	}
+
+	@ApiModelProperty(required = true, value = "the flashcard flip condition")
+	@JsonView({View.Persistence.class, View.Public.class})
+	public boolean getFlipFlashcards() {
+		return flipFlashcards;
+	}
+
+	@JsonView({View.Persistence.class, View.Public.class})
+	public void setFlipFlashcards(Boolean flip) {
+		this.flipFlashcards = flip;
+	}
+
+	@Override
+	public String toString() {
+		return "Session [keyword=" + keyword + ", type=" + getType() + ", creator=" + creator + "]";
+	}
+
+	@Override
+	public int hashCode() {
+		// See http://stackoverflow.com/a/113600
+		final int theAnswer = 42;
+		final int theOthers = 37;
+
+		return theOthers * theAnswer + this.keyword.hashCode();
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (obj == null || !obj.getClass().equals(this.getClass())) {
+			return false;
+		}
+		Session other = (Session) obj;
+		return this.keyword.equals(other.keyword);
+	}
+
+}
diff --git a/src/main/java/de/thm/arsnova/entities/SessionFeature.java b/src/main/java/de/thm/arsnova/entities/migration/v2/SessionFeature.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/entities/SessionFeature.java
rename to src/main/java/de/thm/arsnova/entities/migration/v2/SessionFeature.java
index acecd49fab34a258d7ff9f46057b88e9ea1ba6d4..5549650001f5600db63fb555bf2eaf0922b21fd8 100644
--- a/src/main/java/de/thm/arsnova/entities/SessionFeature.java
+++ b/src/main/java/de/thm/arsnova/entities/migration/v2/SessionFeature.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.entities.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
 import de.thm.arsnova.entities.serialization.View;
diff --git a/src/main/java/de/thm/arsnova/entities/SessionInfo.java b/src/main/java/de/thm/arsnova/entities/migration/v2/SessionInfo.java
similarity index 99%
rename from src/main/java/de/thm/arsnova/entities/SessionInfo.java
rename to src/main/java/de/thm/arsnova/entities/migration/v2/SessionInfo.java
index 0f7c155fe029fb3981c838bd39ece4b25ae5c0bd..d280d0455758f10dabe1078f2f0e1d9eeed754d0 100644
--- a/src/main/java/de/thm/arsnova/entities/SessionInfo.java
+++ b/src/main/java/de/thm/arsnova/entities/migration/v2/SessionInfo.java
@@ -15,7 +15,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-package de.thm.arsnova.entities;
+package de.thm.arsnova.entities.migration.v2;
 
 import com.fasterxml.jackson.annotation.JsonView;
 import de.thm.arsnova.entities.serialization.View;
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java
index 6993b84f14cdca2c874d7d44809cf9e07b72599e..69c7ae0f6a9ab891ddeb7306d67f7b9776ad262a 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java
+++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbTypeFieldConverter.java
@@ -28,7 +28,7 @@ import de.thm.arsnova.entities.LogEntry;
 import de.thm.arsnova.entities.Motd;
 import de.thm.arsnova.entities.migration.v2.Content;
 import de.thm.arsnova.entities.MotdList;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
index be1b1e6ba6ecace523ff93eb5a85a0cc48e00e6e..3d463db97b8a95f399ed335fefbb13da1dc3ffd7 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/AnswerQueueElement.java
@@ -19,7 +19,7 @@ package de.thm.arsnova.entities.transport;
 
 import de.thm.arsnova.entities.migration.v2.Answer;
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 
 /**
diff --git a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
index 5ebaca6e1a9bcb6e32be7dc60f26931b0969df85..3d4e8cccf704d0108ba1057848c2da5cf574892e 100644
--- a/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
+++ b/src/main/java/de/thm/arsnova/entities/transport/ImportExportSession.java
@@ -22,9 +22,9 @@ import de.thm.arsnova.entities.migration.v2.Answer;
 import de.thm.arsnova.entities.Comment;
 import de.thm.arsnova.entities.migration.v2.Content;
 import de.thm.arsnova.entities.Motd;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionFeature;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionFeature;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.serialization.View;
 import io.swagger.annotations.ApiModel;
diff --git a/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java b/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java
index 54b2c9fe7ea6e61254aab129a3837c52fdd3c283..4a626fe55b0a5d79b75456666de5f46f3b672d1d 100644
--- a/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java
+++ b/src/main/java/de/thm/arsnova/events/ChangeScoreEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a score related value changes.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
index bdd05354ed2a2d91e9f384773f46562c4f5474f9..b7f4683fde6b7d0e64d29dcc855a351cd19602b4 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllLectureAnswersEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever all answers of all lecture questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
index 557be91aea880916b392416b4868c7d3898e5ced..a72e223a15d9abc247f3a059e412baeff3e881b8 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllPreparationAnswersEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever all answers of all preparation questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
index f716671ed96b85f39004125dbfedf7ac11ed9852..fd4cf53c3eecbb6689df86f448ffff9a02530e7e 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsAnswersEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever all answers of all questions of a session are deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
index 6a2872eea473049180647078a781a935290ee375..085896e149b9c7c2e638b609b9d73e058a4fb850 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAllQuestionsEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever all questions of a session are deleted. Note that this implies that all answers are deleted as well,
diff --git a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java b/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
index bda39f5d8fec4db6df23455d8220d19a95504bc1..db355a93d774e00ff964abf8d27be77ceeebbc9e 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteAnswerEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a single answer is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java b/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java
index ff812418e496dfc957257cdf6823f9b12d8fab22..6689ca22695ab6f316add4fda2ea9be4d86ccda7 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteCommentEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever an comment is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
index d463dd85d2291f4b44937e3cdb0a0d72670d58f0..61edead65ff191f973fbab91bf4783a5075dfd83 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteFeedbackForSessionsEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 
 import java.util.Set;
diff --git a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java b/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
index d9a7350087dc9976bc722f1f51f3aea6ec2f3c53..2dffe285f68626994f186dc417ecf19faf12025c 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteQuestionEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a content is deleted.
diff --git a/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java b/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
index 9d1a60d92618fc5cdf0c3428fcfa57a144a58ce7..d99e6a4be0a43c0641227f954c0be34564d85d68 100644
--- a/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/DeleteSessionEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a session is deleted. Note that this implies that all related data such as comments,
diff --git a/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java b/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java
index 05068069527ec85d852edaa2b85dbf0e6cc7f16c..c117689c4d631a06f451d1e11855a5ceda08a1bf 100644
--- a/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java
+++ b/src/main/java/de/thm/arsnova/events/FeatureChangeEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a new session is created.
diff --git a/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java b/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java
index 0ae01bedb6208507652594e2d23bc809c68c5ecc..4681120f386283d8f19290d9eeaf7e6de9588763 100644
--- a/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/FlipFlashcardsEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever voting on a question is disabled.
diff --git a/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java b/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java
index 6eea780073a71d64e0f140d105d9cf765237b573..d196ceb85007fb1059c8ba32c9eb5bbad0cf6d96 100644
--- a/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockFeedbackEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever voting on a question is disabled.
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java b/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
index 26a74e126c4f44f0cc1efd179c305637b13d05f8..97dcfdd0a4770f11123f52ecab64d72a81a197be 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockQuestionEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a content is disabled, i.e., it is hidden from students.
diff --git a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
index cfe6bf95dcd8a2b5dd2bab1ec9b9c5f92d7e1dda..58c001216fbefa8565c9b22885d9756982067dac 100644
--- a/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockQuestionsEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java b/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
index f55f84de142f71ec8046222ff1231f768df4ed9e..303b647ea6eec525556b9531f705c6778948a799 100644
--- a/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockVoteEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java b/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
index a4c4d5b422fcad21731c4a73fcedf6c791beafbc..7288fe96e000bb7e93ee617e5210d5cecaafec53 100644
--- a/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/events/LockVotesEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
index 94ccc2488af74cdff50c5b1e9ba432f0129749df..d365616b309df89459f877dfe54d43957ac80449 100644
--- a/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewAnswerEvent.java
@@ -19,7 +19,7 @@ package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Answer;
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 
 /**
diff --git a/src/main/java/de/thm/arsnova/events/NewCommentEvent.java b/src/main/java/de/thm/arsnova/events/NewCommentEvent.java
index 7949ef50d319d2039ccfc4fca462f87ab81e41b2..5d5c57ff7fb259d97e8d6dd375ac246a69b3ae0b 100644
--- a/src/main/java/de/thm/arsnova/events/NewCommentEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewCommentEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.Comment;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a new comment is added.
diff --git a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java b/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
index 0f95625430578f239237cf0c2a4d1e6d5917fc44..9c807a7889942f6ac609167118d7a7c891b6598f 100644
--- a/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewFeedbackEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever the feedback changes.
diff --git a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java b/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
index 1176a3f9bcc0a5445a2839d4ecbd9e70439229ec..7771ec1815b8ce1cf8624cffa25e659290ca7f29 100644
--- a/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewQuestionEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a new content is added.
diff --git a/src/main/java/de/thm/arsnova/events/NewSessionEvent.java b/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
index 34845b8b486d8e5e726d79ba93577c08f56b1b66..a61e9e0dd33427c1d7c9a6d41f17607099db208f 100644
--- a/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/NewSessionEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a new session is created.
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
index 79abfeb0fc4f0a53e2552e06c82c10fd04d2d232..83fb938ec569e8e2e2e3d76b640fb44292754255 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundCancelEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a peer instruction round is canceled.
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
index ec93fff8708d278d7c5f29c2e1027a733f7c982d..fc53399d6bc0134a4b13cf42d093998bf160874c 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundDelayedStartEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
index 868996e0b4a62a187eba72895f33bb5899702acb..366c92a71f9eba477d85c77f462d995710346736 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundEndEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java b/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
index d869b20ec6b1bfa2eaf5aa5e8b3fbd835828a876..8a7cebfebd6e6ea494c2bf81be07361f71fab88c 100644
--- a/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
+++ b/src/main/java/de/thm/arsnova/events/PiRoundResetEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/SessionEvent.java b/src/main/java/de/thm/arsnova/events/SessionEvent.java
index fc393ddfb130ae78d4db3ac6a68c782f1693e7d2..ae85d3b10a9ced24feb6f3a84be2f639c9500ee2 100644
--- a/src/main/java/de/thm/arsnova/events/SessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/SessionEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Base class for all {@link ArsnovaEvent}s that are related to a session.
diff --git a/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java b/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
index 6ee65ef98104efdceced586b0a587f26cbb5b61a..17abf8c2dc96e8ab1edeb41da6b3c041bfb1deb7 100644
--- a/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/StatusSessionEvent.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.events;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever the status of a session changes, i.e., it is enabled or disabled.
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java b/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
index e5bc95e89b9e1a17d24475962d41525b1b89873c..7d545cd69be098fe2599ce41b1f889c58c44aba7 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockQuestionEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 /**
  * Fires whenever a content is enabled, i.e., it becomes visible to students.
diff --git a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java b/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
index 555349b43c71ab04974392687c1eec80ddd41459..f30a992df91dff375013754728461c268a84c688 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockQuestionsEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java b/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
index 109555edd236423a2c955c4598e88a86f70c88cc..1a2e875fdd1fb6556a3dfb6efec1802076402ef4 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockVoteEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.HashMap;
 import java.util.Map;
diff --git a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java b/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
index 83bd98bf145e589891565aff5b3b3724ba0f7d9c..c7df28fa48741f075c816aaf51609274ceeb8b16 100644
--- a/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
+++ b/src/main/java/de/thm/arsnova/events/UnlockVotesEvent.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.events;
 
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 import java.util.List;
 
diff --git a/src/main/java/de/thm/arsnova/persistance/SessionRepository.java b/src/main/java/de/thm/arsnova/persistance/SessionRepository.java
index 6d2b31f633dfee6564f4ad9a86632aa9de1a6ca5..1179b009a05d1c18245ad74c6cd12d53764eed4f 100644
--- a/src/main/java/de/thm/arsnova/persistance/SessionRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/SessionRepository.java
@@ -19,8 +19,8 @@ package de.thm.arsnova.persistance;
 
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.LoggedIn;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import org.springframework.data.repository.CrudRepository;
diff --git a/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java
index 5791280415b3c7379780d03c7799eb5c2892b6ad..4d8f729a00c2f6f444d1d517b1e2f12335ff1763 100644
--- a/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/SessionStatisticsRepository.java
@@ -1,7 +1,7 @@
 package de.thm.arsnova.persistance;
 
 import de.thm.arsnova.services.score.Score;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 
 public interface SessionStatisticsRepository {
 	Score getLearningProgress(Session session);
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java
index c5f6d05283a35a9a5c05adf197f400594a604d2c..0d55949d10a8113ec793a56d0a0f8f94a2337f32 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionRepository.java
@@ -20,8 +20,8 @@ package de.thm.arsnova.persistance.couchdb;
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.Comment;
 import de.thm.arsnova.entities.LoggedIn;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.VisitedSession;
 import de.thm.arsnova.entities.transport.ImportExportSession;
diff --git a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java
index e0c5f4927da1ad8b9ca33d3aaf6646411935698d..214c061b4a63a8f94fc2d9d8927c8520c3e4cf89 100644
--- a/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java
+++ b/src/main/java/de/thm/arsnova/persistance/couchdb/CouchDbSessionStatisticsRepository.java
@@ -2,7 +2,7 @@ package de.thm.arsnova.persistance.couchdb;
 
 import com.fasterxml.jackson.databind.JsonNode;
 import de.thm.arsnova.services.score.Score;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.persistance.SessionStatisticsRepository;
 import org.ektorp.ComplexKey;
 import org.ektorp.CouchDbConnector;
diff --git a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
index 965073a35ce04e89924a862277b40dee3e158793..ce58a78030318fa73c5a60f25304fc4d15f4c52b 100644
--- a/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
+++ b/src/main/java/de/thm/arsnova/security/ApplicationPermissionEvaluator.java
@@ -19,7 +19,7 @@ package de.thm.arsnova.security;
 
 import de.thm.arsnova.entities.Comment;
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.persistance.CommentRepository;
 import de.thm.arsnova.persistance.ContentRepository;
diff --git a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
index 0066191a7b9eb07812b2dc591ebe8a8525ad590d..4678aff6edafd222851d86e4e7cee1f958b45077 100644
--- a/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/CommentServiceImpl.java
@@ -2,7 +2,7 @@ package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Comment;
 import de.thm.arsnova.entities.CommentReadingCount;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.events.DeleteCommentEvent;
 import de.thm.arsnova.events.NewCommentEvent;
diff --git a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
index fc1d060fb60c3209391d66130b0c8eb73c3101fc..91311b0add77c237f1b554879427b6b5c5185b0b 100644
--- a/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/ContentServiceImpl.java
@@ -22,7 +22,7 @@ import de.thm.arsnova.persistance.LogEntryRepository;
 import de.thm.arsnova.util.ImageUtils;
 import de.thm.arsnova.entities.migration.v2.Answer;
 import de.thm.arsnova.entities.migration.v2.Content;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.events.*;
 import de.thm.arsnova.exceptions.BadRequestException;
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
index 25845d2ae9dfd30bdde805cab4f27be0daab11a2..169ca972263da04b8d361cc0e35670311a7c3561 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackServiceImpl.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.events.DeleteFeedbackForSessionsEvent;
 import de.thm.arsnova.events.NewFeedbackEvent;
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java b/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java
index 279f703e778036684eb9c965594f642ca55bd506..cd58398953091977836ebe701432d5142c26428f 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackStorageService.java
@@ -1,7 +1,7 @@
 package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 
 import java.util.List;
diff --git a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java b/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java
index cb72d608fb2b643d29c9c8933044cb52380a109d..88f2940c0fe9577eb8f6eac004dce7ce26019a38 100644
--- a/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/FeedbackStorageServiceImpl.java
@@ -18,7 +18,7 @@
 package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Feedback;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Isolation;
diff --git a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
index b0465a031028cddd6f3178ffe11f00bb46fde75a..0aaad4ba9039dd9e171fc92e1527f9255db5ee74 100644
--- a/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/MotdServiceImpl.java
@@ -19,7 +19,7 @@ package de.thm.arsnova.services;
 
 import de.thm.arsnova.entities.Motd;
 import de.thm.arsnova.entities.MotdList;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.exceptions.BadRequestException;
 import de.thm.arsnova.persistance.MotdListRepository;
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index 8b8f650405c0073bf9e40bead5b54199f14f4303..02bba48e839b034a79fef7f027b19184afeb252a 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -18,9 +18,9 @@
 package de.thm.arsnova.services;
 
 import de.thm.arsnova.connector.model.Course;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionFeature;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionFeature;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.ScoreStatistics;
diff --git a/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java
index d2a0ee6a1280277a324a18b020b768fc1b23a2c5..9442f510fd040de9635b5a6127f640b7526e39a5 100644
--- a/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/SessionServiceImpl.java
@@ -27,9 +27,9 @@ import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.services.score.ScoreCalculatorFactory;
 import de.thm.arsnova.services.score.ScoreCalculator;
 import de.thm.arsnova.entities.ScoreOptions;
-import de.thm.arsnova.entities.Session;
-import de.thm.arsnova.entities.SessionFeature;
-import de.thm.arsnova.entities.SessionInfo;
+import de.thm.arsnova.entities.migration.v2.Session;
+import de.thm.arsnova.entities.migration.v2.SessionFeature;
+import de.thm.arsnova.entities.migration.v2.SessionInfo;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ImportExportSession;
 import de.thm.arsnova.entities.transport.ScoreStatistics;
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionService.java b/src/main/java/de/thm/arsnova/services/UserSessionService.java
index 79ab4f84a8c7865a532153748dabd24addfcc91c..3ee83b7a67a3122aa6858c8117c0e81a61cd4489 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionService.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionService.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.services;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 
 import java.util.UUID;
diff --git a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
index da33beaadd8c0146a36558500471d9e91eeb2f70..8ae677d2df5d1cfa701bce88bf03caeab06662b5 100644
--- a/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
+++ b/src/main/java/de/thm/arsnova/services/UserSessionServiceImpl.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.services;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import org.springframework.context.annotation.Scope;
 import org.springframework.context.annotation.ScopedProxyMode;
diff --git a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java
index 25f53022dada8a33fb788ba813f013458fb06f56..f4c02c8ec93f9d27c2589b949e5799ea9fd6a0f7 100644
--- a/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/services/score/ScoreCalculator.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.services.score;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ScoreStatistics;
 
diff --git a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java b/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java
index f518ac6fec937f75095bb143d3e0341297a7f97c..19e45034a3ae46ffb245baac1411be071fa73357 100644
--- a/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java
+++ b/src/main/java/de/thm/arsnova/services/score/VariantScoreCalculator.java
@@ -17,7 +17,7 @@
  */
 package de.thm.arsnova.services.score;
 
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.entities.transport.ScoreStatistics;
 import de.thm.arsnova.persistance.SessionStatisticsRepository;
diff --git a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
index 9c3f88c206404a356ed6c57dfbaf4900072096ad..a343a7230316b432a797e467ace66d89393c8b1d 100644
--- a/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
+++ b/src/main/java/de/thm/arsnova/websocket/ArsnovaSocketioServerImpl.java
@@ -31,6 +31,7 @@ import com.corundumstudio.socketio.protocol.PacketType;
 import de.thm.arsnova.entities.Comment;
 import de.thm.arsnova.entities.ScoreOptions;
 import de.thm.arsnova.entities.User;
+import de.thm.arsnova.entities.migration.v2.SessionFeature;
 import de.thm.arsnova.events.*;
 import de.thm.arsnova.exceptions.NoContentException;
 import de.thm.arsnova.exceptions.NotFoundException;
@@ -149,7 +150,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 					return;
 				}
 				final String sessionKey = userService.getSessionByUsername(u.getUsername());
-				final de.thm.arsnova.entities.Session session = sessionService.getInternal(sessionKey, u);
+				final de.thm.arsnova.entities.migration.v2.Session session = sessionService.getInternal(sessionKey, u);
 
 				if (session.getFeedbackLock()) {
 					logger.debug("Feedback save blocked: {}", u, sessionKey, data.getValue());
@@ -230,7 +231,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 			public void onData(SocketIOClient client, ScoreOptions scoreOptions, AckRequest ack) {
 				final User user = userService.getUser2SocketId(client.getSessionId());
 				final String sessionKey = userService.getSessionByUsername(user.getUsername());
-				final de.thm.arsnova.entities.Session session = sessionService.getInternal(sessionKey, user);
+				final de.thm.arsnova.entities.migration.v2.Session session = sessionService.getInternal(sessionKey, user);
 				if (session.isCreator(user)) {
 					session.setLearningProgressOptions(scoreOptions);
 					sessionService.updateInternal(session, user);
@@ -334,9 +335,9 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		this.useSSL = useSSL;
 	}
 
-	public void reportDeletedFeedback(final User user, final Set<de.thm.arsnova.entities.Session> arsSessions) {
+	public void reportDeletedFeedback(final User user, final Set<de.thm.arsnova.entities.migration.v2.Session> arsSessions) {
 		final List<String> keywords = new ArrayList<>();
-		for (final de.thm.arsnova.entities.Session session : arsSessions) {
+		for (final de.thm.arsnova.entities.migration.v2.Session session : arsSessions) {
 			keywords.add(session.getKeyword());
 		}
 		this.sendToUser(user, "feedbackReset", keywords);
@@ -371,8 +372,8 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	 * relevant Socket.IO data, the client needs to know after joining a session.
 	 */
 	public void reportSessionDataToClient(final String sessionKey, final User user, final SocketIOClient client) {
-		final de.thm.arsnova.entities.Session session = sessionService.getInternal(sessionKey, user);
-		final de.thm.arsnova.entities.SessionFeature features = sessionService.getFeatures(sessionKey);
+		final de.thm.arsnova.entities.migration.v2.Session session = sessionService.getInternal(sessionKey, user);
+		final SessionFeature features = sessionService.getFeatures(sessionKey);
 
 		client.sendEvent("unansweredLecturerQuestions", contentService.getUnAnsweredLectureQuestionIds(sessionKey, user));
 		client.sendEvent("unansweredPreparationQuestions", contentService.getUnAnsweredPreparationQuestionIds(sessionKey, user));
@@ -397,7 +398,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		}
 	}
 
-	public void reportUpdatedFeedbackForSession(final de.thm.arsnova.entities.Session session) {
+	public void reportUpdatedFeedbackForSession(final de.thm.arsnova.entities.migration.v2.Session session) {
 		final de.thm.arsnova.entities.Feedback fb = feedbackService.getBySessionKey(session.getKeyword());
 		broadcastInSession(session.getKeyword(), "feedbackData", fb.getValues());
 		try {
@@ -408,7 +409,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		}
 	}
 
-	public void reportFeedbackForUserInSession(final de.thm.arsnova.entities.Session session, final User user) {
+	public void reportFeedbackForUserInSession(final de.thm.arsnova.entities.migration.v2.Session session, final User user) {
 		final de.thm.arsnova.entities.Feedback fb = feedbackService.getBySessionKey(session.getKeyword());
 		Long averageFeedback;
 		try {
@@ -435,16 +436,16 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		broadcastInSession(sessionKey, "activeUserCountData", count);
 	}
 
-	public void reportAnswersToLecturerQuestionAvailable(final de.thm.arsnova.entities.Session session, final Content content) {
+	public void reportAnswersToLecturerQuestionAvailable(final de.thm.arsnova.entities.migration.v2.Session session, final Content content) {
 		broadcastInSession(session.getKeyword(), "answersToLecQuestionAvail", content.get_id());
 	}
 
-	public void reportAudienceQuestionAvailable(final de.thm.arsnova.entities.Session session, final Comment audienceQuestion) {
+	public void reportAudienceQuestionAvailable(final de.thm.arsnova.entities.migration.v2.Session session, final Comment audienceQuestion) {
 		/* TODO role handling implementation, send this only to users with role lecturer */
 		broadcastInSession(session.getKeyword(), "audQuestionAvail", audienceQuestion.getId());
 	}
 
-	public void reportLecturerQuestionAvailable(final de.thm.arsnova.entities.Session session, final List<de.thm.arsnova.entities.migration.v2.Content> qs) {
+	public void reportLecturerQuestionAvailable(final de.thm.arsnova.entities.migration.v2.Session session, final List<de.thm.arsnova.entities.migration.v2.Content> qs) {
 		List<Content> contents = new ArrayList<>();
 		for (de.thm.arsnova.entities.migration.v2.Content q : qs) {
 			contents.add(new Content(q));
@@ -457,7 +458,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 		broadcastInSession(session.getKeyword(), "lecturerQuestionAvailable", contents);
 	}
 
-	public void reportLecturerQuestionsLocked(final de.thm.arsnova.entities.Session session, final List<de.thm.arsnova.entities.migration.v2.Content> qs) {
+	public void reportLecturerQuestionsLocked(final de.thm.arsnova.entities.migration.v2.Session session, final List<de.thm.arsnova.entities.migration.v2.Content> qs) {
 		List<Content> contents = new ArrayList<>();
 		for (de.thm.arsnova.entities.migration.v2.Content q : qs) {
 			contents.add(new Content(q));
@@ -607,7 +608,7 @@ public class ArsnovaSocketioServerImpl implements ArsnovaSocketioServer, Arsnova
 	@Override
 	public void visit(FeatureChangeEvent event) {
 		final String sessionKey = event.getSession().getKeyword();
-		final de.thm.arsnova.entities.SessionFeature features = event.getSession().getFeatures();
+		final SessionFeature features = event.getSession().getFeatures();
 		broadcastInSession(sessionKey, "featureChange", features);
 
 		if (features.isFlashcard() || features.isFlashcardFeature()) {
diff --git a/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java b/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java
index a7708c9eed3eb0f5cb03b89effae4b44082bb63e..7fff5e143293c248efa3ee03050db59e999946ad 100644
--- a/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java
+++ b/src/test/java/de/thm/arsnova/services/DefaultEntityServiceImplTest.java
@@ -5,7 +5,7 @@ import de.thm.arsnova.config.AppConfig;
 import de.thm.arsnova.config.TestAppConfig;
 import de.thm.arsnova.config.TestPersistanceConfig;
 import de.thm.arsnova.config.TestSecurityConfig;
-import de.thm.arsnova.entities.Session;
+import de.thm.arsnova.entities.migration.v2.Session;
 import de.thm.arsnova.persistance.SessionRepository;
 import org.junit.Test;
 import org.junit.runner.RunWith;