diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
index 6811f614b8e93314e8e707f57e14e93982b1cb3e..d2972f767bdf4f96db423a50ad81ec49b86ff570 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/config/SyncConfig.java
@@ -328,4 +328,9 @@ public class SyncConfig
     {
         this.parallelizedExecutionPrefs = new ParallelizedExecutionPreferences(machineLoad, maxThreads, retriesOnFailure, stopOnFailure);
     }
+
+    public ParallelizedExecutionPreferences getParallelizedExecutionPrefs()
+    {
+        return parallelizedExecutionPrefs;
+    }
 }
diff --git a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
index 0754b1b2d5e76929f2a5e4db320ba6553e6adb4b..76c95d810dfae5764be0929ace774f3488a9175f 100644
--- a/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
+++ b/datastore_server/source/java/ch/ethz/sis/openbis/generic/server/dss/plugins/sync/harvester/synchronizer/EntitySynchronizer.java
@@ -64,6 +64,7 @@ import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.EntityRetrieve
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.SyncEntityKind;
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.entitygraph.EntityGraph;
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.common.entitygraph.Node;
+import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.config.ParallelizedExecutionPreferences;
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.config.SyncConfig;
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchronizer.ResourceListParserData.Connection;
 import ch.ethz.sis.openbis.generic.server.dss.plugins.sync.harvester.synchronizer.ResourceListParserData.IncomingDataSet;
@@ -444,10 +445,13 @@ public class EntitySynchronizer
     {
         AttachmentSynchronizationSummary synchronizationSummary = new AttachmentSynchronizationSummary();
 
+        ParallelizedExecutionPreferences preferences = config.getParallelizedExecutionPrefs();
+
         ParallelizedExecutor.process(attachmentHoldersToProcess, new AttachmentSynchronizationTaskExecutor(synchronizationSummary,
                 service,
                 lastSyncTimestamp, config),
-                0.5, 10, "process attachments", 0, false);
+                preferences.getMachineLoad(), preferences.getMaxThreads(), "process attachments", preferences.getRetriesOnFail(),
+                preferences.isStopOnFailure());
 
         return synchronizationSummary;
     }
@@ -623,14 +627,17 @@ public class EntitySynchronizer
     private DataSetSynchronizationSummary registerPhysicalDataSets(Map<String, IncomingDataSet> physicalDSMap) throws IOException
     {
         List<IncomingDataSet> dsList = new ArrayList<IncomingDataSet>(physicalDSMap.values());
-        DataSetSynchronizationSummary dsRegistrationSummary = new DataSetSynchronizationSummary();
+        DataSetSynchronizationSummary dataSetSynchronizationSummary = new DataSetSynchronizationSummary();
 
         // This parallelization is possible because each DS is registered without dependencies
         // and the dependencies are established later on in the sync process.
-        ParallelizedExecutor.process(dsList, new DataSetRegistrationTaskExecutor(dsRegistrationSummary),
-                0.5, 10, "register data sets", 0, false);
+        ParallelizedExecutionPreferences preferences = config.getParallelizedExecutionPrefs();
+
+        ParallelizedExecutor.process(dsList, new DataSetRegistrationTaskExecutor(dataSetSynchronizationSummary),
+                preferences.getMachineLoad(), preferences.getMaxThreads(), "register data sets", preferences.getRetriesOnFail(),
+                preferences.isStopOnFailure());
 
-        return dsRegistrationSummary;
+        return dataSetSynchronizationSummary;
     }
 
     private void saveFailedEntitiesFile(List<String> notRegisteredDataSetCodes, List<String> notSyncedAttachmentsHolders) throws IOException