diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index f4a24c6d8a1157a1e9b722f3f09e0447e83da19c..199a165e9be69fc3f0c5fc9782f8130abdf820f0 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -432,6 +432,7 @@ public class CouchDBDao implements IDatabaseDao, ApplicationEventPublisherAware
 	}
 
 	@Override
+        @Cacheable("sessions")
 	public Session getSessionFromKeyword(final String keyword) {
 		final NovaView view = new NovaView("session/by_keyword");
 		view.setKey(keyword);
diff --git a/src/main/java/de/thm/arsnova/services/SessionService.java b/src/main/java/de/thm/arsnova/services/SessionService.java
index b404910b3fb1efd7fae1b3f0cb8756f3adac7e1e..170c19c1146dacf348785b9a9a79e12ef32052b3 100644
--- a/src/main/java/de/thm/arsnova/services/SessionService.java
+++ b/src/main/java/de/thm/arsnova/services/SessionService.java
@@ -313,7 +313,41 @@ public class SessionService implements ISessionService, ApplicationEventPublishe
 	@Override
 	@PreAuthorize("isAuthenticated() and hasPermission(#session, 'owner')")
 	public Session updateSession(final String sessionkey, final Session session) {
-		return databaseDao.updateSession(session);
+                final Session existingSession = databaseDao.getSessionFromKeyword(sessionkey);
+                
+                existingSession.setActive(session.isActive());
+                existingSession.setShortName(session.getShortName());
+                existingSession.setPpAuthorName(session.getPpAuthorName());
+                existingSession.setPpAuthorMail(session.getPpAuthorMail());
+                existingSession.setShortName(session.getShortName());
+                existingSession.setPpAuthorName(session.getPpAuthorName());
+                existingSession.setPpFaculty(session.getPpFaculty());
+                existingSession.setName(session.getName());
+                existingSession.setPpUniversity(session.getPpUniversity());
+                existingSession.setPpDescription(session.getPpDescription());
+                existingSession.setPpLevel(session.getPpLevel());
+                existingSession.setPpLicense(session.getPpLicense());
+                existingSession.setPpSubject(session.getPpSubject());
+                  
+                if (session.getPpLogo() != null) {
+			if (session.getPpLogo().startsWith("http")) {
+				final String base64ImageString = imageUtils.encodeImageToString(session.getPpLogo());
+				if (base64ImageString == null) {
+					throw new BadRequestException();
+				}
+				existingSession.setPpLogo(base64ImageString);
+			} else {
+                            existingSession.setPpLogo(session.getPpLogo());
+                        }
+			// base64 adds offset to filesize, formula taken from: http://en.wikipedia.org/wiki/Base64#MIME
+			final int fileSize = (int) ((existingSession.getPpLogo().length() - 814) / 1.37);
+			if (fileSize > uploadFileSizeByte) {
+				LOGGER.error("Could not save file. File is too large with " + fileSize + " Byte.");
+				throw new PayloadTooLargeException();
+			}
+		}
+                
+		return databaseDao.updateSession(existingSession);
 	}
 
 	/*