diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java
index 0637607ec4b7afa615dc7238c590d037e85e6747..47056190d3cc3dfefbc2048b6aae5702daac47dc 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/client/api/cli/CommandPut.java
@@ -25,7 +25,7 @@ import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.openbis.dss.client.api.v1.IDssComponent;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.IDssServiceRpcGeneric;
-import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDssDTO;
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO;
 
 /**
  * Command that lists files in the data set.
@@ -73,19 +73,18 @@ class CommandPut extends AbstractCommand
 
         int execute()
         {
-            NewDataSetDssDTO newDataSet = getNewDataSet();
+            NewDataSetDTO newDataSet = getNewDataSet();
             dssService.putDataSet("", newDataSet);
 
             return 0;
         }
 
-        private NewDataSetDssDTO getNewDataSet()
+        private NewDataSetDTO getNewDataSet()
         {
             String storageProcessName = arguments.getStorageProcess();
             String filePath = arguments.getFilePath();
-            filePath.length();
             InputStream fileInputStream = null;
-            return new NewDataSetDssDTO(storageProcessName, fileInputStream);
+            return new NewDataSetDTO(storageProcessName, filePath, fileInputStream);
         }
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java
index b3a25d317d063df69ec79cc921632d9974105bee..c031ed66a8e1d2ffe1a4c5d83a7b4a1c969aabec 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/api/v1/DssServiceRpcGeneric.java
@@ -26,9 +26,9 @@ import ch.systemsx.cisd.base.exceptions.IOExceptionUnchecked;
 import ch.systemsx.cisd.openbis.dss.generic.server.AbstractDssServiceRpc;
 import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileInfoDssDTO;
-import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.FileReferenceDssDTO;
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.DataSetFileDTO;
 import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.IDssServiceRpcGeneric;
-import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDssDTO;
+import ch.systemsx.cisd.openbis.dss.generic.shared.api.v1.NewDataSetDTO;
 
 /**
  * Implementation of the generic RPC interface.
@@ -86,10 +86,10 @@ public class DssServiceRpcGeneric extends AbstractDssServiceRpc implements IDssS
         }
     }
 
-    public void putDataSet(String sessionToken, NewDataSetDssDTO newDataSet)
+    public void putDataSet(String sessionToken, NewDataSetDTO newDataSet)
             throws IOExceptionUnchecked, IllegalArgumentException
     {
-
+        System.out.println("Put " + newDataSet);
     }
 
     public int getMajorVersion()
@@ -121,15 +121,15 @@ public class DssServiceRpcGeneric extends AbstractDssServiceRpc implements IDssS
         factory.appendFileInfosForFile(requestedFile, list, isRecursive);
     }
 
-    public InputStream getFileForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder)
+    public InputStream getFileForDataSet(String sessionToken, DataSetFileDTO fileOrFolder)
             throws IOExceptionUnchecked, IllegalArgumentException
     {
         return this.getFileForDataSet(sessionToken, fileOrFolder.getDataSetCode(), fileOrFolder
                 .getPath());
     }
 
-    public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder)
-            throws IOExceptionUnchecked, IllegalArgumentException
+    public FileInfoDssDTO[] listFilesForDataSet(String sessionToken,
+            DataSetFileDTO fileOrFolder) throws IOExceptionUnchecked, IllegalArgumentException
     {
         return this.listFilesForDataSet(sessionToken, fileOrFolder.getDataSetCode(), fileOrFolder
                 .getPath(), fileOrFolder.isRecursive());
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java
similarity index 61%
rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java
rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java
index 27027f05454f81ccf3925aab6827f65049d4bad8..c57f2db7eae6f34ee711e10aa43809cc004613e9 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileReferenceDssDTO.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTO.java
@@ -18,12 +18,15 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1;
 
 import java.io.Serializable;
 
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
 /**
- * Represents a reference to a file/path within a data set.
+ * Represents a reference to a file/folder within a data set.
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public class FileReferenceDssDTO implements Serializable
+public class DataSetFileDTO implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
@@ -33,26 +36,41 @@ public class FileReferenceDssDTO implements Serializable
 
     private final boolean isRecursive;
 
-    public FileReferenceDssDTO(String dataSetCode, String path, boolean isRecursive)
+    public DataSetFileDTO(String dataSetCode, String path, boolean isRecursive)
     {
         this.dataSetCode = dataSetCode;
         this.path = path;
         this.isRecursive = isRecursive;
     }
 
+    /** The code of the data set that owns this file */
     public String getDataSetCode()
     {
         return dataSetCode;
     }
 
+    /** The path within the data set of the file */
     public String getPath()
     {
         return path;
     }
 
+    /** If true, this object includes sub folders */
     public boolean isRecursive()
     {
         return isRecursive;
     }
 
+    @Override
+    public String toString()
+    {
+        ToStringBuilder sb = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
+        sb.append(getDataSetCode());
+        sb.append(getPath());
+        if (isRecursive())
+        {
+            sb.append("recursive");
+        }
+        return sb.toString();
+    }
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java
index 5a02d1480ff8b69c78667d6bd1b284bb01e43201..7dcfc8eb76d909dbbdc4990aa6a2b4c4a9d27f8c 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/IDssServiceRpcGeneric.java
@@ -38,7 +38,7 @@ public interface IDssServiceRpcGeneric extends IRpcService
      * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files
      * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid
      */
-    public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder)
+    public FileInfoDssDTO[] listFilesForDataSet(String sessionToken, DataSetFileDTO fileOrFolder)
             throws IOExceptionUnchecked, IllegalArgumentException;
 
     /**
@@ -49,7 +49,7 @@ public interface IDssServiceRpcGeneric extends IRpcService
      * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files
      * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid
      */
-    public InputStream getFileForDataSet(String sessionToken, FileReferenceDssDTO fileOrFolder)
+    public InputStream getFileForDataSet(String sessionToken, DataSetFileDTO fileOrFolder)
             throws IOExceptionUnchecked, IllegalArgumentException;
 
     /**
@@ -85,6 +85,6 @@ public interface IDssServiceRpcGeneric extends IRpcService
      * @throws IOExceptionUnchecked Thrown if an IOException occurs when listing the files
      * @throws IllegalArgumentException Thrown if the dataSetCode or startPath are not valid
      */
-    public void putDataSet(String sessionToken, NewDataSetDssDTO newDataset)
+    public void putDataSet(String sessionToken, NewDataSetDTO newDataset)
             throws IOExceptionUnchecked, IllegalArgumentException;
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java
similarity index 72%
rename from datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java
rename to datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java
index ddddc8fef65e5cb573b037b7065f6009137e7f75..bfead09d00fe2840c1c94a64fcac743df4741e19 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDssDTO.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/NewDataSetDTO.java
@@ -19,6 +19,9 @@ package ch.systemsx.cisd.openbis.dss.generic.shared.api.v1;
 import java.io.InputStream;
 import java.io.Serializable;
 
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
 import ch.systemsx.cisd.common.io.ConcatenatedFileInputStream;
 
 /**
@@ -29,12 +32,14 @@ import ch.systemsx.cisd.common.io.ConcatenatedFileInputStream;
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-public class NewDataSetDssDTO implements Serializable
+public class NewDataSetDTO implements Serializable
 {
     private static final long serialVersionUID = 1L;
 
     private final String storageProcessName;
 
+    private final String fileName;
+
     private final InputStream inputStream;
 
     /**
@@ -44,9 +49,10 @@ public class NewDataSetDssDTO implements Serializable
      * @param inputStream An input stream on the file or folder to register. If a folder is to be
      *            registered, the input stream must be a {@link ConcatenatedFileInputStream}.
      */
-    public NewDataSetDssDTO(String storageProcessName, InputStream inputStream)
+    public NewDataSetDTO(String storageProcessName, String fileName, InputStream inputStream)
     {
         this.storageProcessName = storageProcessName;
+        this.fileName = fileName;
         this.inputStream = inputStream;
     }
 
@@ -55,8 +61,22 @@ public class NewDataSetDssDTO implements Serializable
         return storageProcessName;
     }
 
+    public String getFileName()
+    {
+        return fileName;
+    }
+
     public InputStream getInputStream()
     {
         return inputStream;
     }
+
+    @Override
+    public String toString()
+    {
+        ToStringBuilder sb = new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE);
+        sb.append("storageProcess", getStorageProcessName());
+        sb.append("fileName", getFileName());
+        return sb.toString();
+    }
 }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..062bea015165c403bf046ab05113a812e632b2f8
--- /dev/null
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/DataSetFileDTOTest.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2010 ETH Zuerich, CISD
+ *
+ * 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.systemsx.cisd.openbis.dss.generic.shared.api.v1;
+
+import org.testng.AssertJUnit;
+import org.testng.annotations.Test;
+
+/**
+ * @author Chandrasekhar Ramakrishnan
+ */
+public class DataSetFileDTOTest extends AssertJUnit
+{
+    @Test
+    public void testToString()
+    {
+        DataSetFileDTO dsf = new DataSetFileDTO("code", "path", false);
+        assertEquals("DataSetFileDTO[code,path]", dsf.toString());
+
+        dsf = new DataSetFileDTO("code", "path", true);
+        assertEquals("DataSetFileDTO[code,path,recursive]", dsf.toString());
+    }
+}