diff --git a/src/main/java/de/thm/arsnova/controller/SessionController.java b/src/main/java/de/thm/arsnova/controller/SessionController.java
index 4e437984e87e065f30a90508372589609abada0c..e68886e9275760d9939ae0fb2b03a28eb224d9b5 100644
--- a/src/main/java/de/thm/arsnova/controller/SessionController.java
+++ b/src/main/java/de/thm/arsnova/controller/SessionController.java
@@ -39,6 +39,7 @@ import org.springframework.web.bind.annotation.ResponseStatus;
 
 import de.thm.arsnova.connector.model.Course;
 import de.thm.arsnova.entities.LoggedIn;
+import de.thm.arsnova.entities.Question;
 import de.thm.arsnova.entities.Session;
 import de.thm.arsnova.entities.User;
 import de.thm.arsnova.services.ISessionService;
@@ -159,6 +160,20 @@ public class SessionController extends AbstractController {
 
 		return sessions;
 	}
+	
+	@RequestMapping(value = "/{sessionkey}/lock", method = RequestMethod.POST)
+	@ResponseBody
+	public final Session lockSession(
+			@PathVariable final String sessionkey,
+			@RequestParam(required = false) final Boolean lock,
+			final HttpServletResponse response
+	) {
+		if (lock != null) {
+			return this.sessionService.setActive(sessionkey, lock);
+		}
+		response.setStatus(HttpStatus.NOT_FOUND.value());
+		return null;
+	}
 
 	/* internal redirections */
 
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index b3e53fea94d8dc048bb6cec229da30f47d5409b1..3f7b6a492cfaab6f65d16fb86b6408b864b422c6 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -1421,4 +1421,18 @@ public class CouchDBDao implements IDatabaseDao {
 			return query.toString();
 		}
 	}
+
+	@Override
+	public Session lockSession(Session session, Boolean lock) {
+		try {
+			Document s = this.database.getDocument(session.get_id());
+			s.put("active", lock);
+			this.database.saveDocument(s);
+			session.set_rev(s.getRev());
+			return session;
+		} catch (IOException e) {
+			LOGGER.error("Could not lock session {}", session);
+		}
+		return null;
+	}
 }
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 1968ce84b3d0351a59075ed94e183d42defda7d7..9b4905f0f74182ae1efd72a299efffd55fd1c311 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -131,4 +131,6 @@ public interface IDatabaseDao {
 	void deleteInterposedQuestion(InterposedQuestion question);
 
 	List<Session> getCourseSessions(List<Course> courses);
+
+	Session lockSession(Session session, Boolean lock);
 }
diff --git a/src/main/java/de/thm/arsnova/services/ISessionService.java b/src/main/java/de/thm/arsnova/services/ISessionService.java
index 17ebdef324d22f4e7a92d888e6927ec0e93498c2..acea01b72befa875a6c259dc85d8ae7ab08946bb 100644
--- a/src/main/java/de/thm/arsnova/services/ISessionService.java
+++ b/src/main/java/de/thm/arsnova/services/ISessionService.java
@@ -44,4 +44,6 @@ public interface ISessionService {
 	int countActiveUsers(String sessionkey);
 
 	int countSessions(List<Course> courses);
+
+	Session setActive(String sessionkey, Boolean lock);
 }
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index d61533588469e85dd3f539f4b660b1cd42e3a7fd..a568c205f769714702e9f81420de2c623842fd9f 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -183,4 +183,10 @@ public class SessionService implements ISessionService {
 		}
 		return sessions.size();
 	}
+
+	@Override
+	public Session setActive(String sessionkey, Boolean lock) {
+		Session session = databaseDao.getSessionFromKeyword(sessionkey);
+		return databaseDao.lockSession(session, lock);
+	}
 }