diff --git a/src/main/java/org/olat/course/run/RunMainController.java b/src/main/java/org/olat/course/run/RunMainController.java
index 0d6efd18656106946c9f9516cc08a73c0fa1aefc..c70410e55d172379526c66883ee78d009d2eaecb 100644
--- a/src/main/java/org/olat/course/run/RunMainController.java
+++ b/src/main/java/org/olat/course/run/RunMainController.java
@@ -1094,7 +1094,7 @@ public class RunMainController extends MainLayoutBasicController implements Gene
 		// 1) administrative tools
 		if (isCourseAdmin || isCourseCoach || hasCourseRight(CourseRights.RIGHT_COURSEEDITOR)
 				|| hasCourseRight(CourseRights.RIGHT_GROUPMANAGEMENT) || hasCourseRight(CourseRights.RIGHT_ARCHIVING)
-				|| hasCourseRight(CourseRights.RIGHT_ASSESSMENT) || hasCourseRight(CourseRights.RIGHT_DB)
+				|| hasCourseRight(CourseRights.RIGHT_STATISTICS) || hasCourseRight(CourseRights.RIGHT_DB)
 				|| hasCourseRight(CourseRights.RIGHT_ASSESSMENT)) {
 			myTool.addHeader(translate("header.tools"));
 			if (hasCourseRight(CourseRights.RIGHT_COURSEEDITOR) || isCourseAdmin) {
diff --git a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java
index b46f93573b29dca446cf3a566b9414489b30a154..67c85d7c4b2975e7c2f286ef2d7cc6116914ee16 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java
@@ -194,10 +194,10 @@ public class BusinessGroupDAO {
 		
 		StringBuilder sb = new StringBuilder();
 		sb.append("select bgi from ").append(BusinessGroupImpl.class.getName()).append(" bgi ")
-			.append(" left join fetch bgi.ownerGroup ownerGroup")
-			.append(" left join fetch bgi.partipiciantGroup participantGroup")
-			.append(" left join fetch bgi.waitingGroup waitingGroup")
-			.append(" left join fetch bgi.resource resource")
+			.append(" inner join fetch bgi.ownerGroup ownerGroup")
+			.append(" inner join fetch bgi.partipiciantGroup participantGroup")
+			.append(" inner join fetch bgi.waitingGroup waitingGroup")
+			.append(" inner join fetch bgi.resource resource")
 			.append(" where bgi.key=:key");
 		
 		return em.createQuery(sb.toString(), BusinessGroup.class)
diff --git a/src/main/java/org/olat/modules/fo/restapi/MessageVO.java b/src/main/java/org/olat/modules/fo/restapi/MessageVO.java
index 7bccc8b37d8095704ea69db25cc3e55bb3a06346..f632b73915cbf9bc1d747bfb5237f25e0d5b17f1 100644
--- a/src/main/java/org/olat/modules/fo/restapi/MessageVO.java
+++ b/src/main/java/org/olat/modules/fo/restapi/MessageVO.java
@@ -27,6 +27,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import org.olat.core.id.Identity;
 import org.olat.core.id.UserConstants;
 import org.olat.modules.fo.Message;
+import org.olat.modules.fo.Status;
 import org.olat.restapi.support.vo.FileVO;
 
 /**
@@ -50,6 +51,7 @@ public class MessageVO {
 	private Long modifierKey;
 	private String modifier;
 	private String modifierName;
+	private Boolean sticky;
 	
 	private String title;
 	private String body;
@@ -81,6 +83,9 @@ public class MessageVO {
 		forumKey = message.getForum().getKey();
 		title = message.getTitle();
 		body = message.getBody();
+		
+		Status messageStatus = Status.getStatus(message.getStatusCode());
+		sticky = new Boolean(messageStatus.isSticky());
 	}
 
 	public Long getKey() {
@@ -155,6 +160,14 @@ public class MessageVO {
 		this.modifierName = modifierName;
 	}
 
+	public Boolean getSticky() {
+		return sticky;
+	}
+
+	public void setSticky(Boolean sticky) {
+		this.sticky = sticky;
+	}
+
 	public String getTitle() {
 		return title;
 	}
diff --git a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java
index 70c2810bd2f4c98047fd6cc931f71ac9897ae604..3add0ca08047acd28aee63eee2ce194610bd7a7b 100644
--- a/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java
+++ b/src/main/java/org/olat/restapi/security/RestApiLoginFilter.java
@@ -135,9 +135,7 @@ public class RestApiLoginFilter implements Filter {
 				ThreadLocalUserActivityLoggerInstaller.resetUserActivityLogger();
 				I18nManager.remove18nInfoFromThread();
 				Tracing.setUreq(null);
-				
-				DBFactory.getInstance().commit();
-				DBFactory.getInstance().closeSession();
+				DBFactory.getInstance().commitAndCloseSession();
 			}
 		} else {
 			throw new ServletException("Only accept HTTP Request");
diff --git a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
index 7d54a02ba3a8ccac8eb7fc527192ff28f1ebfd66..c03c487e610ea83ec335ec1fbf74d899144714ee 100644
--- a/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
+++ b/src/test/java/org/olat/restapi/CourseGroupMgmtTest.java
@@ -47,6 +47,7 @@ import org.apache.http.client.methods.HttpDelete;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpPut;
+import org.apache.http.util.EntityUtils;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.type.TypeReference;
 import org.junit.After;
@@ -241,7 +242,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 		HttpPost method = conn.createPost(request, MediaType.APPLICATION_JSON, true);
 		conn.addJsonEntity(method, vo);
 		HttpResponse response = conn.execute(method);
-		
+		EntityUtils.consume(response.getEntity());
 		assertTrue(response.getStatusLine().getStatusCode() == 200 || response.getStatusLine().getStatusCode() == 201);
 		
     BusinessGroup bg = businessGroupService.loadBusinessGroup(g1.getKey());
@@ -258,7 +259,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 		URI request = UriBuilder.fromUri(getContextURI()).path("/repo/courses/" + courseRepoEntry.getResourceableId() + "/groups/" + g1.getKey()).build();
 		HttpDelete method = conn.createDelete(request, MediaType.APPLICATION_JSON, true);
 		HttpResponse response = conn.execute(method);
-		
+		EntityUtils.consume(response.getEntity());
 		assertEquals(200, response.getStatusLine().getStatusCode());
 		
     BusinessGroup bg = businessGroupService.loadBusinessGroup(g1.getKey());
@@ -272,6 +273,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 		URI request = UriBuilder.fromUri(getContextURI()).path("/repo/courses/" + courseRepoEntry.getResourceableId() + "/groups/" + g2.getKey()).build();
 		HttpDelete method = conn.createDelete(request, MediaType.APPLICATION_JSON, true);
 		HttpResponse response = conn.execute(method);
+		EntityUtils.consume(response.getEntity());
 		
 		assertEquals(401, response.getStatusLine().getStatusCode());
 	}
@@ -291,6 +293,7 @@ public class CourseGroupMgmtTest extends OlatJerseyTestCase {
 		conn.addJsonEntity(method, vo);
 		
 		HttpResponse response = conn.execute(method);
+		EntityUtils.consume(response.getEntity());
 		assertEquals(401, response.getStatusLine().getStatusCode());
 	}