diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SessionsUpdateInterceptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SessionsUpdateInterceptor.java
index 4df0b1f4efe210e3b2fe36054dbcb0564b312281..ff867432c9ef48a431795333b62da29c8edcdd2f 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SessionsUpdateInterceptor.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/SessionsUpdateInterceptor.java
@@ -24,6 +24,7 @@ import org.hibernate.type.Type;
 
 import ch.systemsx.cisd.openbis.generic.server.dataaccess.IDAOFactory;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ServiceVersionHolder;
+import ch.systemsx.cisd.openbis.generic.shared.dto.AuthorizationGroupPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.RoleAssignmentPE;
 import ch.systemsx.cisd.openbis.generic.shared.dto.SpacePE;
 
@@ -49,27 +50,27 @@ public class SessionsUpdateInterceptor extends EmptyInterceptor
     @Override
     public boolean onFlushDirty(Object entity, Serializable id, Object[] currentState, Object[] previousState, String[] propertyNames, Type[] types)
     {
-        checkRoleAssignment(entity);
+        checkAuthorizationEntity(entity);
         return false;
     }
 
     @Override
     public void onDelete(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types)
     {
-        checkRoleAssignment(entity);
+        checkAuthorizationEntity(entity);
         checkSpace(entity);
     }
 
     @Override
     public boolean onSave(Object entity, Serializable id, Object[] state, String[] propertyNames, Type[] types)
     {
-        checkRoleAssignment(entity);
+        checkAuthorizationEntity(entity);
         return false;
     }
 
-    private void checkRoleAssignment(Object entity)
+    private void checkAuthorizationEntity(Object entity)
     {
-        if (entity instanceof RoleAssignmentPE)
+        if (entity instanceof RoleAssignmentPE || entity instanceof AuthorizationGroupPE)
         {
             sessionsUpdateNeeded = true;
         }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java
index 74c61c5b9952628f3a572f281a16ee472b5bc62e..3256f13712df9948f50489523c4f12bb7f806737 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java
@@ -22,18 +22,19 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import junit.framework.Assert;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.collections.Predicate;
 import org.springframework.transaction.annotation.Propagation;
 import org.springframework.transaction.annotation.Transactional;
+import org.testng.AssertJUnit;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AuthorizationGroup;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ColumnSetting;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Grantee;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAuthorizationGroup;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.RoleWithHierarchy.RoleCode;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.displaysettings.ColumnDisplaySettingsUpdate;
@@ -48,21 +49,61 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SpaceIdentifier;
 public class SessionUpdateTest extends SystemTestCase
 {
 
+    private static final String TEST_SPACE_USER = "test_space";
+
     private static final String ADMIN = "test";
 
+    @Test
+    public void testAuthorizationGroupModificationsAreVisible()
+    {
+        String groupCode = "AUTHORIZATION_TEST_GROUP";
+
+        String sessionToken = authenticateAs(ADMIN);
+        String sessionTokenUser = authenticateAs(TEST_SPACE_USER);
+
+        // create a group
+
+        NewAuthorizationGroup newGroup = new NewAuthorizationGroup();
+        newGroup.setCode(groupCode);
+        commonServer.registerAuthorizationGroup(sessionToken, newGroup);
+        List<AuthorizationGroup> groups = commonServer.listAuthorizationGroups(sessionToken);
+        TechId authorizationGroupTechId = new TechId(findAuthorizationGroup(groups, groupCode).getId());
+
+        // add authorization to the group
+        commonServer.registerSpaceRole(sessionToken, RoleCode.ADMIN, new SpaceIdentifier("TESTGROUP"),
+                Grantee.createAuthorizationGroup(groupCode));
+
+        // add user to the group
+        commonServer.addPersonsToAuthorizationGroup(sessionToken, authorizationGroupTechId, Arrays.asList(TEST_SPACE_USER));
+
+        // check the user sees space
+
+        assertUserCanAccessSpace(sessionTokenUser, "TESTGROUP");
+
+        // remove the group
+        commonServer.removePersonsFromAuthorizationGroup(sessionToken, authorizationGroupTechId, Arrays.asList(TEST_SPACE_USER));
+
+        // check user doesnt see space
+        assertUserCantAccessSpace(sessionTokenUser, "TESTGROUP");
+
+        // cleanup
+        commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason");
+
+    }
+
     @Test
     public void testCreateSpaceForUserAndAssignIdenticalRoleFailsWithNoSideeffect()
     {
         String sessionToken = authenticateAs(ADMIN);
-        String sessionTokenUser = authenticateAs("test_space");
+        String sessionTokenUser = authenticateAs(TEST_SPACE_USER);
 
         commonServer.tryGetSession(sessionTokenUser);
 
         String spaceIdentifier = new SpaceIdentifier("TEST_SPACE_1").toString();
 
         AtomicEntityOperationDetails eo =
-                new EntityOperationBuilder().user(ADMIN).space("TEST_SPACE_1", "test_space").
-                        assignRoleToSpace(RoleCode.ADMIN, spaceIdentifier, Arrays.asList("test_space"), null).create();
+                new EntityOperationBuilder().user(ADMIN).space("TEST_SPACE_1", TEST_SPACE_USER).
+                        assignRoleToSpace(RoleCode.ADMIN, spaceIdentifier, Arrays.asList(TEST_SPACE_USER), null).create();
 
         try
         {
@@ -85,11 +126,11 @@ public class SessionUpdateTest extends SystemTestCase
         // reproduce
 
         AtomicEntityOperationDetails eo =
-                new EntityOperationBuilder().user(ADMIN).space("TEST_SPACE_1", "test_space").create();
+                new EntityOperationBuilder().user(ADMIN).space("TEST_SPACE_1", TEST_SPACE_USER).create();
 
         etlService.performEntityOperations(sessionTokenForInstanceAdmin, eo);
 
-        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate("test_space", "a").getSessionToken();
+        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate(TEST_SPACE_USER, "a").getSessionToken();
 
         List<Space> spaces = commonServer.listSpaces(sessionTokenForSpaceAdmin, DatabaseInstanceIdentifier.HOME_INSTANCE);
         Space space = findSpace(spaces, "TEST_SPACE_1");
@@ -104,18 +145,18 @@ public class SessionUpdateTest extends SystemTestCase
     public void testRoleAssingmentDeleted()
     {
         String sessionTokenForInstanceAdmin = commonServer.tryAuthenticate("test", "a").getSessionToken();
-        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate("test_space", "a").getSessionToken();
+        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate(TEST_SPACE_USER, "a").getSessionToken();
 
         // reproduce
 
         commonServer.deleteSpaceRole(sessionTokenForInstanceAdmin, RoleCode.ADMIN,
-                new SpaceIdentifier("TEST-SPACE"), Grantee.createPerson("test_space"));
+                new SpaceIdentifier("TEST-SPACE"), Grantee.createPerson(TEST_SPACE_USER));
 
         commonServer.updateDisplaySettings(sessionTokenForSpaceAdmin,
                 new ColumnDisplaySettingsUpdate("id_a_b_C", Collections.<ColumnSetting> emptyList()));
         // clean up
         commonServer.registerSpaceRole(sessionTokenForInstanceAdmin, RoleCode.ADMIN,
-                new SpaceIdentifier("TEST-SPACE"), Grantee.createPerson("test_space"));
+                new SpaceIdentifier("TEST-SPACE"), Grantee.createPerson(TEST_SPACE_USER));
     }
 
     @Test
@@ -124,26 +165,40 @@ public class SessionUpdateTest extends SystemTestCase
         String spaceCode = "TESTGROUP";
 
         String sessionTokenForInstanceAdmin = commonServer.tryAuthenticate("test", "a").getSessionToken();
-        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate("test_space", "a").getSessionToken();
+        String sessionTokenForSpaceAdmin = commonServer.tryAuthenticate(TEST_SPACE_USER, "a").getSessionToken();
 
         List<Space> spaces = commonServer.listSpaces(sessionTokenForSpaceAdmin, DatabaseInstanceIdentifier.createHome());
         boolean matchingSpaces = containsSpace(spaces, spaceCode);
-        Assert.assertFalse(spaceCode + " should not be in test_space user groups before the role assignment" + spaces, matchingSpaces);
+        AssertJUnit.assertFalse(spaceCode + " should not be in test_space user groups before the role assignment" + spaces, matchingSpaces);
 
         commonServer.registerSpaceRole(sessionTokenForInstanceAdmin, RoleCode.ADMIN,
-                new SpaceIdentifier(spaceCode), Grantee.createPerson("test_space"));
+                new SpaceIdentifier(spaceCode), Grantee.createPerson(TEST_SPACE_USER));
 
         spaces = commonServer.listSpaces(sessionTokenForSpaceAdmin, DatabaseInstanceIdentifier.createHome());
         matchingSpaces = containsSpace(spaces, spaceCode);
-        Assert.assertTrue("Couldn't find " + spaceCode + " space in spaces of test_space user. Found only " + spaces, matchingSpaces);
+        AssertJUnit.assertTrue("Couldn't find " + spaceCode + " space in spaces of test_space user. Found only " + spaces, matchingSpaces);
 
         // cleanup
 
         commonServer.deleteSpaceRole(sessionTokenForInstanceAdmin, RoleCode.ADMIN,
-                new SpaceIdentifier(spaceCode), Grantee.createPerson("test_space"));
+                new SpaceIdentifier(spaceCode), Grantee.createPerson(TEST_SPACE_USER));
 
     }
 
+    void assertUserCanAccessSpace(String sessionToken, String spaceCode)
+    {
+        List<Space> spaces = commonServer.listSpaces(sessionToken, DatabaseInstanceIdentifier.HOME_INSTANCE);
+        boolean foundSpace = containsSpace(spaces, spaceCode);
+        AssertJUnit.assertTrue(spaceCode + " should be in test_space user." + spaces, foundSpace);
+    }
+
+    void assertUserCantAccessSpace(String sessionToken, String spaceCode)
+    {
+        List<Space> spaces = commonServer.listSpaces(sessionToken, DatabaseInstanceIdentifier.HOME_INSTANCE);
+        boolean foundSpace = containsSpace(spaces, spaceCode);
+        AssertJUnit.assertFalse(spaceCode + " should not be in test_space user." + spaces, foundSpace);
+    }
+
     private boolean containsSpace(List<Space> spaces, final String spaceCode)
     {
         int matchingSpaces = CollectionUtils.countMatches(spaces, new Predicate<Space>()
@@ -171,4 +226,17 @@ public class SessionUpdateTest extends SystemTestCase
             });
     }
 
+    private AuthorizationGroup findAuthorizationGroup(List<AuthorizationGroup> spaces, final String spaceCode)
+    {
+        return CollectionUtils.find(spaces, new Predicate<AuthorizationGroup>()
+            {
+                @Override
+                public boolean evaluate(AuthorizationGroup object)
+                {
+                    return object.getCode().equals(spaceCode);
+                }
+
+            });
+    }
+
 }