diff --git a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/UpdateSampleProjectExecutor.java b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/UpdateSampleProjectExecutor.java
index abf213c0bac031bcd2b455e56252c38f59bb397a..1f307682b7874b807858c85042488cc605287643 100644
--- a/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/UpdateSampleProjectExecutor.java
+++ b/server-application-server/source/java/ch/ethz/sis/openbis/generic/server/asapi/v3/executor/sample/UpdateSampleProjectExecutor.java
@@ -98,7 +98,7 @@ public class UpdateSampleProjectExecutor extends AbstractUpdateEntityToOneRelati
             relationshipService.unassignSampleFromProject(context.getSession(), entity);
         } else
         {
-            relationshipService.assignSampleToProject(context.getSession(), entity, related);
+            relationshipService.reassignSampleToProject(context.getSession(), entity, related);
         }
     }
 
diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
index 36dcaf5c7ad941c14a70c0cc35639d38a6bb2de7..f4cb21cbdeeaa58bf1744f5760c97508f78ea575 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/IRelationshipService.java
@@ -54,12 +54,19 @@ public interface IRelationshipService
             @AuthorizationGuard(guardClass = ProjectPEPredicate.class) ProjectPE project);
 
     @Transactional(propagation = Propagation.MANDATORY)
-    @RolesAllowed(value = { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.PROJECT_POWER_USER })
+    @RolesAllowed(value = { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.PROJECT_USER })
     @Capability("ASSIGN_SAMPLE_TO_PROJECT")
     public void assignSampleToProject(IAuthSession session,
             @AuthorizationGuard(guardClass = SamplePEPredicate.class) SamplePE sample,
             @AuthorizationGuard(guardClass = ProjectPEPredicate.class) ProjectPE project);
 
+    @Transactional(propagation = Propagation.MANDATORY)
+    @RolesAllowed(value = { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.PROJECT_POWER_USER })
+    @Capability("REASSIGN_SAMPLE_TO_PROJECT")
+    public void reassignSampleToProject(IAuthSession session,
+            @AuthorizationGuard(guardClass = SamplePEPredicate.class) SamplePE sample,
+            @AuthorizationGuard(guardClass = ProjectPEPredicate.class) ProjectPE project);
+
     @Transactional(propagation = Propagation.MANDATORY)
     @RolesAllowed(value = { RoleWithHierarchy.SPACE_ETL_SERVER, RoleWithHierarchy.SPACE_POWER_USER })
     @Capability("ASSIGN_PROJECT_TO_SPACE")
diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
index 22b2a62b7c6169af77943bcd09a4a0c7bfe6df70..84a5effaa9ed175d209fa8e478a4df36d643d90d 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/RelationshipService.java
@@ -97,6 +97,11 @@ public class RelationshipService implements IRelationshipService, ApplicationCon
 
     @Override
     public void assignSampleToProject(IAuthSession session, SamplePE sample, ProjectPE project)
+    {
+        reassignSampleToProject(session, sample, project);
+    }
+
+    @Override public void reassignSampleToProject(final IAuthSession session, final SamplePE sample, final ProjectPE project)
     {
         if (SamplePE.projectSamplesEnabled)
         {
diff --git a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java
index 55bd2616071c259179279b63c139588f00a7a6d5..78eb2d9ede901e00d4f7d4f9034ad724db6bda78 100644
--- a/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java
+++ b/server-application-server/source/java/ch/systemsx/cisd/openbis/generic/server/business/bo/AbstractBusinessObject.java
@@ -879,7 +879,7 @@ abstract class AbstractBusinessObject implements IDAOFactory
     {
         if (project != null)
         {
-            relationshipService.assignSampleToProject(session, sample, project);
+            relationshipService.reassignSampleToProject(session, sample, project);
         } else
         {
             relationshipService.unassignSampleFromProject(session, sample);
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java
index bb37145279f8760dd1d09d0d37efe549ba45d447..de4705babc4ca047cc0495429adf490d4b21dd4c 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/AbstractTest.java
@@ -1906,10 +1906,10 @@ public class AbstractTest extends SystemTestCase
         final TestWithUserRoleParams params = new TestWithUserRoleParams();
         params.adminSessionToken = adminSessionToken;
         params.userSessionToken = userSessionToken;
-        params.roleSpace1Id = space1Id;
-        params.roleSpace2Id = space2Id;
-        params.roleSpace1Project1Id = space1Project1Id;
-        params.roleSpace1Project2Id = space1Project2Id;
+        params.space1Id = space1Id;
+        params.space2Id = space2Id;
+        params.space1Project1Id = space1Project1Id;
+        params.space1Project2Id = space1Project2Id;
 
         action.execute(params);
     }
@@ -1920,13 +1920,13 @@ public class AbstractTest extends SystemTestCase
 
         public String userSessionToken;
 
-        public ISpaceId roleSpace1Id;
+        public ISpaceId space1Id;
 
-        public ISpaceId roleSpace2Id;
+        public ISpaceId space2Id;
 
-        public IProjectId roleSpace1Project1Id;
+        public IProjectId space1Project1Id;
 
-        public IProjectId roleSpace1Project2Id;
+        public IProjectId space1Project2Id;
     }
 
     protected static interface TestWithUserRole
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java
index dc543638e073bfaaa3aecc929f7eb2500a139a0e..d6b80bba7ef5041117d58e120f11b60f44267073 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/CreateSampleTest.java
@@ -2050,7 +2050,7 @@ public class CreateSampleTest extends AbstractSampleTest
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_SPACE_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
+            sampleCreation.setSpaceId(params.space1Id);
 
             if (List.of(RoleWithHierarchy.RoleLevel.INSTANCE, RoleWithHierarchy.RoleLevel.SPACE).contains(role.getRoleLevel()) && List.of(
                             RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER, RoleWithHierarchy.RoleCode.USER)
@@ -2073,8 +2073,8 @@ public class CreateSampleTest extends AbstractSampleTest
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_PROJECT_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
-            sampleCreation.setProjectId(params.roleSpace1Project1Id);
+            sampleCreation.setSpaceId(params.space1Id);
+            sampleCreation.setProjectId(params.space1Project1Id);
 
             if (List.of(RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER, RoleWithHierarchy.RoleCode.USER)
                     .contains(role.getRoleCode()))
@@ -2095,14 +2095,14 @@ public class CreateSampleTest extends AbstractSampleTest
             final ExperimentCreation experimentCreation = new ExperimentCreation();
             experimentCreation.setTypeId(new EntityTypePermId("SIRNA_HCS"));
             experimentCreation.setCode("TEST_EXPERIMENT_" + UUID.randomUUID());
-            experimentCreation.setProjectId(params.roleSpace1Project1Id);
+            experimentCreation.setProjectId(params.space1Project1Id);
             experimentCreation.setProperty("DESCRIPTION", "test description");
             final ExperimentPermId experimentId = v3api.createExperiments(params.adminSessionToken, List.of(experimentCreation)).get(0);
 
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_EXPERIMENT_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
+            sampleCreation.setSpaceId(params.space1Id);
             sampleCreation.setExperimentId(experimentId);
 
             if (List.of(RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER, RoleWithHierarchy.RoleCode.USER)
diff --git a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
index 4a859468c584f4458d008920ced33484881e7ab1..a85a7eb8edc89a5b5721bee837d3204bac9be0b6 100644
--- a/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
+++ b/server-application-server/sourceTest/java/ch/ethz/sis/openbis/systemtest/asapi/v3/UpdateSampleTest.java
@@ -2636,12 +2636,12 @@ public class UpdateSampleTest extends AbstractSampleTest
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_SPACE_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
+            sampleCreation.setSpaceId(params.space1Id);
             final SamplePermId sampleId = v3api.createSamples(params.adminSessionToken, List.of(sampleCreation)).get(0);
 
             final SampleUpdate sampleUpdate = new SampleUpdate();
             sampleUpdate.setSampleId(sampleId);
-            sampleUpdate.setSpaceId(params.roleSpace2Id);
+            sampleUpdate.setSpaceId(params.space2Id);
 
             if (List.of(RoleWithHierarchy.RoleLevel.INSTANCE, RoleWithHierarchy.RoleLevel.SPACE).contains(role.getRoleLevel()) && List.of(
                     RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER).contains(role.getRoleCode()))
@@ -2662,14 +2662,14 @@ public class UpdateSampleTest extends AbstractSampleTest
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_PROJECT_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
-            sampleCreation.setProjectId(params.roleSpace1Project1Id);
+            sampleCreation.setSpaceId(params.space1Id);
+            sampleCreation.setProjectId(params.space1Project1Id);
 
             final SamplePermId sampleId = v3api.createSamples(params.adminSessionToken, List.of(sampleCreation)).get(0);
 
             final SampleUpdate sampleUpdate = new SampleUpdate();
             sampleUpdate.setSampleId(sampleId);
-            sampleUpdate.setProjectId(params.roleSpace1Project2Id);
+            sampleUpdate.setProjectId(params.space1Project2Id);
 
             if (List.of(RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER).contains(role.getRoleCode()))
             {
@@ -2689,31 +2689,31 @@ public class UpdateSampleTest extends AbstractSampleTest
             final ExperimentCreation experimentCreation = new ExperimentCreation();
             experimentCreation.setTypeId(new EntityTypePermId("SIRNA_HCS"));
             experimentCreation.setCode("TEST_EXPERIMENT_" + UUID.randomUUID());
-            experimentCreation.setProjectId(params.roleSpace1Project1Id);
+            experimentCreation.setProjectId(params.space1Project1Id);
             experimentCreation.setProperty("DESCRIPTION", "test description");
 
             final ExperimentCreation experimentCreation2 = new ExperimentCreation();
             experimentCreation2.setTypeId(new EntityTypePermId("SIRNA_HCS"));
             experimentCreation2.setCode("TEST_EXPERIMENT_" + UUID.randomUUID());
-            experimentCreation2.setProjectId(params.roleSpace1Project2Id);
+            experimentCreation2.setProjectId(params.space1Project2Id);
             experimentCreation2.setProperty("DESCRIPTION", "test description");
 
             final List<ExperimentPermId> experimentIds =
                     v3api.createExperiments(params.adminSessionToken, List.of(experimentCreation, experimentCreation2));
-            ExperimentPermId experimentId = experimentIds.get(0);
-            ExperimentPermId experimentId2 = experimentIds.get(1);
+            ExperimentPermId experiment1Id = experimentIds.get(0);
+            ExperimentPermId experiment2Id = experimentIds.get(1);
 
             final SampleCreation sampleCreation = new SampleCreation();
             sampleCreation.setCode("TEST_EXPERIMENT_SAMPLE_" + UUID.randomUUID());
             sampleCreation.setTypeId(new EntityTypePermId("CELL_PLATE"));
-            sampleCreation.setSpaceId(params.roleSpace1Id);
-            sampleCreation.setExperimentId(experimentId);
+            sampleCreation.setSpaceId(params.space1Id);
+            sampleCreation.setExperimentId(experiment1Id);
 
             final SamplePermId sampleId = v3api.createSamples(params.adminSessionToken, List.of(sampleCreation)).get(0);
 
             final SampleUpdate sampleUpdate = new SampleUpdate();
             sampleUpdate.setSampleId(sampleId);
-            sampleUpdate.setExperimentId(experimentId2);
+            sampleUpdate.setExperimentId(experiment2Id);
 
             if (List.of(RoleWithHierarchy.RoleCode.ADMIN, RoleWithHierarchy.RoleCode.POWER_USER).contains(role.getRoleCode()))
             {
diff --git a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
index 5404f0ebd5d0468ba5708ed49cacde5fa34f9008..75cf5ae068ddaee04934c7feda4aa67844a64672 100644
--- a/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
+++ b/server-application-server/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/base/RelationshipServiceStub.java
@@ -140,6 +140,12 @@ public class RelationshipServiceStub implements IRelationshipService
 
     }
 
+    @Override
+    public void reassignSampleToProject(final IAuthSession session, final SamplePE sample, final ProjectPE project)
+    {
+
+    }
+
     @Override
     public void unassignSampleFromProject(IAuthSession session, SamplePE sample)
     {