diff --git a/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java b/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java
index f86de0f0ab..9dd819d011 100644
--- a/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java
+++ b/shanoir-ng-datasets/src/main/java/org/shanoir/ng/processing/service/ProcessingDownloaderServiceImpl.java
@@ -74,7 +74,7 @@ public void massiveDownload(List<DatasetProcessing> processingList, boolean resu
 
     private void manageProcessingsDownload(List<DatasetProcessing> processingList, Map<Long, DatasetDownloadError> downloadResults, ZipOutputStream zipOutputStream, String format, boolean withManifest, Map<Long, List<String>> filesByAcquisitionId, Long converterId) throws RestServiceException, IOException {
         for (DatasetProcessing processing : processingList) {
-            String processingFilePath = getExecFilepath(processing.getId(), getExaminationDatas(processing.getInputDatasets()));
+            String processingFilePath = getExecFilepath(processing, getExaminationDatas(processing.getInputDatasets()));
             String subjectName = getProcessingSubject(processing);
             for (Dataset dataset : processing.getInputDatasets()) {
                 manageDatasetDownload(dataset, downloadResults, zipOutputStream, subjectName, processingFilePath  + "/" + shapeForPath(dataset.getName()), format, withManifest, filesByAcquisitionId, converterId);
@@ -141,17 +141,27 @@ private Pair<Long, String> getExaminationDatas(List<Dataset> inputs) {
         return new Pair<>(0L, "");
     }
 
-    private String getExecFilepath(Long processingId, Pair<Long, String> examDatas) {
+    private String getExecFilepath(DatasetProcessing processing, Pair<Long, String> examDatas) {
+        String execFilePath = "";
+        if(Objects.equals(processing.getComment(), "comete_moelle/0.1")){
+            if(!processing.getOutputDatasets().stream().filter(it -> Objects.equals(it.getName(), "results.yaml")).toList().isEmpty()) {
+                execFilePath = "result/";
+            } else if(!processing.getOutputDatasets().stream().filter(it -> Objects.equals(it.getName(), "error.yaml")).toList().isEmpty()) {
+                execFilePath = "error/";
+            } else {
+                execFilePath = "unknown";
+            }
 
-        String execFilePath = "processing_" + processingId +  "_exam_" + examDatas.first();
-        if (!Objects.equals(examDatas.second(), "")) {
+        }
+        execFilePath += "processing_" + processing.getId() +  "_exam_" + examDatas.first();
+        if (Objects.nonNull(examDatas.second()) && !Objects.equals(examDatas.second(), "")) {
             execFilePath += "_" + examDatas.second();
         }
         return shapeForPath(execFilePath);
     }
 
     private String shapeForPath(String path){
-        path = path.replaceAll("[^a-zA-Z0-9_\\-]", "_");
+        path = path.replaceAll("[^a-zA-Z0-9_]", "_").replaceAll("_+$", "").replaceAll("_+", "_");
         if (path.length() > 255) {
             path = path.substring(0, 254);
         }