diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
index 9eec61cdaf7917064d8dcab5f95789752ad42a00..6ff187bede34d09c82d04bbf88968f161cc7fb34 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DataSetFileOperationsManager.java
@@ -28,7 +28,7 @@ import ch.systemsx.cisd.common.filesystem.BooleanStatus;
 import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
-import ch.systemsx.cisd.openbis.common.io.hierarchical_content.DefaultFileBasedHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.Hdf5AwareHierarchicalContentFactory;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.AbstractDataSetFileOperationsManager;
 import ch.systemsx.cisd.openbis.dss.generic.server.plugins.standard.archiver.ArchiveDestination;
@@ -279,7 +279,7 @@ public class DataSetFileOperationsManager extends AbstractDataSetFileOperationsM
     @Override
     public IHierarchicalContent getAsHierarchicalContent(DatasetDescription dataset)
     {
-        return new DefaultFileBasedHierarchicalContentFactory()
+        return new Hdf5AwareHierarchicalContentFactory(dataset.isH5Folders(), dataset.isH5arFolders())
                 .asHierarchicalContent(new File(archiveDestination.getDestination(), dataset.getDataSetLocation()), null);
     }
 
diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
index f081f6c01e8138d52d9b1d29fcf1dd0e2ff71f6e..54917ef4637255f355022521f6d39ec728dc8a48 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/RsyncArchiver.java
@@ -29,7 +29,8 @@ import ch.systemsx.cisd.common.exceptions.Status;
 import ch.systemsx.cisd.common.exceptions.UserFailureException;
 import ch.systemsx.cisd.common.filesystem.BooleanStatus;
 import ch.systemsx.cisd.common.properties.PropertyUtils;
-import ch.systemsx.cisd.openbis.common.io.hierarchical_content.DefaultFileBasedHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.Hdf5AwareHierarchicalContentFactory;
+import ch.systemsx.cisd.openbis.common.io.hierarchical_content.IHierarchicalContentFactory;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContent;
 import ch.systemsx.cisd.openbis.common.io.hierarchical_content.api.IHierarchicalContentNode;
 import ch.systemsx.cisd.openbis.dss.generic.shared.ArchiverTaskContext;
@@ -213,7 +214,6 @@ public class RsyncArchiver extends AbstractArchiverProcessingPlugin
             ArchiverTaskContext context, boolean removeFromDataStore) throws UserFailureException
     {
         DatasetProcessingStatuses statuses = new DatasetProcessingStatuses();
-        DefaultFileBasedHierarchicalContentFactory contentFactory = new DefaultFileBasedHierarchicalContentFactory();
         for (DatasetDescription dataset : datasets)
         {
             File originalData = getDatasetDirectory(context, dataset);
@@ -236,6 +236,8 @@ public class RsyncArchiver extends AbstractArchiverProcessingPlugin
                     if (getFileOperationsManager().isHosted())
                     {
                         getFileOperationsManager().retrieveFromDestination(temp, dataset);
+                        IHierarchicalContentFactory contentFactory =  new Hdf5AwareHierarchicalContentFactory(
+                                dataset.isH5Folders(), dataset.isH5arFolders());
                         archivedContent = contentFactory.asHierarchicalContent(temp, null);
                     } else
                     {
diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
index e27e1c736f452ff298101954f6a0ba7430bd00d4..36e97b4b1834160f8e207ad19529d21d97599c47 100644
--- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
+++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/translator/DataSetTranslator.java
@@ -98,6 +98,8 @@ public class DataSetTranslator
             description.setDataSetLocation(dataSet.getLocation());
             description.setSpeedHint(dataSet.getSpeedHint());
             description.setFileFormatType(dataSet.getFileFormatType().getCode());
+            description.setH5Folders(dataSet.isH5Folders());
+            description.setH5arFolders(dataSet.isH5arFolders());
         }
         description.setDataSetSize(data.getSize());
         DataSetType dataSetType = data.getDataSetType();
@@ -515,6 +517,8 @@ public class DataSetTranslator
             description.setSpeedHint(externalData.getSpeedHint());
             description.setFileFormatType(externalData.getFileFormatType().getCode());
             description.setStorageConfirmed(externalData.isStorageConfirmation());
+            description.setH5Folders(externalData.isH5Folders());
+            description.setH5arFolders(externalData.isH5arFolders());
         }
         SamplePE sample = dataSet.tryGetSample();
         if (sample != null)