diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java
index bd5f6a3baf429b79a6888aa3b1c460d8d872cef4..22cb0061572b9bfce899602b17bf833b0b67ff6c 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AuthorizationGroupBO.java
@@ -128,6 +128,11 @@ public class AuthorizationGroupBO extends AbstractBusinessObject implements IAut
         String code = authorizationGroup.getCode();
         try
         {
+            PersonPE[] persons = authorizationGroup.getPersons().toArray(new PersonPE[0]);
+            for (PersonPE personPE : persons)
+            {
+                authorizationGroup.removePerson(personPE);
+            }
             getAuthorizationGroupDAO().delete(authorizationGroup);
             getEventDAO().persist(createDeletionEvent(code, session.tryGetPerson(), reason));
         } catch (final DataAccessException ex)
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
index 9daf0db17a038ceb014d8788dcb5fde997fcbeb0..3aa5c1b0791c931c038dde43799d44d92ff7a358 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/CommonServerTest.java
@@ -19,19 +19,24 @@ package ch.systemsx.cisd.openbis.systemtest;
 import static org.testng.AssertJUnit.assertEquals;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.collections.Predicate;
 import org.testng.annotations.Test;
 
 import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Attachment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AuthorizationGroup;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ContainerDataSet;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityTypePropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
+import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewAuthorizationGroup;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 
 /**
@@ -40,6 +45,39 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
 public class CommonServerTest extends SystemTestCase
 {
 
+    @Test
+    public void testDeleteGroupWithPersons()
+    {
+        String groupCode = "AUTHORIZATION_TEST_GROUP";
+        String sessionToken = authenticateAs("test");
+
+        // 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 user to the group
+        commonServer.addPersonsToAuthorizationGroup(sessionToken, authorizationGroupTechId, Arrays.asList("test_space", "test_role", "test"));
+
+        commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason");
+    }
+
+    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);
+                }
+
+            });
+    }
+
     @Test
     public void testGetSampleWithAssignedPropertyTypesAndProperties()
     {
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 3256f13712df9948f50489523c4f12bb7f806737..1b9f49e13237421a37b05972dfd50ee6a72fb449 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/SessionUpdateTest.java
@@ -87,8 +87,8 @@ public class SessionUpdateTest extends SystemTestCase
         assertUserCantAccessSpace(sessionTokenUser, "TESTGROUP");
 
         // cleanup
-        commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason");
 
+        commonServer.deleteAuthorizationGroups(sessionToken, Arrays.asList(authorizationGroupTechId), "no reason");
     }
 
     @Test