diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java
index dc738efc74359ea48a1493f5d4e386f06878327e..7a7b9cd15b7d70b8f43502be4ac777db51c86aee 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationDetails.java
@@ -17,12 +17,16 @@
 package ch.systemsx.cisd.etlserver.registrator;
 
 import java.io.File;
+import java.util.List;
 
 import ch.systemsx.cisd.etlserver.ITypeExtractor;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.LocatorType;
+import ch.systemsx.cisd.openbis.generic.shared.dto.ExtractableData;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
+import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 
 /**
  * @author Chandrasekhar Ramakrishnan
@@ -133,4 +137,26 @@ public class DataSetRegistrationDetails<T extends DataSetInformation> implements
     {
         this.dataSetInformation = dataSetInformation;
     }
+
+    public void setPropertyValue(String propertyCode, String propertyValue)
+    {
+        ExtractableData datasetExtractableData = dataSetInformation.getExtractableData();
+        List<NewProperty> properties = datasetExtractableData.getDataSetProperties();
+        NewProperty property = EntityHelper.tryFindProperty(properties, propertyCode);
+        if (property != null)
+        {
+            property.setValue(propertyValue);
+        } else
+        {
+            properties.add(new NewProperty(propertyCode, propertyValue));
+        }
+    }
+
+    public String getPropertyValue(String propertyCode)
+    {
+        NewProperty property =
+                EntityHelper.tryFindProperty(dataSetInformation.getExtractableData()
+                        .getDataSetProperties(), propertyCode);
+        return (property != null) ? property.getValue() : null;
+    }
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java
index b8edf3ee34be5bc50ec1a2c32f63eb101c9b7b50..c10072102629d899181bc56434bb7b7a1dfadac0 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/ConversionUtils.java
@@ -16,7 +16,6 @@
 
 package ch.systemsx.cisd.etlserver.registrator.api.v1.impl;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
@@ -95,8 +94,9 @@ public class ConversionUtils
         return sampleUpdate;
     }
 
-    public static NewExternalData convertToNewExternalData(DataSetRegistrationDetails<?> registrationDetails,
-            String dataStoreCode, StorageFormat storageFormat, String dataFileRelativePath)
+    public static NewExternalData convertToNewExternalData(
+            DataSetRegistrationDetails<?> registrationDetails, String dataStoreCode,
+            StorageFormat storageFormat, String dataFileRelativePath)
     {
         DataSetInformation dataSetInformation = registrationDetails.getDataSetInformation();
         final NewExternalData data = new NewExternalData();
@@ -118,16 +118,8 @@ public class ConversionUtils
         data.setLocation(dataFileRelativePath.substring(data.getShareId().length() + 1));
         data.setStorageFormat(storageFormat);
 
-        List<NewProperty> newProperties = new ArrayList<NewProperty>();
-        IEntityProperty[] properties = dataSetInformation.getProperties();
-        for (int i = 0; i < properties.length; i++)
-        {
-
-            IEntityProperty prop = properties[i];
-            NewProperty newProp =
-                    new NewProperty(prop.getPropertyType().getCode(), prop.getValue());
-            newProperties.add(newProp);
-        }
+        List<NewProperty> newProperties =
+                dataSetInformation.getExtractableData().getDataSetProperties();
         data.getExtractableData().setDataSetProperties(newProperties);
 
         return data;
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
index af4bb9afba452ee67d3158962b3cf76309ef0dd9..30a9a7c5ce64a3f644de4ac0fd7d227c5254c50d 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSet.java
@@ -25,11 +25,9 @@ import ch.systemsx.cisd.etlserver.registrator.api.v1.IExperimentImmutable;
 import ch.systemsx.cisd.etlserver.registrator.api.v1.ISampleImmutable;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.FileFormatType;
-import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Space;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier;
 import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory;
-import ch.systemsx.cisd.openbis.generic.shared.util.EntityHelper;
 
 /**
  * A generic class that represents a data set for the registration API. Can be subclassed.
@@ -164,28 +162,11 @@ public class DataSet<T extends DataSetInformation> implements IDataSet
 
     public String getPropertyValue(String propertyCode)
     {
-        T dataSetInfo = registrationDetails.getDataSetInformation();
-        IEntityProperty property =
-                EntityHelper.tryFindProperty(dataSetInfo.getProperties(), propertyCode);
-        return (property != null) ? property.getValue() : null;
+        return registrationDetails.getPropertyValue(propertyCode);
     }
 
     public void setPropertyValue(String propertyCode, String propertyValue)
     {
-        T dataSetInfo = registrationDetails.getDataSetInformation();
-        IEntityProperty[] properties = dataSetInfo.getProperties();
-        IEntityProperty property = EntityHelper.tryFindProperty(properties, propertyCode);
-        if (property != null)
-        {
-            property.setValue(propertyValue);
-        } else
-        {
-            IEntityProperty[] newProperties = new IEntityProperty[properties.length + 1];
-            System.arraycopy(properties, 0, newProperties, 0, properties.length);
-            newProperties[properties.length] =
-                    EntityHelper.createNewProperty(propertyCode, propertyValue);
-            dataSetInfo.setProperties(newProperties);
-        }
-
+        registrationDetails.setPropertyValue(propertyCode, propertyValue);
     }
 }
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java
index 9609c08db3810f874cfa6a910814011508c5c630..ba17689f1a5e0bf83cc9df00da2250efe0ac7f40 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/util/EntityHelper.java
@@ -16,6 +16,8 @@
 
 package ch.systemsx.cisd.openbis.generic.shared.util;
 
+import java.util.List;
+
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityProperty;
@@ -26,6 +28,7 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.MaterialType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.SampleType;
+import ch.systemsx.cisd.openbis.generic.shared.dto.NewProperty;
 
 /**
  * @author Izabela Adamczyk
@@ -93,6 +96,18 @@ public class EntityHelper
         return null;
     }
 
+    public static NewProperty tryFindProperty(List<NewProperty> properties, String propertyCode)
+    {
+        for (final NewProperty property : properties)
+        {
+            if (property.getPropertyCode().equalsIgnoreCase(propertyCode))
+            {
+                return property;
+            }
+        }
+        return null;
+    }
+
     public static String tryFindPropertyValue(IEntityPropertiesHolder holder, String propertyCode)
     {
         IEntityProperty property = null;
@@ -114,14 +129,14 @@ public class EntityHelper
     {
         IEntityProperty property = tryFindProperty(holder.getProperties(), propertyCode);
 
-        if (property == null) {
+        if (property == null)
+        {
             property = createNewProperty(propertyCode);
             holder.getProperties().add(property);
         }
         property.setValue(propertyValue);
     }
 
-
     public static IEntityProperty createNewProperty(String propertyCode, String propertyValue)
     {
         IEntityProperty property = createNewProperty(propertyCode);
@@ -137,5 +152,4 @@ public class EntityHelper
         property.setPropertyType(propertyType);
         return property;
     }
-
 }