diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
index 26fefafc0307daa021394367631ee689b1edd437..1e4ab237ebb056e1ff04fb998751246e93c91e26 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributedPackagingDataSetFileOperationsManager.java
@@ -63,24 +63,24 @@ import de.schlichtherle.util.zip.BasicZipFile;
 import de.schlichtherle.util.zip.ZipEntry;
 
 /**
- * 
- *
  * @author Franz-Josef Elmer
  */
 public class DistributedPackagingDataSetFileOperationsManager implements IDataSetFileOperationsManager
 {
     static final String MAPPING_FILE_KEY = "mapping-file";
-    
+
     static final String CREATE_ARCHIVES_KEY = MAPPING_FILE_KEY + ".create-archives";
 
     static final String DEFAULT_DESTINATION_KEY = "default-archive-folder";
-    
+
     static final String WITH_SHARDING_KEY = "with-sharding";
 
     static final String COMPRESS_KEY = "compressing";
 
+    static final String IGNORE_EXISTING_KEY = "ignore-existing";
+
     private static final Logger operationLog = LogFactory.getLogger(LogCategory.OPERATION, DistributedPackagingDataSetFileOperationsManager.class);
-    
+
     private static final IHierarchicalContentNodeFilter FILTER = new IHierarchicalContentNodeFilter()
         {
             @Override
@@ -89,21 +89,23 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
                 return AbstractDataSetPackager.META_DATA_FILE_NAME.equals(node.getRelativePath()) == false;
             }
         };
-        
+
     private boolean compress;
-    
+
+    private boolean ignoreExisting;
+
     private File defaultFolder;
 
     private boolean withSharding;
 
     private String mappingFilePathOrNull;
-    
+
     private boolean createArchives;
-    
+
     private transient IEncapsulatedOpenBISService service;
-    
+
     private transient IHierarchicalContentProvider contentProvider;
-    
+
     private transient IDataSetDirectoryProvider directoryProvider;
 
     private transient IdentifierAttributeMappingManager archiveFolderMapping;
@@ -112,20 +114,22 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
     {
         this(properties, null, null, null);
     }
-    
-    DistributedPackagingDataSetFileOperationsManager(Properties properties, 
-            IEncapsulatedOpenBISService service, IHierarchicalContentProvider contentProvider, 
+
+    DistributedPackagingDataSetFileOperationsManager(Properties properties,
+            IEncapsulatedOpenBISService service, IHierarchicalContentProvider contentProvider,
             IDataSetDirectoryProvider directoryProvider)
     {
         this.service = service;
         this.contentProvider = contentProvider;
         this.directoryProvider = directoryProvider;
         compress = PropertyUtils.getBoolean(properties, COMPRESS_KEY, true);
+        ignoreExisting = PropertyUtils.getBoolean(properties,
+                IGNORE_EXISTING_KEY, false);
         withSharding = PropertyUtils.getBoolean(properties, WITH_SHARDING_KEY, false);
         defaultFolder = new File(PropertyUtils.getMandatoryProperty(properties, DEFAULT_DESTINATION_KEY));
         if (defaultFolder.isDirectory() == false)
         {
-            throw new ConfigurationFailureException("Default archive folder '" + defaultFolder.getPath() 
+            throw new ConfigurationFailureException("Default archive folder '" + defaultFolder.getPath()
                     + "' doesn't exist or is not a folder.");
         }
         mappingFilePathOrNull = properties.getProperty(MAPPING_FILE_KEY);
@@ -191,8 +195,8 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
             {
                 ZipEntry entry = entries.nextElement();
                 File outputFile = new File(originalData, entry.getName());
-                if (entry.isDirectory() == false                        )
-                { 
+                if (entry.isDirectory() == false)
+                {
                     if (AbstractDataSetPackager.META_DATA_FILE_NAME.equals(entry.getName()) == false)
                     {
                         outputFile.getParentFile().mkdirs();
@@ -212,7 +216,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
                 {
                     if (outputFile.isFile())
                     {
-                        throw new EnvironmentFailureException("Could not extract directory '" + outputFile 
+                        throw new EnvironmentFailureException("Could not extract directory '" + outputFile
                                 + "' because it exists already as a plain file.");
                     }
                     outputFile.mkdirs();
@@ -235,7 +239,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
                 {
                     throw CheckedExceptionTunnel.wrapIfNecessary(ex);
                 }
-            } 
+            }
             IOUtils.closeQuietly(fileOutputStream);
         }
     }
@@ -252,7 +256,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         boolean success = archiveFile.delete();
         return success ? Status.OK : Status.createError("Couldn't delete archive file '" + archiveFile + "'.");
     }
-    
+
     private File tryFindArchiveFile(IDatasetLocation datasetLocation)
     {
         File archiveFile = getArchiveFile(defaultFolder, datasetLocation, false);
@@ -304,15 +308,36 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
     }
 
     @Override
-    public BooleanStatus isSynchronizedWithDestination(File originalData, DatasetDescription datasetDescription)
+    public BooleanStatus isSynchronizedWithDestination(File originalData,
+            DatasetDescription datasetDescription)
     {
-        return BooleanStatus.createFalse();
+        return isPresentInDestination(datasetDescription);
     }
 
     @Override
-    public BooleanStatus isPresentInDestination(DatasetDescription datasetDescription)
+    public BooleanStatus isPresentInDestination(
+            DatasetDescription datasetDescription)
     {
-        return BooleanStatus.createFalse();
+
+        if (ignoreExisting)
+        {
+            File file = getArchiveFile(datasetDescription);
+
+            if (file.exists() && file.length() > 0)
+            {
+                operationLog
+                        .info("Data set '"
+                                + datasetDescription.getDataSetCode()
+                                + "' will be ignored as it already exists in the archive.");
+                return BooleanStatus.createTrue();
+            } else
+            {
+                return BooleanStatus.createFalse();
+            }
+        } else
+        {
+            return BooleanStatus.createFalse();
+        }
     }
 
     @Override
@@ -339,7 +364,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         }
         return dataSet;
     }
-    
+
     private File getArchiveFile(DatasetDescription datasetDescription)
     {
         File folder = getArchiveFolderMapping().getArchiveFolder(datasetDescription, defaultFolder);
@@ -379,7 +404,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         }
         return service;
     }
-    
+
     private IHierarchicalContentProvider getContentProvider()
     {
         if (contentProvider == null)
@@ -388,7 +413,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         }
         return contentProvider;
     }
-    
+
     private IDataSetDirectoryProvider getDirectoryProvider()
     {
         if (directoryProvider == null)
@@ -397,7 +422,7 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         }
         return directoryProvider;
     }
-    
+
     private IdentifierAttributeMappingManager getArchiveFolderMapping()
     {
         if (archiveFolderMapping == null)
@@ -406,5 +431,5 @@ public class DistributedPackagingDataSetFileOperationsManager implements IDataSe
         }
         return archiveFolderMapping;
     }
-    
+
 }
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributingArchiverTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributingArchiverTest.java
index 8b8099cfbe0ab9c864f51919e216f2c3ea1b9f2f..cc340a3e5fb5d6bf35d7448de226f36e92037d80 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributingArchiverTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/openbis/dss/generic/server/plugins/standard/DistributingArchiverTest.java
@@ -61,7 +61,7 @@ import ch.systemsx.cisd.openbis.generic.shared.translator.DataSetTranslator;
 /**
  * @author Franz-Josef Elmer
  */
-@Friend(toClasses = {AbstractArchiverProcessingPlugin.class, RsyncArchiver.class})
+@Friend(toClasses = { AbstractArchiverProcessingPlugin.class, RsyncArchiver.class })
 public class DistributingArchiverTest extends AbstractArchiverTestCase
 {
     private static final String LOCATION = "a/b/c/ds1";
@@ -140,7 +140,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         File archivedDataSetFile = new File(defaultArchive, ds1.getDataSetCode() + ".zip");
         assertEquals("INFO  OPERATION.AbstractDatastorePlugin - "
                 + "Archiving of the following datasets has been requested: [Dataset 'ds1']\n"
-                + "INFO  OPERATION.DistributedPackagingDataSetFileOperationsManager - " 
+                + "INFO  OPERATION.DistributedPackagingDataSetFileOperationsManager - "
                 + "Data set 'ds1' archived: " + archivedDataSetFile, logRecorder.getLogContent());
         List<Status> errorStatuses = processingStatus.getErrorStatuses();
         assertEquals("[]", errorStatuses.toString());
@@ -173,8 +173,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").getExperiment();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC").property("ANSWER", "42")
-                .experiment(experiment).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC").property("ANSWER", "42")
+                        .experiment(experiment).getDataSet();
         DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareUpdateShareIdAndSize(537669);
@@ -187,9 +187,9 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         prepareAsContent(ds1.getCode(), ds1InStore);
         prepareAsContent(ds1.getCode(), ds1InStore);
         prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
-        
+
         ProcessingStatus processingStatus = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, false);
-        
+
         File archivedDataSetFile = new File(defaultArchive, LOCATION + "/" + ds1.getDataSetCode() + ".zip");
         assertEquals("INFO  OPERATION.AbstractDatastorePlugin - "
                 + "Archiving of the following datasets has been requested: [Dataset 'ds1']\n"
@@ -216,7 +216,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertZipContent("Nothing to read!", archivedDataSetFile, "original/my-data/read-me.txt", false);
         assertZipContent(HDF5_ARCHIVE, archivedDataSetFile, "original/my-data/subfolder/my-archive.h5", false);
     }
-    
+
     @Test
     public void testArchivingFlatToSpaceMappedArchive()
     {
@@ -230,8 +230,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Sample sample = new SampleBuilder("/S/S1").type("MY-S").property("ANSWER", "42").getSample();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
-                .experiment(experiment).sample(sample).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).sample(sample).getDataSet();
         DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareUpdateShareIdAndSize(537669);
@@ -245,9 +245,9 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         prepareAsContent(ds1.getCode(), ds1InStore);
         prepareAsContent(ds1.getCode(), ds1InStore);
         prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
-        
+
         ProcessingStatus processingStatus = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, false);
-        
+
         File archivedDataSetFile = new File(archive, ds1.getDataSetCode() + ".zip");
         assertEquals("INFO  OPERATION.IdentifierAttributeMappingManager - Mapping file '" + mappingFile + "' successfully loaded.\n"
                 + "INFO  OPERATION.AbstractDatastorePlugin - "
@@ -264,12 +264,12 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 + "data_set\tis_measured\tTRUE\n"
                 + "data_set\tis_complete\tFALSE\n"
                 + "data_set\tparent_codes\t\n"
-                + "sample\ttype_code\tMY-S\n" 
-                + "sample\tcode\tS1\n" 
-                + "sample\tspace_code\tS\n" 
-                + "sample\tregistration_timestamp\t\n" 
-                + "sample\tregistrator\t\n" 
-                + "sample\tANSWER\t42\n" 
+                + "sample\ttype_code\tMY-S\n"
+                + "sample\tcode\tS1\n"
+                + "sample\tspace_code\tS\n"
+                + "sample\tregistration_timestamp\t\n"
+                + "sample\tregistrator\t\n"
+                + "sample\tANSWER\t42\n"
                 + "experiment\tspace_code\tS\n"
                 + "experiment\tproject_code\tP\n"
                 + "experiment\texperiment_code\tE1\n"
@@ -313,7 +313,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         // archive
         ProcessingStatus processingStatus = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, true);
         assertEquals("[]", processingStatus.getErrorStatuses().toString());
-        FileUtilities.deleteRecursively(ds1InStore);     // delete in store
+        FileUtilities.deleteRecursively(ds1InStore); // delete in store
         prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
         context.checking(new Expectations()
             {
@@ -322,9 +322,9 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                     will(returnValue(DATA_STORE_CODE));
                 }
             });
-        
+
         processingStatus = archiver.unarchive(Arrays.asList(dsd1), archiverTaskContext);
-        
+
         File archivedDataSetFile = new File(defaultArchive, ds1.getDataSetCode() + ".zip");
         String logContent = logRecorder.getLogContent().replaceFirst("in all shares in .*s", "in all shares in ? s");
         assertEquals("INFO  OPERATION.AbstractDatastorePlugin - "
@@ -377,8 +377,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").getExperiment();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION).size(28)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
-                .experiment(experiment).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).getDataSet();
         final DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareGetDataSetDirectory(dsd1);
@@ -399,7 +399,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         // archive
         ProcessingStatus processingStatus = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, true);
         assertEquals("[]", processingStatus.getErrorStatuses().toString());
-        FileUtilities.deleteRecursively(ds1InStore);     // delete in store
+        FileUtilities.deleteRecursively(ds1InStore); // delete in store
         prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
         context.checking(new Expectations()
             {
@@ -408,9 +408,9 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                     will(returnValue(DATA_STORE_CODE));
                 }
             });
-        
+
         processingStatus = archiver.unarchive(Arrays.asList(dsd1), archiverTaskContext);
-        
+
         File archivedDataSetFile = new File(archive, LOCATION + "/" + ds1.getDataSetCode() + ".zip");
         String logContent = logRecorder.getLogContent().replaceFirst("in all shares in .*s", "in all shares in ? s");
         assertEquals("INFO  OPERATION.IdentifierAttributeMappingManager - Mapping file '" + mappingFile + "' successfully loaded.\n"
@@ -431,10 +431,11 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals(true, emptyFolder.exists());
         assertEquals(true, emptyFolder.isDirectory());
     }
-    
+
     @Test
-    public void testArchivingTwice()
+    public void testArchivingTwiceWithIgnoreExistingSetToFalse()
     {
+        properties.setProperty(DistributedPackagingDataSetFileOperationsManager.IGNORE_EXISTING_KEY, "false");
         DistributingArchiver archiver = createArchiver();
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").property("E-PROP", "42").getExperiment();
         PhysicalDataSet ds1 =
@@ -498,7 +499,71 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertZipContent("Nothing to read!", archivedDataSetFile, "original/my-data/read-me.txt", true);
         assertZipContent(HDF5_ARCHIVE, archivedDataSetFile, "original/my-data/subfolder/my-archive.h5", true);
     }
-    
+
+    @Test
+    public void testArchivingTwiceWithIgnoreExistingSetToTrue()
+    {
+        properties.setProperty(DistributedPackagingDataSetFileOperationsManager.IGNORE_EXISTING_KEY, "true");
+        DistributingArchiver archiver = createArchiver();
+        Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").property("E-PROP", "42").getExperiment();
+        PhysicalDataSet ds1 =
+                new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).getDataSet();
+        DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
+        prepareGetShareId();
+        prepareUpdateShareIdAndSize(537669);
+        prepareGetDataSetDirectory(dsd1);
+        prepareTryGetDataSet(ds1);
+        prepareTryGetExperiment(ds1.getExperiment());
+        prepareLockAndReleaseDataSet(ds1.getCode());
+        prepareGetDataSetDirectory("");
+        prepareGetDataSetDirectory(LOCATION);
+        prepareAsContent(ds1.getCode(), ds1InStore);
+        prepareAsContent(ds1.getCode(), ds1InStore);
+        prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
+        ProcessingStatus processingStatus1 = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, false);
+        assertEquals("[]", processingStatus1.getErrorStatuses().toString());
+        ds1.setExperiment(new ExperimentBuilder().identifier("/S/P/E2").type("MY-E").getExperiment());
+        dsd1 = DataSetTranslator.translateToDescription(ds1);
+        prepareUpdateShareIdAndSize(537669);
+        prepareGetDataSetDirectory(dsd1);
+        prepareUpdateStatus(DataSetArchivingStatus.AVAILABLE, true);
+
+        ProcessingStatus processingStatus2 = archiver.archive(Arrays.asList(dsd1), archiverTaskContext, false);
+
+        File archivedDataSetFile = new File(defaultArchive, ds1.getDataSetCode() + ".zip");
+        assertEquals(
+                "INFO  OPERATION.AbstractDatastorePlugin - "
+                        + "Archiving of the following datasets has been requested: [Dataset 'ds1']\n"
+                        + "INFO  OPERATION.DistributedPackagingDataSetFileOperationsManager - Data set 'ds1' archived: "
+                        + archivedDataSetFile
+                        + "\n"
+                        + "INFO  OPERATION.AbstractDatastorePlugin - "
+                        + "Archiving of the following datasets has been requested: [Dataset 'ds1']\n"
+                        + "INFO  OPERATION.DistributedPackagingDataSetFileOperationsManager - Data set 'ds1' will be ignored as it already exists in the archive."
+                , logRecorder.getLogContent());
+        assertEquals("[]", processingStatus2.getErrorStatuses().toString());
+        assertEquals(true, archivedDataSetFile.isFile());
+        assertZipContent("data_set\tcode\tds1\n"
+                + "data_set\tproduction_timestamp\t\n"
+                + "data_set\tproducer_code\t\n"
+                + "data_set\tdata_set_type\tMY-TYPE\n"
+                + "data_set\tis_measured\tTRUE\n"
+                + "data_set\tis_complete\tFALSE\n"
+                + "data_set\tparent_codes\t\n"
+                + "experiment\tspace_code\tS\n"
+                + "experiment\tproject_code\tP\n"
+                + "experiment\texperiment_code\tE1\n"
+                + "experiment\texperiment_type_code\tMY-E\n"
+                + "experiment\tregistration_timestamp\t\n"
+                + "experiment\tregistrator\t\n"
+                + "experiment\tE-PROP\t42\n", archivedDataSetFile, AbstractDataSetPackager.META_DATA_FILE_NAME, true);
+        assertZipContent("Hello world!", archivedDataSetFile, "original/my-data/subfolder/hello.txt", true);
+        assertZipContent("Nothing to read!", archivedDataSetFile, "original/my-data/read-me.txt", true);
+        assertZipContent(HDF5_ARCHIVE, archivedDataSetFile, "original/my-data/subfolder/my-archive.h5", true);
+    }
+
     @Test
     public void testDeleteFromArchive()
     {
@@ -526,7 +591,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals("[]", processingStatus1.getErrorStatuses().toString());
         File archivedDataSetFile = new File(defaultArchive, LOCATION + "/" + ds1.getDataSetCode() + ".zip");
         assertEquals(true, archivedDataSetFile.exists());
-        
+
         ProcessingStatus processingStatus2 = archiver.deleteFromArchive(Arrays.asList(
                 new DatasetLocation(ds1.getCode(), ds1.getLocation(), DATA_STORE_CODE, "")));
 
@@ -537,7 +602,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals("[]", processingStatus2.getErrorStatuses().toString());
         assertEquals(false, archivedDataSetFile.exists());
     }
-    
+
     @Test
     public void testMarkAsDeletedFromArchive()
     {
@@ -545,8 +610,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").property("E-PROP", "42").getExperiment();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
-                .experiment(experiment).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).getDataSet();
         DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareUpdateShareIdAndSize(537669);
@@ -563,7 +628,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals("[]", processingStatus1.getErrorStatuses().toString());
         File archivedDataSetFile = new File(defaultArchive, ds1.getDataSetCode() + ".zip");
         assertEquals(true, archivedDataSetFile.exists());
-        
+
         ProcessingStatus processingStatus2 = archiver.deleteFromArchive(Arrays.asList(
                 new DatasetLocation(ds1.getCode(), ds1.getLocation(), DATA_STORE_CODE, "")));
 
@@ -573,7 +638,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 + archivedDataSetFile, logRecorder.getLogContent());
         assertEquals("[]", processingStatus2.getErrorStatuses().toString());
         assertEquals(true, archivedDataSetFile.exists());
-        File markerFile = new File(defaultArchive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS 
+        File markerFile = new File(defaultArchive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS
                 + "/" + ds1.getDataSetCode());
         assertEquals(true, markerFile.exists());
     }
@@ -586,8 +651,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").property("E-PROP", "42").getExperiment();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
-                .experiment(experiment).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).getDataSet();
         DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareUpdateShareIdAndSize(537669);
@@ -604,7 +669,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals("[]", processingStatus1.getErrorStatuses().toString());
         File archivedDataSetFile = new File(defaultArchive, LOCATION + "/" + ds1.getDataSetCode() + ".zip");
         assertEquals(true, archivedDataSetFile.exists());
-        
+
         ProcessingStatus processingStatus2 = archiver.deleteFromArchive(Arrays.asList(
                 new DatasetLocation(ds1.getCode(), ds1.getLocation(), DATA_STORE_CODE, "")));
 
@@ -614,11 +679,11 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 + archivedDataSetFile, logRecorder.getLogContent());
         assertEquals("[]", processingStatus2.getErrorStatuses().toString());
         assertEquals(true, archivedDataSetFile.exists());
-        File markerFile = new File(defaultArchive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS 
+        File markerFile = new File(defaultArchive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS
                 + "/" + ds1.getDataSetCode());
         assertEquals(true, markerFile.exists());
     }
-    
+
     @Test
     public void testMarkAsDeletedFromArchiveWithShardingAndMapping()
     {
@@ -632,8 +697,8 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         Experiment experiment = new ExperimentBuilder().identifier("/S/P/E1").type("MY-E").property("E-PROP", "42").getExperiment();
         PhysicalDataSet ds1 =
                 new DataSetBuilder().code(DATA_SET_CODE).type("MY-TYPE").location(LOCATION)
-                .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
-                .experiment(experiment).getDataSet();
+                        .store(new DataStoreBuilder(DATA_STORE_CODE).getStore()).fileFormat("ABC")
+                        .experiment(experiment).getDataSet();
         DatasetDescription dsd1 = DataSetTranslator.translateToDescription(ds1);
         prepareGetShareId();
         prepareUpdateShareIdAndSize(537669);
@@ -650,10 +715,10 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         assertEquals("[]", processingStatus1.getErrorStatuses().toString());
         File archivedDataSetFile = new File(archive, LOCATION + "/" + ds1.getDataSetCode() + ".zip");
         assertEquals(true, archivedDataSetFile.exists());
-        
+
         ProcessingStatus processingStatus2 = archiver.deleteFromArchive(Arrays.asList(
                 new DatasetLocation(ds1.getCode(), ds1.getLocation(), DATA_STORE_CODE, "")));
-        
+
         assertEquals("INFO  OPERATION.IdentifierAttributeMappingManager - Mapping file '" + mappingFile + "' successfully loaded.\n"
                 + "INFO  OPERATION.AbstractDatastorePlugin - "
                 + "Archiving of the following datasets has been requested: [Dataset 'ds1']\n"
@@ -661,11 +726,11 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 + archivedDataSetFile, logRecorder.getLogContent());
         assertEquals("[]", processingStatus2.getErrorStatuses().toString());
         assertEquals(true, archivedDataSetFile.exists());
-        File markerFile = new File(archive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS 
+        File markerFile = new File(archive, DataSetFileOperationsManager.FOLDER_OF_AS_DELETED_MARKED_DATA_SETS
                 + "/" + ds1.getDataSetCode());
         assertEquals(true, markerFile.exists());
     }
-    
+
     private void assertZipContent(File expectedContent, File file, String path, boolean compressed)
     {
         try
@@ -678,14 +743,14 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 fail("Directory path: " + path);
             }
             assertEquals(compressed ? ZipEntry.DEFLATED : ZipEntry.STORED, entry.getMethod());
-            assertEquals(IOUtils.toByteArray(new FileInputStream(expectedContent)), 
+            assertEquals(IOUtils.toByteArray(new FileInputStream(expectedContent)),
                     IOUtils.toByteArray(zipFile.getInputStream(entry)));
         } catch (Exception ex)
         {
             throw CheckedExceptionTunnel.wrapIfNecessary(ex);
         }
     }
-    
+
     private void assertZipContent(String expectedContent, File file, String path, boolean compressed)
     {
         try
@@ -704,7 +769,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
             throw CheckedExceptionTunnel.wrapIfNecessary(ex);
         }
     }
-    
+
     private void assertZipDirectoryEntry(File file, String path)
     {
         try
@@ -718,7 +783,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
             throw CheckedExceptionTunnel.wrapIfNecessary(ex);
         }
     }
-    
+
     private void prepareAsContent(final String dataSetCode, final File file)
     {
         context.checking(new Expectations()
@@ -740,16 +805,16 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
                 }
             });
     }
-    
+
     private void prepareTryGetSample(final Sample sample)
     {
         context.checking(new Expectations()
-        {
             {
-                one(service).tryGetSampleWithExperiment(SampleIdentifierFactory.parse(sample.getIdentifier()));
-                will(returnValue(sample));
-            }
-        });
+                {
+                    one(service).tryGetSampleWithExperiment(SampleIdentifierFactory.parse(sample.getIdentifier()));
+                    will(returnValue(sample));
+                }
+            });
     }
 
     private void prepareTryGetDataSet(final AbstractExternalData dataSet)
@@ -833,7 +898,7 @@ public class DistributingArchiverTest extends AbstractArchiverTestCase
         archiver.statusUpdater = statusUpdater;
         return archiver;
     }
-    
+
     private void wait(int seconds)
     {
         try