diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
index 99129020cd46bffa7a4185ad24dc675579535c62..5253f69be8e56a71d9d3843190df94f6f0fee68b 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/AbstractServer.java
@@ -274,7 +274,7 @@ public abstract class AbstractServer<T> extends AbstractServiceWithLogger<T> imp
             if (systemUser.getRoleAssignments().isEmpty())
             {
                 final RoleAssignmentPE roleAssignment =
-                        createInstanceAdminRoleAssigment(systemUser, systemUser);
+                        createInstanceAdminRoleAssigment(systemUser, person);
                 daoFactory.getRoleAssignmentDAO().createRoleAssignment(roleAssignment);
             }
         }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
index 3249a9f0a8b8051ddc04705a9de9bd5d41373dfc..a87d57294e1624e6eb5b2abc27dc5aa67bcc21b7 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/generic/server/CommonServerTest.java
@@ -20,11 +20,8 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
-import java.util.Set;
 
 import org.apache.commons.lang.builder.EqualsBuilder;
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
 import org.hamcrest.core.IsEqual;
 import org.jmock.Expectations;
 import org.springframework.dao.DataIntegrityViolationException;
@@ -209,20 +206,15 @@ public final class CommonServerTest extends AbstractServerTestCase
                     person.setDisplaySettings(systemPerson.getDisplaySettings());
 
                     one(personDAO).createPerson(with(new PersonWithDisplaySettingsMatcher(person)));
-                    one(personDAO).updatePerson(with(new BaseMatcher<PersonPE>()
-                        {
-                            public boolean matches(Object item)
-                            {
-                                Set<RoleAssignmentPE> roles = ((PersonPE) item).getAllPersonRoles();
-                                return roles.size() == 1
-                                        && roles.iterator().next().getRole().equals(RoleCode.ADMIN);
-                            }
-
-                            public void describeTo(Description description)
-                            {
-                                description.appendValue(person);
-                            }
-                        }));
+
+                    // assign instance admin role
+                    final RoleAssignmentPE roleAssignmentPE = new RoleAssignmentPE();
+                    roleAssignmentPE.setDatabaseInstance(daoFactory.getHomeDatabaseInstance());
+                    roleAssignmentPE.setRegistrator(systemPerson);
+                    roleAssignmentPE.setRole(RoleCode.ADMIN);
+                    person.addRoleAssignment(roleAssignmentPE);
+
+                    one(roleAssignmentDAO).createRoleAssignment(with(roleAssignmentPE));
                 }
             });