diff --git a/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AssignDataSetToExperimentAndSampleTest.java b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AssignDataSetToExperimentAndSampleTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..10325ed57483b4a351e9d1bed6ba1026841af692
--- /dev/null
+++ b/openbis/sourceTest/java/ch/ethz/sis/openbis/systemtest/api/v3/AssignDataSetToExperimentAndSampleTest.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2015 ETH Zuerich, SIS
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.ethz.sis.openbis.systemtest.api.v3;
+
+import java.util.Arrays;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.testng.annotations.Test;
+
+import ch.ethz.sis.openbis.generic.shared.api.v3.IApplicationServerApi;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSetUpdate;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentIdentifier;
+import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.sample.SamplePermId;
+import ch.systemsx.cisd.openbis.systemtest.AbstractDataSetAssignmentTestCase;
+
+/**
+ * Data set assignment tests for API V3.
+ * 
+ * @author Franz-Josef Elmer
+ */
+@Test(groups = { "system-cleandb", "broken" })
+public class AssignDataSetToExperimentAndSampleTest extends AbstractDataSetAssignmentTestCase
+{
+
+    @Autowired
+    protected IApplicationServerApi v3api;
+
+    @Override
+    protected void reassignToExperiment(String dataSetCode, String experimentIdentifierOrNull, String userSessionToken)
+    {
+        reassignDataSet(dataSetCode, experimentIdentifierOrNull, null, userSessionToken);
+    }
+
+    @Override
+    protected void reassignToSample(String dataSetCode, String samplePermIdOrNull, String userSessionToken)
+    {
+        reassignDataSet(dataSetCode, null, samplePermIdOrNull, userSessionToken);
+    }
+    
+    private void reassignDataSet(String dataSetCode, String experimentIdentifierOrNull, String samplePermIdOrNull, 
+            String userSessionToken)
+    {
+        DataSetUpdate dataSetUpdate = new DataSetUpdate();
+        dataSetUpdate.setDataSetId(new DataSetPermId(dataSetCode));
+        if (experimentIdentifierOrNull != null)
+        {
+            dataSetUpdate.setExperimentId(new ExperimentIdentifier(experimentIdentifierOrNull));
+        }
+        if (samplePermIdOrNull != null)
+        {
+            dataSetUpdate.setSampleId(new SamplePermId(samplePermIdOrNull));
+        }
+        v3api.updateDataSets(userSessionToken, Arrays.asList(dataSetUpdate));
+        
+    }
+
+}
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractDataSetAssignmentTestCase.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractDataSetAssignmentTestCase.java
index ac4a14ad484e631f3be8401badf32461e68ff0c9..9391f2ddeca02041b311c9e89880c5c9dc4432d5 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractDataSetAssignmentTestCase.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AbstractDataSetAssignmentTestCase.java
@@ -80,10 +80,10 @@ public abstract class AbstractDataSetAssignmentTestCase extends BaseTest
     
     AuthorizationRule assignDataSetToSampleRule;
     
-    private AuthorizationRule assignDataSetToExperimentRule;
+    AuthorizationRule assignDataSetToExperimentRule;
     
     @BeforeClass(dependsOnMethods = "loginAsSystem")
-    void createFixture() throws Exception
+    public void createFixture() throws Exception
     {
         sourceSpace = create(aSpace());
         Project sourceProject = create(aProject().inSpace(sourceSpace));
@@ -113,41 +113,41 @@ public abstract class AbstractDataSetAssignmentTestCase extends BaseTest
     }
     
     /**
-     * Reassign specified data set to specified experiment for the specified user. 
+     * Reassign specified data set to specified experiment for the specified user session token. 
      * If experiment is not specified unassignment is meant.
      * Sub class for testing API V3 should override this method.
      */
-    protected abstract void reassignToExperiment(String dataSetCode, String experimentIdentifierOrNull, String user);
+    protected abstract void reassignToExperiment(String dataSetCode, String experimentIdentifierOrNull, String userSessionToken);
 
     /**
-     * Reassign specified data set to specified sample for the specified user. 
+     * Reassign specified data set to specified sample for the specified user session token. 
      * If sample is not specified unassignment is meant.
      * Sub class for testing API V3 should override this method.
      */
-    protected abstract void reassignToSample(String dataSetCode, String samplePermIdOrNull, String user);
+    protected abstract void reassignToSample(String dataSetCode, String samplePermIdOrNull, String userSessionToken);
 
     @DataProvider
-    Object[][] rolesAllowedToAssignDataSetToExperiment()
+    public Object[][] rolesAllowedToAssignDataSetToExperiment()
     {
         return RolePermutator.getAcceptedPermutations(assignDataSetToExperimentRule, source,
                 destination, instance);
     }
 
     @DataProvider
-    Object[][] rolesNotAllowedToAssignDataSetToExperiment()
+    public Object[][] rolesNotAllowedToAssignDataSetToExperiment()
     {
         return RolePermutator.getAcceptedPermutations(not(assignDataSetToExperimentRule), source,
                 destination, instance);
     }
 
     @DataProvider
-    Object[][] rolesAllowedToAssignDataSetToSample()
+    public Object[][] rolesAllowedToAssignDataSetToSample()
     {
         return RolePermutator.getAcceptedPermutations(assignDataSetToSampleRule, source, destination, instance);
     }
 
     @DataProvider
-    Object[][] rolesNotAllowedToAssignDataSetToSample()
+    public Object[][] rolesNotAllowedToAssignDataSetToSample()
     {
         return RolePermutator.getAcceptedPermutations(not(assignDataSetToSampleRule), source, destination, instance);
     }
diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToExperimentAndSampleTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToExperimentAndSampleTest.java
index 6fc2d18418f2ccb62ea9d04917b7cb79cf2e66e0..f744a378d262cfa80890824c764bf817d38709d0 100644
--- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToExperimentAndSampleTest.java
+++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/AssignDataSetToExperimentAndSampleTest.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.systemtest;
 
+import org.testng.annotations.Test;
+
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
@@ -27,35 +29,36 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.SampleIdentifier;
  * 
  * @author Franz-Josef Elmer
  */
+@Test(groups = { "system-cleandb" })
 public class AssignDataSetToExperimentAndSampleTest extends AbstractDataSetAssignmentTestCase
 {
     @Override
-    protected void reassignToExperiment(String dataSetCode, String experimentIdentifierOrNull, String user)
+    protected void reassignToExperiment(String dataSetCode, String experimentIdentifierOrNull, String userSessionToken)
     {
         AbstractExternalData dataSet = etlService.tryGetDataSet(systemSessionToken, dataSetCode);
         if (experimentIdentifierOrNull != null)
         {
             Experiment experiment = etlService.tryGetExperiment(systemSessionToken, 
                     ExperimentIdentifierFactory.parse(experimentIdentifierOrNull));
-            perform(anUpdateOf(dataSet).toExperiment(experiment).as(user));
+            perform(anUpdateOf(dataSet).toExperiment(experiment).as(userSessionToken));
         } else
         {
-            perform(anUpdateOf(dataSet).removingExperiment().as(user));
+            perform(anUpdateOf(dataSet).removingExperiment().as(userSessionToken));
         }
     }
 
     @Override
-    protected void reassignToSample(String dataSetCode, String samplePermIdOrNull, String user)
+    protected void reassignToSample(String dataSetCode, String samplePermIdOrNull, String userSessionToken)
     {
         AbstractExternalData dataSet = etlService.tryGetDataSet(systemSessionToken, dataSetCode);
         if (samplePermIdOrNull != null)
         {
             SampleIdentifier sampleIdentifier = etlService.tryGetSampleIdentifier(systemSessionToken, samplePermIdOrNull);
             Sample sample = etlService.tryGetSampleWithExperiment(systemSessionToken, sampleIdentifier);
-            perform(anUpdateOf(dataSet).toSample(sample).as(user));
+            perform(anUpdateOf(dataSet).toSample(sample).as(userSessionToken));
         } else
         {
-            perform(anUpdateOf(dataSet).removingSample().as(user));
+            perform(anUpdateOf(dataSet).removingSample().as(userSessionToken));
         }
     }
 }