From 480d6bd2cb668e786a51410e3088add2a94ed56e Mon Sep 17 00:00:00 2001
From: philippe tcheriatinsky <philippe.tcherniatinsky@inrae.fr>
Date: Mon, 27 Jan 2025 18:55:15 +0100
Subject: [PATCH] =?UTF-8?q?Refonte=20des=20droits=20pour=20les=20op=C3=A9r?=
 =?UTF-8?q?ations=20de=20publication=20/=20d=C3=A9p=C3=B4t/=20suppression?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- utilisation de serviceContainer.authorizationService().getPrivilegeAssessorForApplication
- créations de rôles dédies

Reste à faire du refactoring pour remonter certaines fonctionnailtes dans les objets métiers pour réutilisation

Code mort à supprimer
---
 .../oresing/domain/BinaryFileDataset.java     |  35 +++-
 .../application/configuration/Submission.java |   2 +-
 .../AuthorizationsForApplicationUser.java     |  55 ++++--
 ...PrivilegeAssessorDomainForApplication.java |  84 +++++++--
 .../NotApplicationDataReaderException.java    |  25 +++
 .../NotApplicationDataWriterException.java    |  25 +++
 ...licationDataWriterForDepositException.java |  17 ++
 ...licationDataWriterForPublishException.java |  25 +++
 .../exception/NotOpenAdomAdminException.java  |   6 +-
 .../role/ApplicationAdminUser.java            |  31 +++-
 .../role/ApplicationDataDelete.java           |  22 +++
 .../role/ApplicationDataReader.java           |  15 ++
 .../role/ApplicationDataWriter.java           | 161 +++++++++++++++++
 .../role/ApplicationDeleteUser.java           |  75 ++++++++
 .../role/ApplicationDepositUser.java          |   8 +
 .../role/ApplicationDepositWriterUser.java    |  50 ++++++
 .../role/ApplicationManager.java              |   3 +-
 .../role/ApplicationManagerUser.java          |  33 +++-
 .../role/ApplicationPublishWriterUser.java    |  51 ++++++
 .../role/ApplicationReader.java               |  34 ----
 .../role/ApplicationUser.java                 |   3 +-
 .../role/PrivilegeApplicationDomain.java      |   1 +
 .../data/read/query/ComponentOrderBy.java     |   4 +-
 .../read/query/ComponentOrderByForExport.java |   5 +-
 .../read/query/ComponentPatternOrderBy.java   |   4 +-
 .../query/ComponentPatternValueOrderBy.java   |  10 +-
 .../read/query/DynamicComponentOrderBy.java   |   4 +-
 .../AuthorizationRequestException.java        |   2 +-
 .../inra/oresing/domain/file/FileOrUUID.java  |  14 +-
 .../repository/data/DataRepository.java       |   4 +-
 .../data/DataRepositoryForBuffer.java         |   6 +
 .../services/file/BinaryFileService.java      |   7 +-
 .../oresing/persistence/DataRepository.java   |   4 +-
 .../fr/inra/oresing/persistence/DataRow.java  |  12 +-
 .../data/read/DataRepositoryWithBuffer.java   |  16 +-
 .../fr/inra/oresing/rest/OreSiResources.java  |  71 ++++----
 .../rest/binaryFile/BinaryFileService.java    |  13 +-
 .../inra/oresing/rest/data/DataService.java   |  21 ++-
 .../oresing/rest/data/VersioningService.java  |  72 +++++---
 .../rest/data/extraction/DataCsvBuilder.java  |  12 +-
 .../data/extraction/DataCsvHeaderWriter.java  |   8 +-
 .../data/extraction/DataCsvRowBuilder.java    |   3 +-
 .../publication/AuthorizationForUser.java     |   6 +-
 .../AuthorizationForUserBuilder.java          | 166 ------------------
 .../AuthorizationPublicationService.java      |  80 ++++-----
 ...uthorizationPublicationServiceBuilder.java |  93 +++++-----
 ...heckRights.java => CheckAndStoreFile.java} |  24 +--
 .../data/publication/FileNameResolver.java    |  13 +-
 .../rest/data/publication/ParamsResolver.java |  42 -----
 .../oresing/rest/data/publication/State.java  |  36 +---
 .../rest/data/publication/StoreFile.java      |  84 +++++----
 .../data/publication/StoredFileBuilder.java   |  28 +++
 .../data/publication/UnPublishedVersions.java |  10 +-
 .../rest/exceptions/OreSiIOException.java     |  14 ++
 .../authorization/GetGrantableResult.java     |   3 +-
 .../rest/model/data/DataRowResult.java        |   3 +-
 .../java/fr/inra/oresing/rest/Fixtures.java   |   4 +-
 .../inra/oresing/rest/OreSiResourcesTest.java |  36 ++--
 .../fixtures/applications/errors/errors.json  |   2 +-
 .../ore/monsore/changeMonsore.txt             |  34 ++--
 .../ore/monsore/createMonsore.txt             |  42 ++---
 .../ore/monsore/validateMonsore.txt           |  20 +--
 62 files changed, 1143 insertions(+), 650 deletions(-)
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataReaderException.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterException.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForDepositException.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForPublishException.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataDelete.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataReader.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataWriter.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDeleteUser.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositUser.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositWriterUser.java
 create mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationPublishWriterUser.java
 delete mode 100644 src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationReader.java
 delete mode 100644 src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUserBuilder.java
 rename src/main/java/fr/inra/oresing/rest/data/publication/{CheckRights.java => CheckAndStoreFile.java} (58%)
 delete mode 100644 src/main/java/fr/inra/oresing/rest/data/publication/ParamsResolver.java
 create mode 100644 src/main/java/fr/inra/oresing/rest/data/publication/StoredFileBuilder.java
 create mode 100644 src/main/java/fr/inra/oresing/rest/exceptions/OreSiIOException.java

diff --git a/src/main/java/fr/inra/oresing/domain/BinaryFileDataset.java b/src/main/java/fr/inra/oresing/domain/BinaryFileDataset.java
index b42f9bd..e7fdd14 100644
--- a/src/main/java/fr/inra/oresing/domain/BinaryFileDataset.java
+++ b/src/main/java/fr/inra/oresing/domain/BinaryFileDataset.java
@@ -3,20 +3,23 @@ package fr.inra.oresing.domain;
 import com.google.common.base.Strings;
 import fr.inra.oresing.domain.application.configuration.Ltree;
 import fr.inra.oresing.domain.application.configuration.date.LocalDateTimeRange;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import lombok.Getter;
 import lombok.Setter;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.stream.Collectors;
 
 @Getter
 @Setter
 public class BinaryFileDataset {
-    public static BinaryFileDataset EMPTY_INSTANCE(){
+    public static BinaryFileDataset EMPTY_INSTANCE() {
         return new BinaryFileDataset();
     }
+
     private String datatype;
     private Map<String, List<Ltree>> requiredAuthorizations = new HashMap<>();
     private String from;
@@ -25,12 +28,36 @@ public class BinaryFileDataset {
 
     @Override
     public String toString() {
-        final String authorizationsString =requiredAuthorizations.entrySet().stream()
+        final String authorizationsString = requiredAuthorizations.entrySet().stream()
                 .map(ra -> String.format("%s : %s", ra.getKey(), ra.getValue().getFirst().getSql()))
                 .collect(Collectors.joining(",", "[", "]"));
         return String.format("%s -> [%s, %s]",
-                authorizationsString, Strings.isNullOrEmpty(from) ?"": LocalDateTimeRange.DATE_FORMATTER_DDMMYYYY.format(LocalDateTimeRange.DATE_TIME_FORMATTER.parse(from)),
-                Strings.isNullOrEmpty(to)?"": LocalDateTimeRange.DATE_FORMATTER_DDMMYYYY.format(LocalDateTimeRange.DATE_TIME_FORMATTER.parse(to))
+                authorizationsString, Strings.isNullOrEmpty(from) ? "" : LocalDateTimeRange.DATE_FORMATTER_DDMMYYYY.format(LocalDateTimeRange.DATE_TIME_FORMATTER.parse(from)),
+                Strings.isNullOrEmpty(to) ? "" : LocalDateTimeRange.DATE_FORMATTER_DDMMYYYY.format(LocalDateTimeRange.DATE_TIME_FORMATTER.parse(to))
         );
     }
+
+
+    public BinaryFileDataset testrequiredAuthorizationsAndReturnHierarchicalKeys(DataRepositoryForBuffer dataRepositoryForBuffer) {
+        BinaryFileDataset binaryFileDataset = this.copy();
+        Map<String, List<Ltree>> requiredAuthorizationsTested = Optional.ofNullable(binaryFileDataset)
+                .map(BinaryFileDataset::getRequiredAuthorizations).
+                orElseGet(HashMap::new);
+        for (Map.Entry<String, List<Ltree>> requiredAuthorizationByReference : requiredAuthorizationsTested.entrySet()) {
+            List<Ltree> hierarchicalKeyForEntry = dataRepositoryForBuffer.getHierarchicalKeyForEntry(requiredAuthorizationByReference);
+            requiredAuthorizationsTested.put(requiredAuthorizationByReference.getKey(), hierarchicalKeyForEntry);
+        }
+        return binaryFileDataset;
+
+    }
+
+    public BinaryFileDataset copy() {
+        BinaryFileDataset binaryFileDataset = new BinaryFileDataset();
+        binaryFileDataset.setRequiredAuthorizations(requiredAuthorizations);
+        binaryFileDataset.setTo(to);
+        binaryFileDataset.setFrom(from);
+        binaryFileDataset.setComment(comment);
+        binaryFileDataset.setDatatype(datatype);
+        return binaryFileDataset;
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/application/configuration/Submission.java b/src/main/java/fr/inra/oresing/domain/application/configuration/Submission.java
index 0757ecb..5af7bd3 100644
--- a/src/main/java/fr/inra/oresing/domain/application/configuration/Submission.java
+++ b/src/main/java/fr/inra/oresing/domain/application/configuration/Submission.java
@@ -85,7 +85,7 @@ public record Submission(
 
         } catch (Exception e) {
             throw new SiOreAuthorizationRequestException(
-                    AuthorizationRequestException.INVAALID_FILE_NAME,
+                    AuthorizationRequestException.INVALID_FILE_NAME,
                     Map.of("fileNameFormat", fileNameParsing().createExampleSubmissionFileName())
             );
 
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/AuthorizationsForApplicationUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/AuthorizationsForApplicationUser.java
index adb573e..025c72b 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/AuthorizationsForApplicationUser.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/AuthorizationsForApplicationUser.java
@@ -4,10 +4,8 @@ import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.repository.authorization.OperationType;
 import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
 
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
+import java.util.stream.Collectors;
 
 public record AuthorizationsForApplicationUser(
         List<String> roles,
@@ -18,20 +16,45 @@ public record AuthorizationsForApplicationUser(
         Map<String, AuthorizationParsed> publicAuthorizations
 ) {
     public boolean canRead(String dataName) {
+        return canDoAction(dataName, Set.of(OperationType.extraction));
+    }
+
+    /* find if exists authorization foroperationtype of action */
+    private boolean canDoAction(String dataName, Set<OperationType> actions) {
         if(isApplicationManager || isUserManager){
             return true;
         }
-        return
-                Optional.of(userAuthorizations())
-                        .map(authorizations -> authorizations.get(dataName))
-                        .stream().flatMap(List::stream)
-                        .map(AuthorizationParsed::operationTypes)
-                        .flatMap(Set::stream)
-                        .anyMatch(OperationType.extraction::equals) ||
-                        Optional.of(publicAuthorizations())
-                                .map(authorizations -> authorizations.get(dataName))
-                                .map(AuthorizationParsed::operationTypes)
-                                .stream().flatMap(Set::stream)
-                                .anyMatch(OperationType.extraction::equals);
+        return Optional.of(userAuthorizations())
+                       .map(authorizations -> authorizations.get(dataName))
+                       .stream().flatMap(List::stream)
+                       .map(AuthorizationParsed::operationTypes)
+                       .flatMap(Set::stream)
+                       .anyMatch(actions::contains) ||
+               Optional.of(publicAuthorizations())
+                       .map(authorizations -> authorizations.get(dataName))
+                       .map(AuthorizationParsed::operationTypes)
+                       .stream().flatMap(Set::stream)
+                       .anyMatch(actions::contains);
+    }
+
+    public ArrayList<AuthorizationParsed> getAuthorizations(String dataName, Set<OperationType> actions){
+        ArrayList<AuthorizationParsed> parsedAuthorisationForActions = Optional.of(userAuthorizations())
+                .map(authorizations -> authorizations.get(dataName))
+                .stream().flatMap(List::stream)
+                .filter(authorizationParsed -> authorizationParsed.operationTypes().stream().anyMatch(actions::contains))
+                .collect(Collectors.toCollection(ArrayList::new));
+        Optional.of(publicAuthorizations())
+                .map(authorizations -> authorizations.get(dataName))
+                .filter(authorizationParsed -> authorizationParsed.operationTypes().stream().anyMatch(actions::contains))
+                .ifPresent(parsedAuthorisationForActions::add);
+        return parsedAuthorisationForActions;
+    }
+
+    public boolean canWrite(String dataName, boolean toPublish) {
+        return canDoAction(dataName, toPublish?Set.of(OperationType.publication):Set.of(OperationType.depot));
+    }
+
+    public boolean canDelete(String dataName, boolean isRepository) {
+        return canDoAction(dataName, isRepository?Set.of(OperationType.publication, OperationType.delete):Set.of(OperationType.publication));
     }
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/PrivilegeAssessorDomainForApplication.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/PrivilegeAssessorDomainForApplication.java
index 0457897..a0e5890 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/PrivilegeAssessorDomainForApplication.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/PrivilegeAssessorDomainForApplication.java
@@ -1,13 +1,10 @@
 package fr.inra.oresing.domain.authorization.privilegeassessor;
 
 import fr.inra.oresing.domain.application.Application;
-import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationManagerRightsException;
-import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationUserManagerRightsException;
-import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationUserReaderRightsException;
-import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationAdminUser;
-import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationManager;
-import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationManagerUser;
-import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationReader;
+import fr.inra.oresing.domain.application.configuration.Submission;
+import fr.inra.oresing.domain.application.configuration.SubmissionType;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.*;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.*;
 import fr.inra.oresing.domain.repository.authorization.OperationType;
 import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
 import fr.inra.oresing.rest.model.authorization.AuthorizationsForUserResult;
@@ -21,6 +18,9 @@ public record PrivilegeAssessorDomainForApplication<PrivilegeApplicationDomain>(
         PrivilegeApplicationDomain domain,
         Application application,
         GetGrantableResult grantable) implements PrivilegeAssessorDomain {
+    /*
+    Test if is applicationAdminUserForUpdate
+     */
     public ApplicationManager forUpdateApplication() {
         if (!authorizations.isApplicationManager()) {
             throw new NotApplicationManagerRightsException(application.getName());
@@ -28,20 +28,30 @@ public record PrivilegeAssessorDomainForApplication<PrivilegeApplicationDomain>(
         return new ApplicationAdminUser(application());
     }
 
+    /*
+    Test if is applicationManagerUserForUpdateRights
+     */
     public ApplicationManager forManageAuthorizations() {
         if (!authorizations.isUserManager()) {
             throw new NotApplicationUserManagerRightsException(application.getName());
         }
-        return new ApplicationManagerUser();
+        return new ApplicationManagerUser(application());
     }
 
+
+    /*
+    Test if is applicationManagerUserForCreateRights
+     */
     public ApplicationManager forAddAuthorization() {
         if (!authorizations.isUserManager()) {
             throw new NotApplicationUserReaderRightsException(application.getName());
         }
-        return new ApplicationManagerUser();
+        return new ApplicationManagerUser(application());
     }
 
+    /*
+    Test if is applicationManagerUserForManageAdministrator
+     */
     public ApplicationAdminUser forManageAdministrator() {
         if (!authorizations.isApplicationManager()) {
             throw new NotApplicationManagerRightsException(application.getName());
@@ -49,11 +59,15 @@ public record PrivilegeAssessorDomainForApplication<PrivilegeApplicationDomain>(
         return new ApplicationAdminUser(application());
     }
 
-    public ApplicationReader forDataRead(String dataName) {
+
+    /*
+    Test if is applicationUserForReadingData
+     */
+    public ApplicationDataReader forDataRead(String dataName) {
         Optional.of(authorizations())
                 .filter(authorizationsForApplicationUser -> authorizationsForApplicationUser.canRead(dataName))
-                .orElseThrow(NotApplicationManagerRightsException::new);
-        return new ApplicationReader(application());
+                .orElseThrow(()->new NotApplicationDataReaderException(application().getName(), dataName));
+        return new ApplicationDataReader(application());
     }
 
     public Map<AuthorizationsForUserResult.Roles, Boolean> getAuthorizationsForUser(String dataName) {
@@ -91,4 +105,50 @@ public record PrivilegeAssessorDomainForApplication<PrivilegeApplicationDomain>(
         }
         return  new ApplicationAdminUser(application());
     }
+
+    public ApplicationDataWriter forDataWrite(String dataName, boolean toPublish) {
+        AuthorizationsForApplicationUser authorizationsForApplicationUser = Optional.of(authorizations())
+                .filter(authorizations -> authorizations.canWrite(dataName, toPublish))
+                .orElseThrow(() -> new NotApplicationDataWriterException(application().getName(), dataName));
+        if(authorizationsForApplicationUser.isApplicationManager()){
+            return new ApplicationAdminUser(application(),dataName);
+        }
+        if(authorizationsForApplicationUser.isUserManager()){
+            return new ApplicationManagerUser(application(), dataName);
+        }
+        if(toPublish || !application().isData(dataName)){
+            return new ApplicationPublishWriterUser(
+                    application(),
+                    dataName,
+                    authorizationsForApplicationUser.getAuthorizations(dataName, Set.of(OperationType.publication))
+            );
+        }
+        return new ApplicationDepositWriterUser(
+                application(),
+                dataName,
+                authorizationsForApplicationUser.getAuthorizations(dataName, Set.of(OperationType.depot))
+        );
+    }
+
+    public ApplicationDataDelete forDataDelete(String dataName) {
+        boolean isRepository = application().findSubmission(dataName)
+                .map(Submission::strategy)
+                .filter(SubmissionType.OA_VERSIONING::equals)
+                .isPresent();
+        AuthorizationsForApplicationUser authorizationsForApplicationUser = Optional.of(authorizations())
+                .filter(authorizations -> authorizations.canDelete(dataName, isRepository))
+                .orElseThrow(() -> new NotApplicationCanDeleteRightsException(application().getName(), dataName));
+        if(authorizationsForApplicationUser.isApplicationManager()){
+            return new ApplicationAdminUser(application(),dataName);
+        }
+        if(authorizationsForApplicationUser.isUserManager()){
+            return new ApplicationManagerUser(application(), dataName);
+        }
+        return new ApplicationDeleteUser(
+                application(),
+                dataName,
+                authorizationsForApplicationUser.getAuthorizations(dataName, Set.of(OperationType.delete))
+        );
+    }
+
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataReaderException.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataReaderException.java
new file mode 100644
index 0000000..9823578
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataReaderException.java
@@ -0,0 +1,25 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.exception;
+
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import lombok.Getter;
+
+@Getter
+public class NotApplicationDataReaderException extends OreSiTechnicalException {
+    public static final String NO_RIGHT_FOR_USER_DATA_READER = "NO_RIGHT_FOR_USER_DATA_READER";
+    public String applicationName;
+    public String dataName;
+
+    public NotApplicationDataReaderException(final String applicationName, String dataName) {
+        super(NO_RIGHT_FOR_USER_DATA_READER);
+        this.applicationName = applicationName;
+        this.dataName = dataName;
+    }
+
+    public NotApplicationDataReaderException() {
+        super(NO_RIGHT_FOR_USER_DATA_READER);
+    }
+
+    public NotApplicationDataReaderException(final Throwable cause) {
+        super(NO_RIGHT_FOR_USER_DATA_READER, cause);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterException.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterException.java
new file mode 100644
index 0000000..1285de4
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterException.java
@@ -0,0 +1,25 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.exception;
+
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import lombok.Getter;
+
+@Getter
+public class NotApplicationDataWriterException extends OreSiTechnicalException {
+    public static final String NO_RIGHT_FOR_USER_DATA_WRITER = "NO_RIGHT_FOR_USER_DATA_WRITER";
+    public String applicationName;
+    public String dataName;
+
+    public NotApplicationDataWriterException(final String applicationName, String dataName) {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER);
+        this.applicationName = applicationName;
+        this.dataName = dataName;
+    }
+
+    public NotApplicationDataWriterException() {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER);
+    }
+
+    public NotApplicationDataWriterException(final Throwable cause) {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER, cause);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForDepositException.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForDepositException.java
new file mode 100644
index 0000000..d3e72f6
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForDepositException.java
@@ -0,0 +1,17 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.exception;
+
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import lombok.Getter;
+
+@Getter
+public class NotApplicationDataWriterForDepositException extends OreSiTechnicalException {
+    public static final String NO_RIGHT_FOR_USER_DATA_WRITER_FOR_DEPOSIT = "NO_RIGHT_FOR_USER_DATA_WRITER_FOR_DEPOSIT";
+    public String applicationName;
+    public String dataName;
+
+    public NotApplicationDataWriterForDepositException(final String applicationName, String dataName) {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER_FOR_DEPOSIT);
+        this.applicationName = applicationName;
+        this.dataName = dataName;
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForPublishException.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForPublishException.java
new file mode 100644
index 0000000..14f4281
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotApplicationDataWriterForPublishException.java
@@ -0,0 +1,25 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.exception;
+
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import lombok.Getter;
+
+@Getter
+public class NotApplicationDataWriterForPublishException extends OreSiTechnicalException {
+    public static final String NO_RIGHT_FOR_USER_DATA_WRITER_FOR_PUBLISH = "NO_RIGHT_FOR_USER_DATA_WRITER_FOR_PUBLISH";
+    public String applicationName;
+    public String dataName;
+
+    public NotApplicationDataWriterForPublishException(final String applicationName, String dataName) {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER_FOR_PUBLISH);
+        this.applicationName = applicationName;
+        this.dataName = dataName;
+    }
+
+    public NotApplicationDataWriterForPublishException() {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER_FOR_PUBLISH);
+    }
+
+    public NotApplicationDataWriterForPublishException(final Throwable cause) {
+        super(NO_RIGHT_FOR_USER_DATA_WRITER_FOR_PUBLISH, cause);
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotOpenAdomAdminException.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotOpenAdomAdminException.java
index 9b6f628..088dbba 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotOpenAdomAdminException.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/exception/NotOpenAdomAdminException.java
@@ -3,12 +3,12 @@ package fr.inra.oresing.domain.authorization.privilegeassessor.exception;
 import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
 
 public class NotOpenAdomAdminException extends OreSiTechnicalException {
-    public static final String openAdomAdmin_REQUIRED_FOR_OPERATION = "openAdomAdmin_REQUIRED_FOR_OPERATION";
+    public static final String OPEN_ADOM_ADMIN_REQUIRED_FOR_OPERATION = "OPEN_ADOM_ADMIN_REQUIRED_FOR_OPERATION";
     public NotOpenAdomAdminException() {
-        super(openAdomAdmin_REQUIRED_FOR_OPERATION);
+        super(OPEN_ADOM_ADMIN_REQUIRED_FOR_OPERATION);
     }
 
     public NotOpenAdomAdminException(final Throwable cause) {
-        super(openAdomAdmin_REQUIRED_FOR_OPERATION, cause);
+        super(OPEN_ADOM_ADMIN_REQUIRED_FOR_OPERATION, cause);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationAdminUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationAdminUser.java
index 1b60257..7f5acfd 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationAdminUser.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationAdminUser.java
@@ -5,13 +5,22 @@ import fr.inra.oresing.domain.OreSiUser;
 import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalRoleToBeGranted;
 import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalUserToBeGranted;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
 import fr.inra.oresing.domain.repository.authorization.role.OreSiRightOnApplicationRole;
 
 import java.util.List;
 import java.util.Objects;
 import java.util.Optional;
 
-public record ApplicationAdminUser(Application application) implements ApplicationManager {
+public record ApplicationAdminUser(
+        Application application,
+        String dataName
+) implements ApplicationManager, ApplicationDataWriter, ApplicationDataDelete {
+    public ApplicationAdminUser(Application application) {
+        this(application, ApplicationManager.ALL_DATANAMES);
+    }
+
     @Override
     public boolean canUpdateApplication() {
         return true;
@@ -31,4 +40,24 @@ public record ApplicationAdminUser(Application application) implements Applicati
         }
         return true;
     }
+
+    @Override
+    public boolean canDelete(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForDeposit(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public OreSiTechnicalException getException() {
+        return null;
+    }
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataDelete.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataDelete.java
new file mode 100644
index 0000000..b752eb0
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataDelete.java
@@ -0,0 +1,22 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import com.google.common.base.Strings;
+import fr.inra.oresing.domain.BinaryFileDataset;
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.application.configuration.date.LocalDateTimeRange;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+public sealed interface ApplicationDataDelete extends ApplicationDataWriter
+        permits ApplicationAdminUser, ApplicationDeleteUser, ApplicationManagerUser {
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataReader.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataReader.java
new file mode 100644
index 0000000..be9563a
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataReader.java
@@ -0,0 +1,15 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import fr.inra.oresing.domain.OreSiRoleForUser;
+import fr.inra.oresing.domain.OreSiUser;
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalRoleToBeGranted;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalUserToBeGranted;
+import fr.inra.oresing.domain.repository.authorization.role.OreSiRightOnApplicationRole;
+
+import java.util.List;
+import java.util.Objects;
+import java.util.Optional;
+
+public record ApplicationDataReader(Application application) implements ApplicationUser {
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataWriter.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataWriter.java
new file mode 100644
index 0000000..6da07e2
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDataWriter.java
@@ -0,0 +1,161 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import com.google.common.base.Strings;
+import fr.inra.oresing.domain.BinaryFileDataset;
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.application.configuration.date.LocalDateTimeRange;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.*;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+public sealed interface ApplicationDataWriter extends ApplicationUser
+        permits ApplicationAdminUser, ApplicationDataDelete, ApplicationDeleteUser, ApplicationDepositWriterUser, ApplicationManagerUser, ApplicationPublishWriterUser {
+    boolean canDelete(FileOrUUID fileOrUUID);
+
+    boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID);
+
+    boolean hasRightForDeposit(FileOrUUID fileOrUUID);
+
+
+    Application application();
+
+    default String applicationName() {
+        return application().getName();
+    }
+
+    ;
+
+    String dataName();
+
+    default boolean isData() {
+        return application().isData(dataName());
+    }
+
+    OreSiTechnicalException getException();
+
+    default boolean testRequiredAuthorizations(Map<String, Set<String>> authorizationsScope, Map<String, List<Ltree>> submissionScope) {
+        if (submissionScope.isEmpty()) {
+            return true;
+        }
+        for (Map.Entry<String, Set<String>> authorizationScopeByReference : authorizationsScope.entrySet()) {
+            Set<String> authorizationScopes = authorizationScopeByReference.getValue();
+            if (!CollectionUtils.isEmpty(authorizationScopes) && !testSumissionScopeForReference(
+                    authorizationScopes,
+                    submissionScope.get(authorizationScopeByReference.getKey())
+            )) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    default boolean testSumissionScopeForReference(Set<String> authorizationScopes, List<Ltree> submissionScopes) {
+        if (CollectionUtils.isEmpty(submissionScopes)) {
+            return false;
+        }
+        if (!submissionScopes.stream()
+                .allMatch(sc -> authorizationScopes.contains(sc.getSql()))) {
+            return false;
+        }
+        return true;
+    }default boolean isDateInRangeAuthorized(
+            BinaryFileDataset binaryfiledataset,
+            List<AuthorizationParsed> authorizationParseds
+    ) {
+        // Extraction des dates de soumission
+        LocalDateTime from = Optional.ofNullable(binaryfiledataset)
+                .map(BinaryFileDataset::getFrom)
+                .filter(Predicate.not(Strings::isNullOrEmpty))
+                .map(date -> LocalDateTime.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+                .orElse(LocalDateTime.MIN);
+
+        LocalDateTime to = Optional.ofNullable(binaryfiledataset)
+                .map(BinaryFileDataset::getTo)
+                .filter(Predicate.not(Strings::isNullOrEmpty))
+                .map(date -> LocalDateTime.parse(date, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")))
+                .orElse(LocalDateTime.MAX);
+
+        LocalDateTimeRange submissionIntervalScope = LocalDateTimeRange.between(from, to);
+
+        // Liste des intervalles d'intersection
+        List<LocalDateTimeRange> authorizationMatchingIntervals = new ArrayList<>();
+
+        for (AuthorizationParsed authorizationParsed : authorizationParseds) {
+            LocalDateTimeRange authorizationIntervalScope = LocalDateTimeRange.between(
+                    Optional.ofNullable(authorizationParsed)
+                            .map(AuthorizationParsed::fromDay)
+                            .map(LocalDate::atStartOfDay)
+                            .orElse(LocalDateTime.MIN),
+                    Optional.ofNullable(authorizationParsed)
+                            .map(AuthorizationParsed::toDay)
+                            .map(LocalDate::atStartOfDay)
+                            .orElse(LocalDateTime.MAX)
+            );
+
+            // Vérification du chevauchement
+            if (submissionIntervalScope.getRange().lowerEndpoint()
+                        .compareTo(authorizationIntervalScope.getRange().upperEndpoint()) <= 0 &&
+                submissionIntervalScope.getRange().upperEndpoint()
+                        .compareTo(authorizationIntervalScope.getRange().lowerEndpoint()) >= 0) {
+
+                // Calcul de l'intervalle d'intersection
+                LocalDateTimeRange intersectionInterval = LocalDateTimeRange.between(
+                        submissionIntervalScope.getRange().lowerEndpoint().compareTo(authorizationIntervalScope.getRange().lowerEndpoint()) <= 0 ?
+                                authorizationIntervalScope.getRange().lowerEndpoint() :
+                                submissionIntervalScope.getRange().lowerEndpoint(),
+                        submissionIntervalScope.getRange().upperEndpoint().compareTo(authorizationIntervalScope.getRange().upperEndpoint()) >= 0 ?
+                                authorizationIntervalScope.getRange().upperEndpoint() :
+                                submissionIntervalScope.getRange().upperEndpoint()
+                );
+
+                authorizationMatchingIntervals.add(intersectionInterval);
+            }
+        }
+
+        // Vérification de la couverture totale
+        return verifyCoverageCompleteness(submissionIntervalScope, authorizationMatchingIntervals);
+    }
+
+    private boolean verifyCoverageCompleteness(
+            LocalDateTimeRange submissionIntervalScope,
+            List<LocalDateTimeRange> authorizationMatchingIntervals
+    ) {
+        // Trier les intervalles par date de début
+        List<LocalDateTimeRange> sortedIntervals = authorizationMatchingIntervals.stream()
+                .sorted(Comparator.comparing(interval -> interval.getRange().lowerEndpoint()))
+                .collect(Collectors.toList());
+
+        LocalDateTime currentCoverageEnd = submissionIntervalScope.getRange().lowerEndpoint();
+
+        for (LocalDateTimeRange interval : sortedIntervals) {
+            // Vérifier si l'intervalle couvre le trou précédent
+            if (interval.getRange().lowerEndpoint().compareTo(currentCoverageEnd) > 0) {
+                return false;  // Trou dans la couverture
+            }
+
+            // Mettre à jour la fin de couverture
+            currentCoverageEnd = interval.getRange().upperEndpoint().compareTo(currentCoverageEnd) > 0
+                    ? interval.getRange().upperEndpoint()
+                    : currentCoverageEnd;
+        }
+
+        // Vérifier si la couverture atteint la fin de l'intervalle de soumission
+        boolean isFullyCovered = currentCoverageEnd.compareTo(submissionIntervalScope.getRange().upperEndpoint()) >= 0;
+
+        if (!isFullyCovered) {
+            throw getException();
+        }
+
+        return true;
+    }
+
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDeleteUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDeleteUser.java
new file mode 100644
index 0000000..c7258f6
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDeleteUser.java
@@ -0,0 +1,75 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationCanDeleteRightsException;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.domain.repository.authorization.OperationType;
+import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+public record ApplicationDeleteUser(
+        Application application,
+        String dataName,
+        ArrayList<AuthorizationParsed> authorizations,
+        boolean isRepository
+) implements ApplicationDataDelete, ApplicationDataWriter {
+    public ApplicationDeleteUser(Application application, String dataName, ArrayList<AuthorizationParsed> authorizations) {
+        this(application, dataName, authorizations, application.findSubmission(dataName).isPresent());
+    }
+
+    @Override
+    public boolean canDelete(FileOrUUID fileOrUUID) {
+        List<AuthorizationParsed> authorizationParseds = authorizations().stream()
+                .filter(authorizationParsed -> Optional.ofNullable(authorizationParsed)
+                        .map(AuthorizationParsed::operationTypes)
+                        .stream().anyMatch(operationTypes->operationTypes.contains(OperationType.delete))
+                )
+                .filter(authorizationParsed -> testRequiredAuthorizations(authorizationParsed.requiredAuthorizations(), fileOrUUID.binaryfiledataset().getRequiredAuthorizations()))
+                .toList();
+        if(authorizationParseds.isEmpty()){
+            throw getException();
+        }
+        if(!isDateInRangeAuthorized(fileOrUUID.binaryfiledataset(), authorizationParseds)){
+            throw getException();
+        }
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID) {
+        List<AuthorizationParsed> authorizationParseds = authorizations().stream()
+                .filter(authorizationParsed -> Optional.ofNullable(authorizationParsed)
+                        .map(AuthorizationParsed::operationTypes)
+                        .stream().anyMatch(operationTypes->operationTypes.contains(OperationType.delete))
+                )
+                .filter(authorizationParsed -> testRequiredAuthorizations(authorizationParsed.requiredAuthorizations(), fileOrUUID.binaryfiledataset().getRequiredAuthorizations()))
+                .toList();
+        if(!isRepository()){
+            if(CollectionUtils.isEmpty(authorizationParseds)){
+                throw getException();
+            }
+            return true;
+        }
+        if(authorizationParseds.isEmpty()){
+            throw getException();
+        }
+        if(!isDateInRangeAuthorized(fileOrUUID.binaryfiledataset(), authorizationParseds)){
+            throw getException();
+        }
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForDeposit(FileOrUUID fileOrUUID) {
+        return false;
+    }
+
+    public OreSiTechnicalException getException() {
+        return new NotApplicationCanDeleteRightsException(applicationName(), dataName());
+    }
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositUser.java
new file mode 100644
index 0000000..81c0b1a
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositUser.java
@@ -0,0 +1,8 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+public record ApplicationDepositUser() implements ApplicationManager {
+    @Override
+    public boolean canUpdateApplication() {
+        return false;
+    }
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositWriterUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositWriterUser.java
new file mode 100644
index 0000000..bb6e10a
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationDepositWriterUser.java
@@ -0,0 +1,50 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForDepositException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.util.*;
+
+public record ApplicationDepositWriterUser(
+        Application application,
+        String dataName,
+        ArrayList<AuthorizationParsed> authorizations
+) implements ApplicationDataWriter {
+    @Override
+    public boolean canDelete(FileOrUUID fileOrUUID) {
+        return false;
+    }
+
+    @Override
+    public boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID) {
+        return false;
+    }
+
+    @Override
+    public boolean hasRightForDeposit(FileOrUUID fileOrUUID) {
+        if(!isData()){
+            if(CollectionUtils.isEmpty(authorizations)){
+                throw getException();
+            }
+            return true;
+        }
+        List<AuthorizationParsed> authorizationParseds = authorizations().stream()
+                .filter(authorizationParsed -> testRequiredAuthorizations(authorizationParsed.requiredAuthorizations(), fileOrUUID.binaryfiledataset().getRequiredAuthorizations()))
+                .toList();
+        if(authorizationParseds.isEmpty()){
+            throw getException();
+        }
+        if(!isDateInRangeAuthorized(fileOrUUID.binaryfiledataset(), authorizationParseds)){
+            throw getException();
+        }
+        return true;
+    }
+
+    @Override
+    public NotApplicationDataWriterForDepositException getException() {
+        return new NotApplicationDataWriterForDepositException(applicationName(), dataName());
+    }
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManager.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManager.java
index 7a26c30..fbf8800 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManager.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManager.java
@@ -1,6 +1,7 @@
 package fr.inra.oresing.domain.authorization.privilegeassessor.role;
 
 public sealed interface ApplicationManager
-        permits ApplicationManagerUser, ApplicationAdminUser {
+        permits ApplicationAdminUser, ApplicationDepositUser, ApplicationManagerUser {
+    public static String ALL_DATANAMES = "ALL_DATANAMES";
     boolean canUpdateApplication();
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManagerUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManagerUser.java
index b009567..582cc1e 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManagerUser.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationManagerUser.java
@@ -1,9 +1,40 @@
 package fr.inra.oresing.domain.authorization.privilegeassessor.role;
 
-public record ApplicationManagerUser() implements ApplicationManager {
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+
+public record ApplicationManagerUser(
+        Application application,
+        String dataName
+) implements ApplicationManager, ApplicationDataWriter, ApplicationDataDelete {
+
+    public ApplicationManagerUser(Application application) {
+        this(application, ApplicationManager.ALL_DATANAMES);
+    }
 
     @Override
     public boolean canUpdateApplication() {
         return false;
     }
+
+    @Override
+    public boolean canDelete(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForDeposit(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public OreSiTechnicalException getException() {
+        return null;
+    }
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationPublishWriterUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationPublishWriterUser.java
new file mode 100644
index 0000000..8c64f95
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationPublishWriterUser.java
@@ -0,0 +1,51 @@
+package fr.inra.oresing.domain.authorization.privilegeassessor.role;
+
+import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForDepositException;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
+import org.apache.commons.collections.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public record ApplicationPublishWriterUser(
+        Application application,
+        String dataName,
+        ArrayList<AuthorizationParsed> authorizations
+) implements ApplicationDataWriter {
+    @Override
+    public boolean canDelete(FileOrUUID fileOrUUID) {
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForPublishOrUnPublish(FileOrUUID fileOrUUID) {
+        if(!isData()){
+            if(CollectionUtils.isEmpty(authorizations)){
+                throw getException();
+            }
+            return true;
+        }
+        List<AuthorizationParsed> authorizationParseds = authorizations().stream()
+                .filter(authorizationParsed -> testRequiredAuthorizations(authorizationParsed.requiredAuthorizations(), fileOrUUID.binaryfiledataset().getRequiredAuthorizations()))
+                .toList();
+        if(authorizationParseds.isEmpty()){
+            throw getException();
+        }
+        if(!isDateInRangeAuthorized(fileOrUUID.binaryfiledataset(), authorizationParseds)){
+            throw getException();
+        }
+        return true;
+    }
+
+    @Override
+    public boolean hasRightForDeposit(FileOrUUID fileOrUUID) {
+        return hasRightForPublishOrUnPublish(fileOrUUID);
+    }
+
+    public OreSiTechnicalException getException() {
+        return new NotApplicationDataWriterForDepositException(applicationName(), dataName());
+    }
+}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationReader.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationReader.java
deleted file mode 100644
index 57f4946..0000000
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationReader.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package fr.inra.oresing.domain.authorization.privilegeassessor.role;
-
-import fr.inra.oresing.domain.OreSiRoleForUser;
-import fr.inra.oresing.domain.OreSiUser;
-import fr.inra.oresing.domain.application.Application;
-import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalRoleToBeGranted;
-import fr.inra.oresing.domain.authorization.privilegeassessor.exception.IllegalUserToBeGranted;
-import fr.inra.oresing.domain.repository.authorization.role.OreSiRightOnApplicationRole;
-
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-
-public record ApplicationReader(Application application) implements ApplicationUser {
-    @Override
-    public boolean canUpdateApplication() {
-        return true;
-    }
-
-    public boolean canManagerRightOfUserForRole(OreSiUser user, OreSiRoleForUser roleForUser) {
-        if (Optional.ofNullable(user)
-                .map(OreSiUser::getChartes)
-                .map(chartes -> chartes.get(application().getId().toString()))
-                .isEmpty()) {
-            throw new IllegalUserToBeGranted(Objects.requireNonNull(user), application().getName());
-        }
-        OreSiRightOnApplicationRole userManager = OreSiRightOnApplicationRole.userAdminOn(application());
-        OreSiRightOnApplicationRole applicationManager = OreSiRightOnApplicationRole.adminOn(application());
-        if (!List.of(applicationManager.getAsSqlRole(), userManager.getAsSqlRole()).toString().contains(roleForUser.role())) {
-            throw new IllegalRoleToBeGranted(roleForUser.role());
-        }
-        return true;
-    }
-}
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationUser.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationUser.java
index da01230..21d73a6 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationUser.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/ApplicationUser.java
@@ -1,6 +1,5 @@
 package fr.inra.oresing.domain.authorization.privilegeassessor.role;
 
 public sealed interface ApplicationUser
-        permits ApplicationReader {
-    boolean canUpdateApplication();
+        permits ApplicationDataReader, ApplicationDataWriter {
 }
diff --git a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/PrivilegeApplicationDomain.java b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/PrivilegeApplicationDomain.java
index 4270995..9bca692 100644
--- a/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/PrivilegeApplicationDomain.java
+++ b/src/main/java/fr/inra/oresing/domain/authorization/privilegeassessor/role/PrivilegeApplicationDomain.java
@@ -5,6 +5,7 @@ public enum PrivilegeApplicationDomain {
     APPLICATION_MANAGER,
     DATA_MANAGEMENT,
     DATA_READ,
+    DATA_WRITE,
     ADDITIONAL_FILE_MANAGEMENT,
     AUTHORIZATION_MANAGEMENT,
     RIGHTS_REQUEST_MANAGEMENT,
diff --git a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderBy.java b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderBy.java
index 7b53785..e985a46 100644
--- a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderBy.java
+++ b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderBy.java
@@ -3,8 +3,8 @@ package fr.inra.oresing.domain.data.read.query;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.exceptions.data.data.BadDownloadDatasetQuery;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRepository;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 
 import java.util.Map;
 import java.util.stream.Stream;
@@ -26,7 +26,7 @@ public record ComponentOrderBy(String componentKey, DataRepository.Order order,
 
     public Stream<String> toValue(
             String language,
-            DataRepositoryWithBuffer dataRepository,
+            DataRepositoryForBuffer dataRepository,
             Map<String, FieldType> dataRowValues,
             StandardDataDescription dataDescription
     ) {
diff --git a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderByForExport.java b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderByForExport.java
index 6dd3613..e117881 100644
--- a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderByForExport.java
+++ b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentOrderByForExport.java
@@ -7,6 +7,7 @@ import fr.inra.oresing.domain.application.configuration.checker.ReferenceChecker
 import fr.inra.oresing.domain.checker.type.DateType;
 import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.checker.type.MapType;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 
 import java.time.LocalDateTime;
@@ -20,7 +21,7 @@ import java.util.stream.Stream;
 
 public sealed interface ComponentOrderByForExport
         permits ComponentOrderBy, ComponentPatternOrderBy, ComponentPatternValueOrderBy, DynamicComponentOrderBy {
-    Stream<String> toValue(String language, DataRepositoryWithBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription);
+    Stream<String> toValue(String language, DataRepositoryForBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription);
 
     String componentKey();
 
@@ -28,7 +29,7 @@ public sealed interface ComponentOrderByForExport
 
     default String valueToString(
             String language,
-            DataRepositoryWithBuffer dataRepository,
+            DataRepositoryForBuffer dataRepository,
             StandardDataDescription dataDescription,
             FieldType fieldType) {
         if (fieldType instanceof MapType mapType) {
diff --git a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternOrderBy.java b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternOrderBy.java
index 9c2d972..8d29dc7 100644
--- a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternOrderBy.java
+++ b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternOrderBy.java
@@ -3,8 +3,8 @@ package fr.inra.oresing.domain.data.read.query;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.checker.type.*;
 import fr.inra.oresing.domain.data.deposit.context.column.Column;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRepository;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -16,7 +16,7 @@ public record ComponentPatternOrderBy(String componentKey, String qualifierKey,
                                       ComponentType sqlType,
                                       List<ComponentOrderBy> qualifiersColumns) implements ComponentOrderByForExport {
     @Override
-    public Stream<String> toValue(String language, DataRepositoryWithBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
+    public Stream<String> toValue(String language, DataRepositoryForBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
         String componentKey = componentKey();
         FieldType fieldType = dataRowValues.get(componentKey);
         Optional<MapType> valueOpt = ((ListType) fieldType).getValue().stream().filter(mapType -> qualifierKey().equals(((MapType) mapType).getValue().get(Column.__ORIGINAL_COLUMN_NAME__).toString())).findFirst();
diff --git a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternValueOrderBy.java b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternValueOrderBy.java
index 51bdcaf..4555019 100644
--- a/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternValueOrderBy.java
+++ b/src/main/java/fr/inra/oresing/domain/data/read/query/ComponentPatternValueOrderBy.java
@@ -5,8 +5,8 @@ import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.checker.type.ListType;
 import fr.inra.oresing.domain.checker.type.MapType;
 import fr.inra.oresing.domain.data.deposit.context.column.Column;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRepository;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 
 import java.util.*;
 import java.util.stream.Stream;
@@ -16,7 +16,7 @@ public record ComponentPatternValueOrderBy(String componentKey, String qualifier
                                            Set<ComponentOrderBy> qualifiersColumns,
                                            Set<ComponentOrderBy> adjacentColumns) implements ComponentOrderByForExport {
     @Override
-    public Stream<String> toValue(String language, DataRepositoryWithBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
+    public Stream<String> toValue(String language, DataRepositoryForBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
         String componentKey = componentKey();
         ListType fieldType = (ListType) dataRowValues.get(componentKey);
 
@@ -38,18 +38,18 @@ public record ComponentPatternValueOrderBy(String componentKey, String qualifier
         return Stream.empty();
     }
 
-    private String getAdacentValue(String language, DataRepositoryWithBuffer dataRepository, StandardDataDescription dataDescription, ComponentOrderBy qualifier, MapType patternMapTypeOpt) {
+    private String getAdacentValue(String language, DataRepositoryForBuffer dataRepository, StandardDataDescription dataDescription, ComponentOrderBy qualifier, MapType patternMapTypeOpt) {
         String adjacentKey = qualifier.componentKey().split(Column.COLUMN_IN_COLUMN_SEPARATOR)[1];
         FieldType adjacentField = (FieldType) patternMapTypeOpt.getValue().get(adjacentKey);
         return valueToString(language, dataRepository, dataDescription, adjacentField);
     }
 
-    private String getQualifierValue(String language, DataRepositoryWithBuffer dataRepository, StandardDataDescription dataDescription, ComponentOrderBy qualifier, MapType patternMapTypeOpt) {
+    private String getQualifierValue(String language, DataRepositoryForBuffer dataRepository, StandardDataDescription dataDescription, ComponentOrderBy qualifier, MapType patternMapTypeOpt) {
         FieldType adjacentField = (FieldType) patternMapTypeOpt.getValue().get(qualifier.componentKey());
         return valueToString(language, dataRepository, dataDescription, adjacentField);
     }
 
-    private String getValue(String language, DataRepositoryWithBuffer dataRepository, StandardDataDescription dataDescription, MapType mapType) {
+    private String getValue(String language, DataRepositoryForBuffer dataRepository, StandardDataDescription dataDescription, MapType mapType) {
         return valueToString(language, dataRepository, dataDescription, (FieldType) mapType.getValue().get(Column.__VALUE__));
     }
 
diff --git a/src/main/java/fr/inra/oresing/domain/data/read/query/DynamicComponentOrderBy.java b/src/main/java/fr/inra/oresing/domain/data/read/query/DynamicComponentOrderBy.java
index 89e65a2..c8a8aea 100644
--- a/src/main/java/fr/inra/oresing/domain/data/read/query/DynamicComponentOrderBy.java
+++ b/src/main/java/fr/inra/oresing/domain/data/read/query/DynamicComponentOrderBy.java
@@ -3,14 +3,14 @@ package fr.inra.oresing.domain.data.read.query;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.checker.type.StringType;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 
 import java.util.Map;
 import java.util.stream.Stream;
 
 public record DynamicComponentOrderBy(String componentKey, Map<String, ComponentOrderBy> dynamicColumns) implements ComponentOrderByForExport {
     @Override
-    public Stream<String> toValue(String language, DataRepositoryWithBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
+    public Stream<String> toValue(String language, DataRepositoryForBuffer dataRepository, Map<String, FieldType> dataRowValues, StandardDataDescription dataDescription) {
         String componentKey = componentKey();
         Map<String, StringType> values = (Map<String, StringType>) dataRowValues.get(componentKey).getValue();
         return dynamicColumns().keySet().stream()
diff --git a/src/main/java/fr/inra/oresing/domain/exceptions/authorization/AuthorizationRequestException.java b/src/main/java/fr/inra/oresing/domain/exceptions/authorization/AuthorizationRequestException.java
index 04a7872..ea750df 100644
--- a/src/main/java/fr/inra/oresing/domain/exceptions/authorization/AuthorizationRequestException.java
+++ b/src/main/java/fr/inra/oresing/domain/exceptions/authorization/AuthorizationRequestException.java
@@ -17,7 +17,7 @@ public enum AuthorizationRequestException {
 
     BAD_FILE_NAME_START_DATE,
     BAD_FILE_NAME_END_DATE,
-    INVAALID_FILE_NAME,
+    INVALID_FILE_NAME,
 
     MISSING_REQUIRED_AUTHORIZATION,
     NO_RIGHT_ON_TABLE_FOR_DEPOSIT;
diff --git a/src/main/java/fr/inra/oresing/domain/file/FileOrUUID.java b/src/main/java/fr/inra/oresing/domain/file/FileOrUUID.java
index 3dd335d..5c7a5e2 100644
--- a/src/main/java/fr/inra/oresing/domain/file/FileOrUUID.java
+++ b/src/main/java/fr/inra/oresing/domain/file/FileOrUUID.java
@@ -21,6 +21,12 @@ public record FileOrUUID(UUID fileid, BinaryFileDataset binaryfiledataset, Boole
         );
     }
 
+    public static FileOrUUID forUUID(UUID id) {
+        return new FileOrUUID(
+                id, null, false
+        );
+    }
+
     public FileOrUUID withParams(BinaryFileInfos binaryFileInfos) {
         return new FileOrUUID(
                 fileid(),
@@ -30,17 +36,17 @@ public record FileOrUUID(UUID fileid, BinaryFileDataset binaryfiledataset, Boole
 
     }
 
-    public boolean requiredAuthorizationMatchForFile(final Map<String, Set<String>>requiredAuthorizationInDataBase) {
+    public boolean requiredAuthorizationMatchForFile(final Map<String, Set<String>> requiredAuthorizationInDataBase) {
         Optional<Map<String, List<Ltree>>> requiredAuthorizationForFile = Optional.ofNullable(binaryfiledataset())
                 .map(BinaryFileDataset::getRequiredAuthorizations);
         if (requiredAuthorizationForFile.isPresent()) {
             for (final Map.Entry<String, List<Ltree>> requiredAuthorizationForFileEntry : requiredAuthorizationForFile.get().entrySet()) {
                 final String scope = requiredAuthorizationForFileEntry.getKey();
                 final String ltree = requiredAuthorizationForFileEntry.getValue().getFirst().getSql();
-                if(requiredAuthorizationInDataBase.get(scope).stream()
+                if (requiredAuthorizationInDataBase.get(scope).stream()
                         .noneMatch(pathAuthorized -> ltree.equals(pathAuthorized) ||
-                                    ltree.startsWith(pathAuthorized+Ltree.SEPARATOR))
-                ){
+                                                     ltree.startsWith(pathAuthorized + Ltree.SEPARATOR))
+                ) {
                     return false;
                 }
             }
diff --git a/src/main/java/fr/inra/oresing/domain/repository/data/DataRepository.java b/src/main/java/fr/inra/oresing/domain/repository/data/DataRepository.java
index e68c5bc..1fd274b 100644
--- a/src/main/java/fr/inra/oresing/domain/repository/data/DataRepository.java
+++ b/src/main/java/fr/inra/oresing/domain/repository/data/DataRepository.java
@@ -24,7 +24,7 @@ public interface DataRepository {
     ImmutableMap<DataValue.LineIdentityPatternColumnName, UUID> getDataIdPerKeys(String s);
 
     @Transactional(readOnly = true)
-    Stream<DataValue> findAllByReferenceTypeStream(String ref);
+    Stream<DataValue> findAllByReferenceTypeStream(String referenceName);
 
     @Transactional(readOnly = true)
     Stream<DataValue> findAllByReferenceTypeWithReferencingReferencesStream(final String refType, final MultiValueMap<String, String> params);
@@ -42,4 +42,6 @@ public interface DataRepository {
     Flux<FileContent> getStoredData(Application application, String dataName);
 
     void flush();
+
+    Map<String, Map<String, String>> findDisplayByNaturalKey(String replace);
 }
diff --git a/src/main/java/fr/inra/oresing/domain/repository/data/DataRepositoryForBuffer.java b/src/main/java/fr/inra/oresing/domain/repository/data/DataRepositoryForBuffer.java
index eb1e1c7..e914ed2 100644
--- a/src/main/java/fr/inra/oresing/domain/repository/data/DataRepositoryForBuffer.java
+++ b/src/main/java/fr/inra/oresing/domain/repository/data/DataRepositoryForBuffer.java
@@ -1,10 +1,12 @@
 package fr.inra.oresing.domain.repository.data;
 
 import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.data.DataValue;
 import fr.inra.oresing.domain.exceptions.SiOreIllegalArgumentException;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Stream;
 
 public interface DataRepositoryForBuffer {
     Map<String, Map<String, String>> findDisplayByReferenceType(String referenceType);
@@ -14,4 +16,8 @@ public interface DataRepositoryForBuffer {
     String findDisplayByReferenceTypeAndNaturalKeyAndLocale(String referenceType, String naturalKey, String locale);
 
     Map<String, List<Ltree>> checkHierarchicalKey(Map<String, List<Ltree>> requiredAuthorizations) throws SiOreIllegalArgumentException;
+
+    List<Ltree> getHierarchicalKeyForEntry(Map.Entry<String, List<Ltree>> requiredAuthorizationByReference);
+
+    Stream<DataValue> findAllByReferenceTypeStream(String referenceName);
 }
diff --git a/src/main/java/fr/inra/oresing/domain/services/file/BinaryFileService.java b/src/main/java/fr/inra/oresing/domain/services/file/BinaryFileService.java
index 544bd28..a966ff3 100644
--- a/src/main/java/fr/inra/oresing/domain/services/file/BinaryFileService.java
+++ b/src/main/java/fr/inra/oresing/domain/services/file/BinaryFileService.java
@@ -32,7 +32,12 @@ public interface BinaryFileService extends ServiceContainerBean {
 
     ReportErrors findPublishedVersion(String nameOrId, String dataType, FileOrUUID params, Set<BinaryFile> filesToStore, boolean searchOverlaps);
 
-    List<BinaryFile> getFilesOnRepository(String nameOrId, String datatype, BinaryFileDataset fileDatasetID, boolean overlap);
+    List<BinaryFile> getFilesOnRepository(
+            String nameOrId,
+            String datatype,
+            BinaryFileDataset fileDatasetID,
+            boolean overlap
+    );
 
     AdditionalBinaryFileResult getAdditionalBinaryFileResult(
             AdditionalBinaryFile additionalBinaryFile,
diff --git a/src/main/java/fr/inra/oresing/persistence/DataRepository.java b/src/main/java/fr/inra/oresing/persistence/DataRepository.java
index 93ab3d9..a5397c5 100644
--- a/src/main/java/fr/inra/oresing/persistence/DataRepository.java
+++ b/src/main/java/fr/inra/oresing/persistence/DataRepository.java
@@ -201,7 +201,7 @@ public class DataRepository extends JsonTableInApplicationSchemaRepositoryTempla
         return getNamedParameterJdbcTemplate().queryForList(query, paramSource, UUID.class);
     }
 
-    public Stream<DataValue> findAllByReferenceTypeStream(final String refType) {
+    public Stream<DataValue> findAllByReferenceTypeStream(final String referenceName) {
         String query = """
                 SELECT DISTINCT '%1$s' as "@class",
                 to_jsonb(t)  as json
@@ -212,7 +212,7 @@ public class DataRepository extends JsonTableInApplicationSchemaRepositoryTempla
                 """
                 .formatted(DataValue.class.getName(), getTable().getSqlIdentifier());
         final MapSqlParameterSource paramSource = new MapSqlParameterSource(APPLICATION_ID, getApplication().getId())
-                .addValue(REF_TYPE, refType);
+                .addValue(REF_TYPE, referenceName);
         return getNamedParameterJdbcTemplate()
                 .queryForStream(query, paramSource, getJsonRowMapper());
     }
diff --git a/src/main/java/fr/inra/oresing/persistence/DataRow.java b/src/main/java/fr/inra/oresing/persistence/DataRow.java
index 20beaa7..fadfcfc 100644
--- a/src/main/java/fr/inra/oresing/persistence/DataRow.java
+++ b/src/main/java/fr/inra/oresing/persistence/DataRow.java
@@ -15,9 +15,15 @@ import java.util.stream.Collectors;
 /**
  * @param allPatternColumnNames Long totalRows;Long rowNumber;
  */
-public record DataRow(List<String> rowId, List<String> patternColumnName, Ltree naturalKey, Ltree hierarchicalKey,
-                      Map<String, FieldType> values, Map<String, Map<String, RefsLinkedToValue>> refsLinkedTo,
-                      List<String> allPatternColumnNames) {
+public record DataRow(
+        List<String> rowId,
+        List<String> patternColumnName,
+        Ltree naturalKey,
+        Ltree hierarchicalKey,
+        Map<String, FieldType> values,
+        Map<String, Map<String, RefsLinkedToValue>> refsLinkedTo,
+        List<String> allPatternColumnNames
+) {
     public static DataRow of(Optional<StandardDataDescription> application, DataRows dataRows) {
         List<String> patternComponentKeys = application
                 .map(StandardDataDescription::componentDescriptions)
diff --git a/src/main/java/fr/inra/oresing/persistence/data/read/DataRepositoryWithBuffer.java b/src/main/java/fr/inra/oresing/persistence/data/read/DataRepositoryWithBuffer.java
index 039abe4..8ba3b10 100644
--- a/src/main/java/fr/inra/oresing/persistence/data/read/DataRepositoryWithBuffer.java
+++ b/src/main/java/fr/inra/oresing/persistence/data/read/DataRepositoryWithBuffer.java
@@ -3,9 +3,10 @@ package fr.inra.oresing.persistence.data.read;
 import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.application.configuration.Ltree;
 import fr.inra.oresing.domain.application.configuration.Node;
+import fr.inra.oresing.domain.data.DataValue;
 import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
 import fr.inra.oresing.domain.exceptions.SiOreIllegalArgumentException;
-import fr.inra.oresing.persistence.DataRepository;
+import fr.inra.oresing.domain.repository.data.DataRepository;
 
 import java.io.*;
 import java.nio.file.*;
@@ -15,7 +16,11 @@ import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
-public record DataRepositoryWithBuffer(Application application, DataRepository repository, Path tempDir)
+public record DataRepositoryWithBuffer(
+        Application application,
+        DataRepository repository,
+        Path tempDir
+)
         implements fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer {
 
     public static final String PREFIX_FOR_HIERARCHICAL = "hierarchical";
@@ -87,7 +92,7 @@ public record DataRepositoryWithBuffer(Application application, DataRepository r
 
                     if (hierarchicalKey == null) {
                         String availableKeysMessage = String.join(", ", availableKeys);
-                        throw new IllegalArgumentException(
+                        throw new IllegalArgumentException(//TODO throw sioretechnicalException
                                 String.format("Clé non trouvée pour le type de référence: %s, clé: %s. Clés disponibles: %s",
                                         referenceType, keyForScope, availableKeysMessage)
                         );
@@ -206,4 +211,9 @@ public record DataRepositoryWithBuffer(Application application, DataRepository r
             throw new UncheckedIOException("Erreur lors du nettoyage du répertoire temporaire", e);
         }
     }
+
+    @Override
+    public Stream<DataValue> findAllByReferenceTypeStream(String referenceName) {
+        return repository().findAllByReferenceTypeStream(referenceName);
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/rest/OreSiResources.java b/src/main/java/fr/inra/oresing/rest/OreSiResources.java
index 2049ba9..181fa7f 100644
--- a/src/main/java/fr/inra/oresing/rest/OreSiResources.java
+++ b/src/main/java/fr/inra/oresing/rest/OreSiResources.java
@@ -11,6 +11,10 @@ import fr.inra.oresing.domain.additionalfiles.AdditionalFilesInfos;
 import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.application.ApplicationInformation;
 import fr.inra.oresing.domain.application.configuration.*;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationCanDeleteReferencesRightsException;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForPublishException;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationDataDelete;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.PrivilegeApplicationDomain;
 import fr.inra.oresing.domain.chart.OreSiSynthesis;
 import fr.inra.oresing.domain.checker.InvalidDatasetContentException;
 import fr.inra.oresing.domain.checker.LineChecker;
@@ -28,11 +32,10 @@ import fr.inra.oresing.domain.exceptions.binaryfile.binaryfile.BadFileOrUUIDQuer
 import fr.inra.oresing.domain.exceptions.data.data.BadDownloadDatasetQuery;
 import fr.inra.oresing.domain.exceptions.data.data.DeleteOnrepositoryApplicationNotAllowedException;
 import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRow;
 import fr.inra.oresing.persistence.JsonRowMapper;
-import fr.inra.oresing.persistence.OreSiRepository;
 import fr.inra.oresing.persistence.UserRepository;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 import fr.inra.oresing.rest.binaryFile.BinaryFileService;
 import fr.inra.oresing.rest.data.publication.*;
 import fr.inra.oresing.domain.exceptions.configuration.BadApplicationConfigurationException;
@@ -68,7 +71,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.io.output.TeeOutputStream;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
@@ -173,34 +175,49 @@ public class OreSiResources implements ServiceContainerBean {
     public ResponseEntity<String> removeFile(@PathVariable("name") final String applicationName,
                                              @PathVariable("id") final UUID id) {
         Application application = serviceContainer.applicationService().getApplication(applicationName);
-        StoreFile storeFile = serviceContainer.versioningService().getStoreFile(application,
+        StoreFile storeFile = serviceContainer.versioningService().getStoreFile(
+                application,
                 null,
-                """
-                        {"fileid": "%s"}""".formatted(id), null);
+                FileOrUUID.forUUID(id),
+                null,
+                null
+        );
         Optional<UUID> fileId = Optional.ofNullable(storeFile)
-                .map(State::params)
+                .map(State::fileOrUuid)
                 .map(FileOrUUID::fileid);
         if (fileId.isEmpty()) {
             throw new SiOreIllegalArgumentException(SiOreIllegalArgumentException.NO_FILE_To_DELETE, Map.of("fileId", id));
         }
-        Boolean canDelete = Optional.of(storeFile)
+        String dataName = Optional.of(storeFile)
                 .map(StoreFile::builder)
-                .map(AuthorizationPublicationService::getAuthorizations)
-                .map(AuthorizationForUser::canDelete)
-                .orElse(false);
+                .map(AuthorizationPublicationService::getDataName)
+                .orElse("notFoundDataName");
+        ApplicationDataDelete applicationDataDelete = serviceContainer.authorizationService().getPrivilegeAssessorForApplication(PrivilegeApplicationDomain.DATA_ACCESS, application)
+                .forDataDelete(dataName);
+        storeFile = serviceContainer.versioningService().getStoreFile(
+                application,
+                dataName,
+                storeFile.fileOrUuid(),
+                null,
+                applicationDataDelete
+        );
+
+        StoreFile finalStoreFile = storeFile;
+        Boolean canDelete = applicationDataDelete.canDelete(finalStoreFile.fileOrUuid());
         if (!canDelete) {
-            String dataName = Optional.of(storeFile)
-                    .map(StoreFile::builder)
-                    .map(AuthorizationPublicationService::getDataName)
-                    .orElse("notFoundDataname");
             throw new NotApplicationCanDeleteRightsException(applicationName, dataName);
         }
-        DataVersioningResult dataVersioningResult = serviceContainer.versioningService().unPublishVersionBeforeDelete(applicationName, id);
+        if(!storeFile.builder().getFileOrUUID().topublish()) {
+            if (!applicationDataDelete.hasRightForPublishOrUnPublish(storeFile.fileOrUuid())) {
+                throw new NotApplicationDataWriterForPublishException(applicationName, dataName);
+            }
+            DataVersioningResult dataVersioningResult = serviceContainer.versioningService().unPublishVersionBeforeDelete(applicationName, id);
+        }
         Optional<UUID> uuid = serviceContainer.binaryFileService().removeFile(application, id);
         if (uuid.isPresent()) {
             return ResponseEntity.ok(id.toString());
         } else {
-            return ResponseEntity.notFound().build();
+            throw new NotApplicationCanDeleteRightsException(applicationName, dataName);
         }
     }
 
@@ -209,6 +226,7 @@ public class OreSiResources implements ServiceContainerBean {
                                                                  @PathVariable("dataType") final String dataType,
                                                                  @RequestParam("repositoryId") final String repositoryId) {
         final BinaryFileDataset binaryFileDataset = BinaryFileService.deserialiseBinaryFileDatasetQuery(dataType, repositoryId);
+        Application application = serviceContainer.applicationService().getApplication(nameOrId);
         final List<BinaryFile> files = serviceContainer.binaryFileService().getFilesOnRepository(nameOrId, dataType, binaryFileDataset, false);
         return ResponseEntity.ok(files);
     }
@@ -859,7 +877,7 @@ public class OreSiResources implements ServiceContainerBean {
         } else {
             //TODO on est dans le cas ou aucun computationChecker reference n'est décrit : authorizationscope  n'est pas un referentiel
         }
-        DataRepositoryWithBuffer dataRepositoryWithBuffer = serviceContainer.dataService().getNewDataRepositoryWithBuffer(application);
+        DataRepositoryForBuffer dataRepositoryWithBuffer = serviceContainer.dataService().getDataRepositoryWithBuffer(application);
 
         final List<DataRowResult> dataRowResults = data.stream()
                 .map(dataRow -> DataRowResult.of(
@@ -902,20 +920,13 @@ public class OreSiResources implements ServiceContainerBean {
     @DeleteMapping(value = "/applications/{nameOrId}/data/{dataType}", produces = MediaType.TEXT_PLAIN_VALUE)
     public ResponseEntity<String> deleteData(
             @PathVariable("nameOrId") final String nameOrId,
-            @PathVariable("dataType") final String dataType,
+            @PathVariable("dataType") final String dataName,
             @RequestParam(value = "downloadDatasetQuery", required = false) final String params) {
+        Application application = serviceContainer.applicationService().getApplication(nameOrId);
+        ApplicationDataDelete applicationDataDelete = serviceContainer.authorizationService().getPrivilegeAssessorForApplication(PrivilegeApplicationDomain.DATA_ACCESS, application)
+                .forDataDelete(dataName);
 
-        final ResponseEntity<String> resposeEntity = null;
-        final boolean deleteOnrepositoryApplicationNotAllowed = serviceContainer.applicationService().getApplication(nameOrId)
-                .findSubmission(dataType)
-                .map(Submission::strategy)
-                .map(SubmissionType.OA_VERSIONING::equals)
-                .isPresent();
-        if (deleteOnrepositoryApplicationNotAllowed) {
-            throw new DeleteOnrepositoryApplicationNotAllowedException();
-        }
-
-        final fr.inra.oresing.domain.data.read.query.DownloadDatasetQuery downloadDatasetQuery = deserialiseParamDownloadDatasetQuery(params, nameOrId, dataType, false);
+        final fr.inra.oresing.domain.data.read.query.DownloadDatasetQuery downloadDatasetQuery = deserialiseParamDownloadDatasetQuery(params, nameOrId, dataName, false);
         final List<UUID> deletedData = serviceContainer.dataService().deleteData(downloadDatasetQuery);
         return ResponseEntity.ok(deletedData.stream().map(UUID::toString).collect(Collectors.joining(",")));
 
diff --git a/src/main/java/fr/inra/oresing/rest/binaryFile/BinaryFileService.java b/src/main/java/fr/inra/oresing/rest/binaryFile/BinaryFileService.java
index 538af94..cc022a7 100644
--- a/src/main/java/fr/inra/oresing/rest/binaryFile/BinaryFileService.java
+++ b/src/main/java/fr/inra/oresing/rest/binaryFile/BinaryFileService.java
@@ -11,15 +11,16 @@ import fr.inra.oresing.domain.data.deposit.validation.DefaultValidationCheckResu
 import fr.inra.oresing.domain.exceptions.ReportErrors;
 import fr.inra.oresing.domain.exceptions.data.data.BadBinaryFileDatasetQuery;
 import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.domain.repository.file.BinaryFileRepository;
 import fr.inra.oresing.persistence.*;
+import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 import fr.inra.oresing.rest.OreSiApiRequestContext;
 import fr.inra.oresing.rest.model.additionalfiles.AdditionalBinaryFileResult;
 import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
 import fr.inra.oresing.rest.services.ServiceContainer;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -102,7 +103,9 @@ public class BinaryFileService implements fr.inra.oresing.domain.services.file.B
     public Optional<UUID> removeFile(Application application, UUID id) {
         Function<BinaryFile, UUID> deleteBinaryFile = binaryFile -> getBinaryFileRepository(application).delete(binaryFile.getId()) ? binaryFile.getId() : null;
         return getFile(application.getName(), id)
-                .map(deleteBinaryFile);
+                .map(BinaryFile::getId)
+                .map(getBinaryFileRepository(application)::delete)
+                .orElse(false)?Optional.of(id):Optional.empty();
     }
 
     @Override
@@ -143,9 +146,11 @@ public class BinaryFileService implements fr.inra.oresing.domain.services.file.B
     }
 
     @Override
-    public List<BinaryFile> getFilesOnRepository(final String nameOrId, final String datatype, final BinaryFileDataset fileDatasetID, final boolean overlap) {
+    public List<BinaryFile> getFilesOnRepository(final String nameOrId, final String datatype, final BinaryFileDataset binaryFileDataset, final boolean overlap) {
         authenticationService.setRoleForClient();
-        return getBinaryFileRepository(nameOrId).findByBinaryFileDataset(datatype, fileDatasetID, overlap);
+        Application application= serviceContainer.applicationService().getApplication(nameOrId);
+        DataRepositoryForBuffer dataRepositoryForBuffer = serviceContainer.dataService().getDataRepositoryWithBuffer(application);
+        return getBinaryFileRepository(nameOrId).findByBinaryFileDataset(datatype, binaryFileDataset.testrequiredAuthorizationsAndReturnHierarchicalKeys(dataRepositoryForBuffer), overlap);
     }
 
     @Override
diff --git a/src/main/java/fr/inra/oresing/rest/data/DataService.java b/src/main/java/fr/inra/oresing/rest/data/DataService.java
index 500b584..e81dfec 100644
--- a/src/main/java/fr/inra/oresing/rest/data/DataService.java
+++ b/src/main/java/fr/inra/oresing/rest/data/DataService.java
@@ -11,7 +11,7 @@ import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.application.configuration.*;
 import fr.inra.oresing.domain.application.configuration.checker.CheckerDescription;
 import fr.inra.oresing.domain.application.configuration.internationalization.InternationalizationTitle;
-import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationReader;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationDataReader;
 import fr.inra.oresing.domain.checker.CheckerFactory;
 import fr.inra.oresing.domain.checker.InvalidDatasetContentException;
 import fr.inra.oresing.domain.checker.LineChecker;
@@ -30,6 +30,7 @@ import fr.inra.oresing.domain.exceptions.SiOreIllegalArgumentException;
 import fr.inra.oresing.domain.filesenderclient.FileSenderInternationalisation;
 import fr.inra.oresing.domain.filesenderclient.FileSenderInternationalisationForBuildBundleReport;
 import fr.inra.oresing.domain.filesenderclient.FileSenderInternationalisationForDownloadDatasetQuery;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.data.read.bundle.FileContent;
 import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
 import fr.inra.oresing.domain.file.DataFile;
@@ -61,9 +62,7 @@ import reactor.core.publisher.Mono;
 import java.io.*;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
 import java.nio.file.Path;
-import java.nio.file.attribute.PosixFilePermission;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicLong;
 import java.util.function.Consumer;
@@ -553,7 +552,7 @@ public class DataService implements ServiceContainerBean {
                 .withDownloadDatasetQuery(downloadDatasetQuery)
                 .withReferenceService(this)
                 .withOutputStream(outputStream)
-                .onRepositories(new DataRepositoryWithBuffer(application, dataRepository), null)
+                .onRepositories(getDataRepositoryWithBuffer(application), null)
                 .addDatas(datas)
                 .buildDataCsv(downloadDatasetQuery.getLanguage(), dataDescription, downloadDatasetQuery.horizontalDisplay());
     }
@@ -587,6 +586,10 @@ public class DataService implements ServiceContainerBean {
         this.serviceContainer = serviceContainer;
     }
 
+    public DataRepositoryForBuffer getDataRepositoryWithBuffer(Application application) {
+        return new DataRepositoryWithBuffer(application, dataRepository);
+    }
+
     private record BuildColumns(PatternColumnFactory patternColumnFactory, ImmutableSet<Column> columns) {
     }
 
@@ -620,7 +623,7 @@ public class DataService implements ServiceContainerBean {
             DownloadDatasetQuery downloadDatasetQuery) {
         Application application = downloadDatasetQuery.application();
         DataRepository dataRepository = repository.getRepository(downloadDatasetQuery.application()).data();
-        DataRepositoryWithBuffer dataRepositoryWithBuffer = new DataRepositoryWithBuffer(application, dataRepository);
+        DataRepositoryForBuffer dataRepositoryWithBuffer = getDataRepositoryWithBuffer(application);
 
         serviceContainer.authenticationService().setRoleForClient();
 
@@ -698,7 +701,7 @@ public class DataService implements ServiceContainerBean {
 
     public UUIDsfromData addDatacsv(
             final ZipOutputStream zipOutputStream,
-            DataRepositoryWithBuffer dataRepositoryWithBuffer,
+            DataRepositoryForBuffer dataRepositoryWithBuffer,
             final DownloadDatasetQuery downloadDatasetQuery,
             String fileNamePattern) {
         final Flux<DataRow> datas = serviceContainer.dataService().findDataFlux(downloadDatasetQuery);
@@ -719,7 +722,7 @@ public class DataService implements ServiceContainerBean {
     }
 
     public List<DataRow> findData(final DownloadDatasetQuery downloadDatasetQuery) {
-        ApplicationReader applicationReader = serviceContainer.authorizationService()
+        ApplicationDataReader applicationReader = serviceContainer.authorizationService()
                 .getPrivilegeAssessorForApplication(DATA_READ, downloadDatasetQuery.application())
                 .forDataRead(downloadDatasetQuery.dataName());
         return serviceContainer.dataService().findDataFlux(downloadDatasetQuery).collectList().block();
@@ -1030,10 +1033,6 @@ public class DataService implements ServiceContainerBean {
         return repository.getRepository(application).data().delete(downloadDatasetQuery);
     }
 
-    public DataRepositoryWithBuffer getNewDataRepositoryWithBuffer(Application application) {
-        return new DataRepositoryWithBuffer(application, repository.getRepository(application).data());
-    }
-
     public Map<Ltree, List<DataValue>> getReferenceDisplaysById(final Application application, final Set<String> listOfDataIds) {
         return repository.getRepository(application).data().getReferenceDisplaysById(listOfDataIds);
     }
diff --git a/src/main/java/fr/inra/oresing/rest/data/VersioningService.java b/src/main/java/fr/inra/oresing/rest/data/VersioningService.java
index 1fc5d2c..5fa6100 100644
--- a/src/main/java/fr/inra/oresing/rest/data/VersioningService.java
+++ b/src/main/java/fr/inra/oresing/rest/data/VersioningService.java
@@ -1,13 +1,18 @@
 package fr.inra.oresing.rest.data;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import fr.inra.oresing.domain.BinaryFile;
 import fr.inra.oresing.domain.BinaryFileDataset;
 import fr.inra.oresing.domain.application.Application;
-import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationDataWriter;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.PrivilegeApplicationDomain;
 import fr.inra.oresing.domain.exceptions.ReportErrors;
+import fr.inra.oresing.domain.exceptions.binaryfile.binaryfile.BadFileOrUUIDQuery;
 import fr.inra.oresing.domain.file.DataFile;
 import fr.inra.oresing.domain.file.FileOrUUID;
 import fr.inra.oresing.domain.repository.data.DataRepository;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.domain.repository.file.BinaryFileRepository;
 import fr.inra.oresing.persistence.*;
 import fr.inra.oresing.rest.data.publication.*;
@@ -16,7 +21,6 @@ import fr.inra.oresing.rest.services.ServiceContainer;
 import fr.inra.oresing.rest.services.ServiceContainerBean;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.multipart.MultipartFile;
@@ -24,6 +28,7 @@ import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.util.*;
 import java.util.function.Function;
+import java.util.function.Predicate;
 
 @Slf4j
 @Component
@@ -41,25 +46,32 @@ public class VersioningService implements ServiceContainerBean {
     @Transactional
     public DataVersioningResult createData(String nameOrId, String dataName, MultipartFile file, String params) throws IOException {
         Application application = serviceContainer.applicationService().getApplication(nameOrId);
+        String fileName = file == null ? null : file.getOriginalFilename();
+        Optional<FileOrUUID> fileOrUUIDOpt = Optional.ofNullable(params)
+                .filter(Objects::nonNull)
+                .filter(Predicate.not("undefined"::equals))
+                .map(json -> {
+                    try {
+                        return new ObjectMapper().readValue(params, FileOrUUID.class);
+                    } catch (JsonProcessingException e) {
+                        throw new BadFileOrUUIDQuery(e.getMessage());
+                    }
+                });
+        Boolean toPublish = fileOrUUIDOpt
+                .map(FileOrUUID::topublish)
+                .orElse(false);
+        ApplicationDataWriter applicationDataWriter = serviceContainer.authorizationService().getPrivilegeAssessorForApplication(PrivilegeApplicationDomain.DATA_WRITE, application)
+                .forDataWrite(dataName, toPublish);
         Set<BinaryFile> filesToStore = new HashSet<>();
-        State state = getStoreFile(application, dataName, params, file == null ? null : file.getOriginalFilename())
+        DataRepositoryForBuffer dataRepositoryWithBuffer = serviceContainer.dataService().getDataRepositoryWithBuffer(application);
+        State state = getStoreFile(application, dataName, fileOrUUIDOpt.orElse(null), fileName, applicationDataWriter)
                 .loadOrCreateFile(file, binaryFileRepository(application), serviceContainer.binaryFileService());
         if (state instanceof UnPublishedVersions unPublishedVersions) {
             FileOrUUID fileOrUUID = unPublishedVersions
                     .unPublishVersions(filesToStore, dataRepository(application), binaryFileRepository(application), serviceContainer.synthesisService())
-                    .checkPublicationRights(filesToStore, dataRepository(application), serviceContainer.binaryFileService(), binaryFileRepository(application));
+                    .checkAndStoreFile(filesToStore, serviceContainer.binaryFileService(), binaryFileRepository(application));
 
-            UUID dataId;
-            if (fileOrUUID.topublish()) {
-                dataId = serviceContainer.dataService().addData(application, dataName, new DataFile(fileOrUUID, state.binaryFile().getFileData()));
-            } else {
-                dataId = state.binaryFile().getId();
-            }
-            if (dataId != null && state.isRepository()) {
-                BinaryFile binaryFile = state.binaryFile();
-                binaryFile.markAsPublished(fileOrUUID.topublish());
-                dataId = binaryFileRepository(application).store(binaryFile);
-            }
+            UUID dataId = publishData(dataName, fileOrUUID, application, state);
             final List<ApplicationResult.DataSynthesis> dataSynthesis = Optional.ofNullable(serviceContainer.dataService().getReferenceSynthesis(application)).orElseGet(List::of);
             return DataVersioningResult.of(nameOrId, dataName, dataId, dataSynthesis);
         }
@@ -68,21 +80,41 @@ public class VersioningService implements ServiceContainerBean {
 
     }
 
+    private UUID publishData(String dataName, FileOrUUID fileOrUUID, Application application, State state) throws IOException {
+        UUID dataId;
+        if (fileOrUUID.topublish()) {
+            dataId = serviceContainer.dataService().addData(application, dataName, new DataFile(fileOrUUID, state.binaryFile().getFileData()));
+        } else {
+            dataId = state.binaryFile().getId();
+        }
+        if (dataId != null && state.isRepository()) {
+            BinaryFile binaryFile = state.binaryFile();
+            binaryFile.markAsPublished(fileOrUUID.topublish());
+            dataId = binaryFileRepository(application).store(binaryFile);
+        }
+        return dataId;
+    }
+
 
-    public StoreFile getStoreFile(Application application, String dataName, String params, String fileName) {
+    public StoreFile getStoreFile(
+            Application application,
+            String dataName,
+            FileOrUUID fileOrUUID,
+            String fileName,
+            ApplicationDataWriter applicationDataWriter) {
+        DataRepositoryForBuffer dataRepositoryWithBuffer = serviceContainer.dataService().getDataRepositoryWithBuffer(application);
         ReportErrors errors = new ReportErrors(jsonRowMapper);
-        Function<Map<String, List<Ltree>>, Map<String, List<Ltree>>> requiredAuthorizationResolver = ra -> dataRepository(application).resolveRequiredAuthorizations(ra);
         Function<UUID, Optional<BinaryFile>> resolveFileById = uuid -> binaryFileRepository(application).tryFindById(uuid);
         return AuthorizationPublicationServiceBuilder.BUILDER(
                         errors,
                         application,
                         dataName,
                         fileName,
-                        params,
-                        requiredAuthorizationResolver,
+                        fileOrUUID,
+                        applicationDataWriter,
                         resolveFileById
                 )
-                .buildAuthorizationForUserService(userRepository, serviceContainer.authorizationService());
+                .testAndBuild(dataRepositoryWithBuffer);
     }
 
     @Transactional
diff --git a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvBuilder.java b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvBuilder.java
index 04f5b27..20ced96 100644
--- a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvBuilder.java
+++ b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvBuilder.java
@@ -11,8 +11,8 @@ import fr.inra.oresing.domain.checker.type.*;
 import fr.inra.oresing.domain.data.UUIDsfromData;
 import fr.inra.oresing.domain.data.deposit.context.DataImporterContext;
 import fr.inra.oresing.domain.data.read.query.*;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.*;
-import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 import fr.inra.oresing.rest.data.DataService;
 import org.apache.commons.csv.CSVFormat;
 import org.slf4j.Logger;
@@ -36,7 +36,7 @@ public class DataCsvBuilder {
     private static final Logger log = LoggerFactory.getLogger(DataCsvBuilder.class);
     private DownloadDatasetQuery downloadDatasetQuery;
 
-    private DataRepositoryWithBuffer dataRepositoryWithBuffer;
+    private DataRepositoryForBuffer dataRepositoryForBuffer;
 
     private Flux<DataRow> datas;
     private OutputStream outputStream;
@@ -86,8 +86,8 @@ public class DataCsvBuilder {
         return this;
     }
 
-    public DataCsvBuilder onRepositories(DataRepositoryWithBuffer DataRepositoryWithBuffer, AdditionalFileRepository additionalFileRepository) {
-        this.dataRepositoryWithBuffer = DataRepositoryWithBuffer;
+    public DataCsvBuilder onRepositories(DataRepositoryForBuffer DataRepositoryWithBuffer, AdditionalFileRepository additionalFileRepository) {
+        this.dataRepositoryForBuffer = DataRepositoryWithBuffer;
         return this;
     }
 
@@ -183,12 +183,12 @@ public class DataCsvBuilder {
                     writer,
                     comparator,
                     getInternationalizedHeader,
-                    dataRepositoryWithBuffer,
+                    dataRepositoryForBuffer,
                     dataDescription,
                     internationalizedSortedColumns,
                     horizontalDisplay
             );
-            DataCsvRowBuilder dataCsvRowBuilder = new DataCsvRowBuilder(language, dataRepositoryWithBuffer, dataDescription, horizontalDisplay);
+            DataCsvRowBuilder dataCsvRowBuilder = new DataCsvRowBuilder(language, dataRepositoryForBuffer, dataDescription, horizontalDisplay);
             datas
                     .map(dataCsvHeaderWriter::writeHeader)
                     .map(dataRow -> addRefsLinkedTo(dataRow, uuiDsfromData))
diff --git a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvHeaderWriter.java b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvHeaderWriter.java
index eae09b3..58672f5 100644
--- a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvHeaderWriter.java
+++ b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvHeaderWriter.java
@@ -5,6 +5,7 @@ import fr.inra.oresing.domain.application.configuration.*;
 import fr.inra.oresing.domain.data.DataColumn;
 import fr.inra.oresing.domain.data.deposit.context.column.Column;
 import fr.inra.oresing.domain.data.read.query.*;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRepository;
 import fr.inra.oresing.persistence.DataRow;
 import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
@@ -19,7 +20,7 @@ public record DataCsvHeaderWriter(
         CSVWriter writer,
         Comparator<ComponentOrderByForExport> comparator,
         Function<String, String> getInternationalizedHeader,
-        DataRepositoryWithBuffer dataRepositoryWithBuffer,
+        DataRepositoryForBuffer dataRepositoryWithBuffer,
         List<ComponentOrderByForExport> orderedColumns,
         StandardDataDescription dataDescription,
         Map<String, Configuration.InternationalizedSortedColumn> internationalizedSortedColumns,
@@ -28,7 +29,7 @@ public record DataCsvHeaderWriter(
             CSVWriter writer,
             Comparator<ComponentOrderByForExport> comparator,
             Function<String, String> getInternationalizedHeader,
-            DataRepositoryWithBuffer dataRepositoryWithBuffer,
+            DataRepositoryForBuffer dataRepositoryWithBuffer,
             StandardDataDescription dataDescription,
             Map<String, Configuration.InternationalizedSortedColumn> internationalizedSortedColumns,
             boolean horizontalDisplay) {
@@ -188,7 +189,8 @@ public record DataCsvHeaderWriter(
         String referenceName = dynamicComponent.reference();
         String referenceColumnToLookForHeader = dynamicComponent.referenceColumnToLookForHeader();
         ComponentType typeForComponentKey = dataDescription().getTypeForComponentKey(componentKey);
-        Map<String, ComponentOrderBy> dynamicColumns = dataRepositoryWithBuffer().repository().findAllByReferenceTypeStream(referenceName)
+        Map<String, ComponentOrderBy> dynamicColumns = dataRepositoryWithBuffer()
+                .findAllByReferenceTypeStream(referenceName)
                 .sorted(Comparator.comparing(dataValue -> dataValue.getNaturalKey().getSql()))
                 .collect(Collectors.toMap(
                         dataValue -> dataValue.getNaturalKey().getSql(),
diff --git a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvRowBuilder.java b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvRowBuilder.java
index f32ec78..e37f542 100644
--- a/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvRowBuilder.java
+++ b/src/main/java/fr/inra/oresing/rest/data/extraction/DataCsvRowBuilder.java
@@ -3,6 +3,7 @@ package fr.inra.oresing.rest.data.extraction;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.data.read.query.*;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 
 import java.util.List;
@@ -12,7 +13,7 @@ import java.util.stream.Stream;
 
 public record DataCsvRowBuilder(
         String language,
-        DataRepositoryWithBuffer dataRepositoryWithBuffer,
+        DataRepositoryForBuffer dataRepositoryWithBuffer,
         StandardDataDescription dataDescription,
         boolean horizontalDisplay) {
     public List<String> getCsvRow(Map<String, FieldType> dataRowValues,
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUser.java b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUser.java
index 0f1d91c..1f26fb5 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUser.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUser.java
@@ -25,7 +25,7 @@ public record AuthorizationForUser(
         AuthorizationsResult authorizationsForUserOrPublic,
         AuthorizationPublicationService builder) implements State {
 
-    protected static Boolean hasRight(
+    /*protected static Boolean hasRight(
             final Authorization authorization,
             final List<AuthorizationParsed> auths) {
         return auths.stream()
@@ -100,7 +100,7 @@ public record AuthorizationForUser(
 
     protected boolean requiredAuthorizationMatchForFile(
             final Map<String, Set<String>> requiredAuthorizationInDataBase) {
-        Optional<Map<String, List<Ltree>>> requiredAuthorizationForFile = Optional.ofNullable(params())
+        Optional<Map<String, List<Ltree>>> requiredAuthorizationForFile = Optional.ofNullable(fileOrUuid())
                 .map(FileOrUUID::binaryfiledataset)
                 .map(BinaryFileDataset::getRequiredAuthorizations);
         if (requiredAuthorizationForFile.isPresent()) {
@@ -140,5 +140,5 @@ public record AuthorizationForUser(
 
     public boolean isApplicationCreator() {
         return isApplicationCreator;
-    }
+    }*/
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUserBuilder.java b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUserBuilder.java
deleted file mode 100644
index 020d805..0000000
--- a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationForUserBuilder.java
+++ /dev/null
@@ -1,166 +0,0 @@
-package fr.inra.oresing.rest.data.publication;
-
-import fr.inra.oresing.domain.exceptions.SiOreIllegalArgumentException;
-import fr.inra.oresing.domain.repository.authorization.OperationType;
-import fr.inra.oresing.domain.repository.authorization.role.CurrentUserRoles;
-import fr.inra.oresing.domain.repository.user.file.UserRepository;
-import fr.inra.oresing.rest.services.AuthorizationService;
-import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
-import fr.inra.oresing.rest.model.authorization.AuthorizationsResult;
-
-import java.util.Map;
-import java.util.Set;
-
-public record AuthorizationForUserBuilder(
-        AuthorizationPublicationService builder
-) implements State {
-
-    public StoreFile buildAuthorizationForUserService(
-            UserRepository userRepository,
-            AuthorizationService authorizationService) {
-        CurrentUserRoles currentUserRoles = userRepository.getRolesForCurrentUser();
-        boolean isUserManager = currentUserRoles.userManagerOf(application());
-        builder().authorizationsForUser = authorizationService
-                .getAuthorizationsForUserAndPublic(
-                        application().getName(),
-                        currentUserRoles.userLogin()
-                );
-        boolean isRepository = builder.isRepository(builder.application, builder.dataName);
-        builder().authorizations =
-                new AuthorizationForUser(
-                        isUserManager,
-                        isRepository,
-                        canDeposit(isRepository, isUserManager),
-                        canPublishOrUnPublish(isRepository, isUserManager),
-                        canDelete(isRepository, isUserManager),
-                        builder().authorizationsForUser,
-                        builder()
-                );
-        return new StoreFile(builder());
-
-    }
-
-    private boolean canDeposit(boolean isRepository, boolean isApplicationCreator) {
-        try {
-            return hasRightForDeposit(
-                    isRepository,
-                    isApplicationCreator,
-                    builder().authorizationsForUser
-            );
-        } catch (SiOreIllegalArgumentException e) {
-            return false;
-        }
-    }
-
-    private boolean canDelete(boolean isRepository, boolean isApplicationCreator) {
-        try {
-            return hasRightForDelete(
-                    isRepository,
-                    isApplicationCreator,
-                    builder().authorizationsForUser
-            );
-        } catch (SiOreIllegalArgumentException e) {
-            return false;
-        }
-    }
-
-    private boolean canPublishOrUnPublish(boolean isRepository, boolean isApplicationCreator) {
-        try {
-            return hasRightForPublishOrUnPublish(
-                    isRepository,
-                    isApplicationCreator,
-                    builder().authorizationsForUser,
-                    builder().authorizationsForPublic
-            );
-        } catch (SiOreIllegalArgumentException e) {
-            return false;
-        }
-    }
-
-    private boolean canDoOperation(
-            boolean isRepository,
-            boolean isApplicationCreator,
-            AuthorizationsResult authorizationsForUserOrPublic,
-            OperationType operationType,
-            final String errorMessage) {
-        OperationType operationType1 = operationType;
-        SiOreIllegalArgumentException siOreIllegalArgumentException = new SiOreIllegalArgumentException(errorMessage, Map.of("dataName", dataName(), "application", application().getName()));
-        if (!isRepository && OperationType.depot == operationType1) {
-            operationType1 = OperationType.publication;
-        }
-        boolean hasRightForOperationType = hasRightForOperationType(
-                isApplicationCreator,
-                authorizationsForUserOrPublic,
-                operationType1
-        );
-        if (isRepository) {
-            if (hasRightForOperationType) {
-                return true;
-            }
-            throw siOreIllegalArgumentException;
-        }
-        final OperationType finalOperationType = operationType1;
-        if (
-                isApplicationCreator
-                        || (hasRightForOperationType &&
-                        testPredicateForOperationType(finalOperationType, this::testRequiredAuthorization))) {
-            return true;
-        }
-        throw siOreIllegalArgumentException;
-    }
-
-    private boolean testRequiredAuthorization(AuthorizationParsed parsedAuhorization) {
-        Map<String, Set<String>> requiredAuthorizationsInDatabase = parsedAuhorization.requiredAuthorizations();
-        if (requiredAuthorizationsInDatabase.isEmpty()) {
-            return true;
-        } else {
-            return params().requiredAuthorizationMatchForFile(requiredAuthorizationsInDatabase);
-        }
-    }
-
-    private boolean hasRightForOperationType(
-            boolean isApplicationCreator,
-            AuthorizationsResult authorization,
-            final OperationType operationType) {
-        return isApplicationCreator
-                || testPredicateForOperationType(operationType, auth -> true);
-    }
-
-    private boolean hasRightForDelete(
-            boolean isRepository,
-            boolean isApplicationCreator,
-            AuthorizationsResult authorizationsForUser) {
-        return canDoOperation(
-                isRepository,
-                isApplicationCreator,
-                authorizationsForUser,
-                OperationType.delete,
-                SiOreIllegalArgumentException.NO_RIGHT_ON_TABLE_FOR_DELETE);
-    }
-
-    private boolean hasRightForPublishOrUnPublish(
-            boolean isRepository,
-            boolean isApplicationCreator,
-            AuthorizationsResult authorizationsForUser,
-            AuthorizationsResult authorizationsForPublic) {
-        return canDoOperation(
-                isRepository,
-                isApplicationCreator,
-                authorizationsForUser,
-                OperationType.publication,
-                SiOreIllegalArgumentException.NO_RIGHT_ON_TABLE_FOR_PUBLISH_OR_UNPUBLISH);
-    }
-
-    private boolean hasRightForDeposit(
-            boolean isRepository,
-            boolean isApplicationCreator,
-            AuthorizationsResult authorizationsForUser) {
-        return canDoOperation(
-                isRepository,
-                isApplicationCreator,
-                authorizationsForUser,
-                OperationType.depot,
-                SiOreIllegalArgumentException.NO_RIGHT_ON_TABLE_FOR_DEPOSIT
-        );
-    }
-}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationService.java b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationService.java
index 5cec505..aed43f7 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationService.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationService.java
@@ -3,9 +3,11 @@ package fr.inra.oresing.rest.data.publication;
 import fr.inra.oresing.domain.BinaryFile;
 import fr.inra.oresing.domain.BinaryFileDataset;
 import fr.inra.oresing.domain.application.Application;
+import fr.inra.oresing.domain.application.configuration.Ltree;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.application.configuration.Submission;
 import fr.inra.oresing.domain.application.configuration.SubmissionType;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationDataWriter;
 import fr.inra.oresing.domain.exceptions.ReportErrors;
 import fr.inra.oresing.domain.file.FileOrUUID;
 import fr.inra.oresing.domain.repository.data.DataRepository;
@@ -14,6 +16,7 @@ import fr.inra.oresing.domain.services.synthesis.SynthesisService;
 import fr.inra.oresing.persistence.BinaryFileInfos;
 import fr.inra.oresing.rest.model.authorization.AuthorizationsResult;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
@@ -26,30 +29,33 @@ public class AuthorizationPublicationService {
     protected final StandardDataDescription dataDescription;
     protected final Application application;
 
+    protected final String dataName;
+    protected FileOrUUID fileOrUUID;
+    protected ApplicationDataWriter applicationDataWriter;
+
     public String getDataName() {
         return this.dataName;
     }
-
-    protected final String dataName;
-    protected AuthorizationsResult authorizationsForPublic;
-    protected AuthorizationsResult authorizationsForUser;
-    protected FileOrUUID params;
-
-    public AuthorizationForUser getAuthorizations() {
-        return this.authorizations;
+    public ApplicationDataWriter applicationDataWriter() {
+        return this.applicationDataWriter;
     }
 
-    protected AuthorizationForUser authorizations;
-    protected AuthorizationPublicationService(ReportErrors errors, final Application application, final String dataName, FileOrUUID params) {
+    protected AuthorizationPublicationService(
+            ReportErrors errors,
+            final Application application,
+            final String dataName,
+            FileOrUUID fileOrUUID,
+            ApplicationDataWriter applicationDataWriter) {
         this.errors = errors;
         this.application = application;
-        this.dataName = dataName!=null?dataName:Optional.ofNullable(params).map(FileOrUUID::binaryfiledataset).map(BinaryFileDataset::getDatatype).orElse(null);
-        this.params = buildParams(params);
+        this.dataName = dataName != null ? dataName : Optional.ofNullable(fileOrUUID).map(FileOrUUID::binaryfiledataset).map(BinaryFileDataset::getDatatype).orElse(null);
+        this.fileOrUUID = setFileOrUUID(fileOrUUID);
         this.dataDescription = buildDataDescription(application);
+        this.applicationDataWriter = applicationDataWriter;
     }
 
-    public FileOrUUID getParams() {
-        return this.params;
+    public FileOrUUID getFileOrUUID() {
+        return this.fileOrUUID;
     }
 
     protected StandardDataDescription buildDataDescription(Application application) {
@@ -57,14 +63,14 @@ public class AuthorizationPublicationService {
                 .orElseThrow(() -> new IllegalArgumentException("dataName Can't be null"));
     }
 
-    protected FileOrUUID buildParams(FileOrUUID params) {
-        Optional.ofNullable(params)
+    protected FileOrUUID setFileOrUUID(FileOrUUID fileOrUUIDLocal) {
+        Optional.ofNullable(fileOrUUIDLocal)
                 .map(par -> par.binaryfiledataset() != null ?
-                        params.binaryfiledataset() :
+                        fileOrUUIDLocal.binaryfiledataset() :
                         BinaryFileDataset.EMPTY_INSTANCE()
                 )
                 .ifPresent(binaryFileDataset -> binaryFileDataset.setDatatype(dataName));
-        return params;
+        return fileOrUUIDLocal;
     }
 
 
@@ -79,8 +85,8 @@ public class AuthorizationPublicationService {
     }
 
     protected BinaryFile getPublishedVersion(BinaryFileRepository binaryFileRepository) {
-        assert params.binaryfiledataset() != null;
-        return binaryFileRepository.findPublishedVersions(params.binaryfiledataset()).orElse(null);
+        assert fileOrUUID.binaryfiledataset() != null;
+        return binaryFileRepository.findPublishedVersions(fileOrUUID.binaryfiledataset()).orElse(null);
     }
 
     protected void unPublishVersions(
@@ -101,33 +107,9 @@ public class AuthorizationPublicationService {
         }
     }
 
-    boolean hasRightForPublishOrUnPublish() {
-        return authorizations.hasRightForPublishOrUnPublish();
-    }
-
-    boolean hasRightForDeposit() {
-        return authorizations.hasRightForDeposit();
-    }
-
-    boolean isApplicationCreator() {
-        return authorizations.isApplicationCreator();
-    }
-
-    boolean isRepository() {
-        return authorizations.isRepository();
-    }
-
-    boolean canDeposit() {
-        return authorizations.canDeposit();
-    }
-
-    AuthorizationsResult authorizationsForUser() {
-        return authorizations == null ? authorizationsForUser : authorizations.authorizationsForUserOrPublic();
-    }
-
     boolean fileMustBeJustStored() {
         boolean existsFileToPublish = Optional.ofNullable(binaryFile).map(BinaryFile::getId).isPresent();
-        Boolean publishIsAsked = Optional.ofNullable(params).map(FileOrUUID::topublish).orElse(false);
+        Boolean publishIsAsked = Optional.ofNullable(fileOrUUID).map(FileOrUUID::topublish).orElse(false);
         Boolean unPublishIsAsked = !publishIsAsked && Optional.ofNullable(binaryFile).map(BinaryFile::getParams).map(BinaryFileInfos::published).orElse(false);
         return
                 isRepository() &&
@@ -137,7 +119,13 @@ public class AuthorizationPublicationService {
                 );
     }
 
+    protected boolean isRepository() {
+        return application.findSubmission(dataName)
+                .map(Submission::strategy)
+                .stream().anyMatch(SubmissionType.OA_VERSIONING::equals);
+    }
+
     boolean fileMustBePublished() {
-        return !isRepository() || Optional.ofNullable(params).map(FileOrUUID::topublish).orElse(false);
+        return !isRepository() || Optional.ofNullable(fileOrUUID).map(FileOrUUID::topublish).orElse(false);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationServiceBuilder.java b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationServiceBuilder.java
index 6774e5b..45840b0 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationServiceBuilder.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/AuthorizationPublicationServiceBuilder.java
@@ -1,36 +1,33 @@
 package fr.inra.oresing.rest.data.publication;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.base.Strings;
 import fr.inra.oresing.domain.BinaryFile;
 import fr.inra.oresing.domain.BinaryFileDataset;
 import fr.inra.oresing.domain.application.Application;
-import fr.inra.oresing.domain.application.configuration.Ltree;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.application.configuration.Submission;
+import fr.inra.oresing.domain.authorization.privilegeassessor.role.ApplicationDataWriter;
 import fr.inra.oresing.domain.exceptions.ReportErrors;
-import fr.inra.oresing.domain.exceptions.binaryfile.binaryfile.BadFileOrUUIDQuery;
 import fr.inra.oresing.domain.file.FileOrUUID;
 
-import java.io.IOException;
 import java.util.*;
 import java.util.function.Function;
 import java.util.function.Predicate;
 
 public class AuthorizationPublicationServiceBuilder {
 
-    public static AuthorizationForUserBuilder BUILDER(ReportErrors errors,
-                                                      final Application application,
-                                                      final String dataName,
-                                                      String fileName,
-                                                      String params,
-                                                      Function<Map<String, List<Ltree>>, Map<String, List<Ltree>>> requiredAuthorizationResolver,
-                                                      Function<UUID, Optional<BinaryFile>> resolveFileById) {
+    public static StoredFileBuilder BUILDER(ReportErrors errors,
+                                            final Application application,
+                                            final String dataName,
+                                            String fileName,
+                                            FileOrUUID fileOrUUID,
+                                            ApplicationDataWriter applicationDataWriter,
+                                            Function<UUID, Optional<BinaryFile>> resolveFileById) {
         AuthorizationPublicationService builder = new AuthorizationPublicationService(
                 errors,
                 application,
                 dataName,
-                deserialiseFileOrUUIDQuery(dataName, params, resolveFileById));
+                deserialiseFileOrUUIDQuery(dataName, fileOrUUID, resolveFileById),
+                applicationDataWriter);
         boolean hasSubmissionScope = application.findData(dataName)
                                              .map(StandardDataDescription::submission)
                                              .map(Submission::submissionScope)
@@ -38,53 +35,49 @@ public class AuthorizationPublicationServiceBuilder {
                                              .map(List::size)
                                              .orElse(-1) > 0;
         boolean hasNoFileId = Optional.of(builder)
-                .map(AuthorizationPublicationService::getParams)
-                .map(fileOrUUID -> true)
+                .map(AuthorizationPublicationService::getFileOrUUID)
                 .isEmpty();
         if (hasNoFileId && hasSubmissionScope) {
             return new FileNameResolver(builder)
-                    .resolveFileName(fileName)
-                    .resolveParams(requiredAuthorizationResolver);
+                    .resolveFileName(fileName);
         }
-        return new AuthorizationForUserBuilder(builder);
+        return new StoredFileBuilder(builder);
     }
 
-    private static FileOrUUID deserialiseFileOrUUIDQuery(final String datatype, final String params, Function<UUID, Optional<BinaryFile>> resolveFileById) {
-        if (Strings.isNullOrEmpty(params) || "undefined".equals(params)) {
+    private static FileOrUUID deserialiseFileOrUUIDQuery(
+            final String datatype,
+            final FileOrUUID fileOrUUID,
+            Function<UUID, Optional<BinaryFile>> resolveFileById) {
+        if (fileOrUUID==null) {
             return null;
         }
 
-        try {
-            final FileOrUUID fileOrUUID = new ObjectMapper().readValue(params, FileOrUUID.class);
-            Optional.ofNullable(fileOrUUID)
-                    .map(FileOrUUID::binaryfiledataset)
-                    .ifPresent(binaryFileDataset -> {
-                        String resolvedDatatype = Optional.of(binaryFileDataset)
-                                .map(BinaryFileDataset::getDatatype)
-                                .filter(Predicate.not(String::isBlank))
-                                .orElse(datatype);
-                        binaryFileDataset.setDatatype(resolvedDatatype);
-                    });
-            boolean isNotDefinedDatatype = Optional.ofNullable(fileOrUUID)
-                    .map(FileOrUUID::binaryfiledataset)
-                    .map(BinaryFileDataset::getDatatype).isEmpty();
-            if(isNotDefinedDatatype) {
-                Optional<UUID> uuid = Optional.ofNullable(fileOrUUID)
-                        .map(FileOrUUID::fileid);
-                if(uuid.isEmpty()) {
-                    return fileOrUUID;
-                }
-                return uuid
-                        .map(resolveFileById)
-                        .filter(Optional::isPresent)
-                        .map(Optional::get)
-                        .map(BinaryFile::getParams)
-                        .map(fileOrUUID::withParams)
-                        .orElseThrow(IllegalArgumentException::new);
+        Optional.ofNullable(fileOrUUID)
+                .map(FileOrUUID::binaryfiledataset)
+                .ifPresent(binaryFileDataset -> {
+                    String resolvedDatatype = Optional.of(binaryFileDataset)
+                            .map(BinaryFileDataset::getDatatype)
+                            .filter(Predicate.not(String::isBlank))
+                            .orElse(datatype);
+                    binaryFileDataset.setDatatype(resolvedDatatype);
+                });
+        boolean isNotDefinedDatatype = Optional.ofNullable(fileOrUUID)
+                .map(FileOrUUID::binaryfiledataset)
+                .map(BinaryFileDataset::getDatatype).isEmpty();
+        if(isNotDefinedDatatype) {
+            Optional<UUID> uuid = Optional.ofNullable(fileOrUUID)
+                    .map(FileOrUUID::fileid);
+            if(uuid.isEmpty()) {
+                return fileOrUUID;
             }
-            return fileOrUUID;
-        } catch (final IOException e) {
-            throw new BadFileOrUUIDQuery(e.getMessage());
+            return uuid
+                    .map(resolveFileById)
+                    .filter(Optional::isPresent)
+                    .map(Optional::get)
+                    .map(BinaryFile::getParams)
+                    .map(fileOrUUID::withParams)
+                    .orElseThrow(IllegalArgumentException::new);
         }
+        return fileOrUUID;
     }
 }
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/CheckRights.java b/src/main/java/fr/inra/oresing/rest/data/publication/CheckAndStoreFile.java
similarity index 58%
rename from src/main/java/fr/inra/oresing/rest/data/publication/CheckRights.java
rename to src/main/java/fr/inra/oresing/rest/data/publication/CheckAndStoreFile.java
index 5c8688c..b7a5de3 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/CheckRights.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/CheckAndStoreFile.java
@@ -2,43 +2,33 @@ package fr.inra.oresing.rest.data.publication;
 
 import com.google.common.base.Preconditions;
 import fr.inra.oresing.domain.BinaryFile;
-import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.checker.InvalidDatasetContentException;
 import fr.inra.oresing.domain.file.FileOrUUID;
-import fr.inra.oresing.domain.repository.data.DataRepository;
 import fr.inra.oresing.domain.repository.file.BinaryFileRepository;
 import fr.inra.oresing.domain.services.file.BinaryFileService;
 
 import java.util.Set;
 import java.util.UUID;
 
-public record CheckRights(
+public record CheckAndStoreFile(
         AuthorizationPublicationService builder) implements State {
-    public FileOrUUID checkPublicationRights(
+    public FileOrUUID checkAndStoreFile(
             Set<BinaryFile> filesToStore,
-            DataRepository dataRepository,
             BinaryFileService binaryFileService,
             BinaryFileRepository binaryFileRepository) {
-        if (!builder().isRepository() || params().topublish()) {
-
-            StandardDataDescription dataDescription = application().findData(builder().dataName)
-                    .orElseThrow(() -> new IllegalArgumentException(
-                            "no dataDescription for %s".formatted(builder().dataName)));
+        if (!builder().isRepository() || fileOrUuid().topublish()) {
             InvalidDatasetContentException.checkErrorsIsEmpty(binaryFileService.findPublishedVersion(
                     application().getName(),
                     dataName(),
-                    params(),
+                    fileOrUuid(),
                     filesToStore,
                     true));
-            assert builder().hasRightForPublishOrUnPublish();
-
-
-            Preconditions.checkArgument(binaryFile() != null || (params() != null && params().fileid() != null), "le fichier ou params.fileid est requis");
+            Preconditions.checkArgument(binaryFile() != null || (fileOrUuid() != null && fileOrUuid().fileid() != null), "le fichier ou params.fileid est requis");
             Preconditions.checkArgument(!(binaryFile().getFileData().length == 0), "le CSV téléversé pour le référentiel " + dataName() + " est vide");
             UUID fileId = binaryFileRepository.store(binaryFile());
-            return FileOrUUID.from(params(), fileId);
+            return FileOrUUID.from(fileOrUuid(), fileId);
         } else {
-            return FileOrUUID.from(params(), null);
+            return FileOrUUID.from(fileOrUuid(), null);
         }
 
     }
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/FileNameResolver.java b/src/main/java/fr/inra/oresing/rest/data/publication/FileNameResolver.java
index a7ab777..be8af90 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/FileNameResolver.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/FileNameResolver.java
@@ -9,21 +9,20 @@ import java.util.Optional;
 
 public record FileNameResolver(
         AuthorizationPublicationService builder) implements State {
-    public ParamsResolver resolveFileName(String fileName){
-        BinaryFileDataset binaryFileDataset = params() == null ? new BinaryFileDataset() : params().binaryfiledataset();
+    public StoredFileBuilder resolveFileName(String fileName){
+        BinaryFileDataset binaryFileDataset = fileOrUuid() == null ? new BinaryFileDataset() : fileOrUuid().binaryfiledataset();
         BinaryFileDataset resolvedBinaryFileDataset = Optional.ofNullable(dataDescription())
                 .map(StandardDataDescription::submission)
                 .map(submission -> submission.parseFileName(
                         fileName,
                         binaryFileDataset))
                 .orElse(binaryFileDataset);
-        FileOrUUID params = builder.params;
+        FileOrUUID params = builder.fileOrUUID;
         if(params != null){
-            builder.params =  params.withParams(new BinaryFileInfos(resolvedBinaryFileDataset));
+            builder.fileOrUUID =  params.withParams(new BinaryFileInfos(resolvedBinaryFileDataset));
         }else{
-            builder.params = new FileOrUUID(null, resolvedBinaryFileDataset, true);
+            builder.fileOrUUID = new FileOrUUID(null, resolvedBinaryFileDataset, true);
         }
-        return new ParamsResolver
-                (builder());
+        return new StoredFileBuilder(builder());
     }
 }
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/ParamsResolver.java b/src/main/java/fr/inra/oresing/rest/data/publication/ParamsResolver.java
deleted file mode 100644
index aeccc7d..0000000
--- a/src/main/java/fr/inra/oresing/rest/data/publication/ParamsResolver.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package fr.inra.oresing.rest.data.publication;
-
-import fr.inra.oresing.domain.BinaryFileDataset;
-import fr.inra.oresing.domain.application.configuration.Ltree;
-import fr.inra.oresing.domain.exceptions.authorization.AuthorizationRequestException;
-import fr.inra.oresing.domain.exceptions.authorization.SiOreAuthorizationRequestException;
-import fr.inra.oresing.domain.file.FileOrUUID;
-import org.apache.commons.collections4.MapUtils;
-
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-public record ParamsResolver(AuthorizationPublicationService builder) implements State {
-
-    public AuthorizationForUserBuilder resolveParams(
-            Function<Map<String, List<Ltree>>, Map<String, List<Ltree>>> requiredAuthorizationResolver
-    ) {
-        Map<String, List<Ltree>> resolvedRequiredAuthorizations = Optional.ofNullable(params())
-                .map(FileOrUUID::binaryfiledataset)
-                .map(BinaryFileDataset::getRequiredAuthorizations)
-                .map(requiredAuthorizationResolver)
-                .orElse(null);
-        Map<String, List<Ltree>> requiredAuthorizations = params()
-                .binaryfiledataset()
-                .getRequiredAuthorizations();
-        Map<String, List<Ltree>> missingRequiredAuthorizations = requiredAuthorizations.keySet().stream()
-                .filter(ref -> Objects.requireNonNull(resolvedRequiredAuthorizations).get(ref) == null)
-                .map(ref-> new AbstractMap.SimpleEntry<>(ref, requiredAuthorizations.get(ref)))
-                .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
-        if(MapUtils.isNotEmpty(missingRequiredAuthorizations)){
-            throw new SiOreAuthorizationRequestException(
-                    AuthorizationRequestException.MISSING_REQUIRED_AUTHORIZATION,
-                    Map.of(
-                            "missingRequiredAuthorizations", missingRequiredAuthorizations
-                    )
-            );
-        }
-        //builder().getParams().binaryfiledataset().setRequiredAuthorizations(resolvedRequiredAuthorizations);
-        return new AuthorizationForUserBuilder(builder());
-    }
-}
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/State.java b/src/main/java/fr/inra/oresing/rest/data/publication/State.java
index 6d0f708..f241eca 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/State.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/State.java
@@ -4,14 +4,11 @@ import fr.inra.oresing.domain.BinaryFile;
 import fr.inra.oresing.domain.application.Application;
 import fr.inra.oresing.domain.application.configuration.StandardDataDescription;
 import fr.inra.oresing.domain.file.FileOrUUID;
-import fr.inra.oresing.domain.repository.authorization.OperationType;
 import fr.inra.oresing.rest.model.authorization.AuthorizationParsed;
-import fr.inra.oresing.rest.model.authorization.AuthorizationsResult;
 
-import java.util.Optional;
 import java.util.function.Predicate;
 
-sealed public interface State permits AuthorizationForUser, AuthorizationForUserBuilder, CheckRights, FileNameResolver, JustStoredFile, ParamsResolver, StoreFile, UnPublishedVersions {
+sealed public interface State permits AuthorizationForUser, StoredFileBuilder, CheckAndStoreFile, FileNameResolver, JustStoredFile, StoreFile, UnPublishedVersions {
 
 
     Predicate<AuthorizationParsed> TRUE_PREDICATE = auth -> true;
@@ -21,26 +18,14 @@ sealed public interface State permits AuthorizationForUser, AuthorizationForUser
         return builder().binaryFile;
     }
 
-    default boolean isApplicationCreator() {
-        return builder().isApplicationCreator();
-    }
-
     default boolean isRepository() {
         return builder().isRepository();
     }
 
-    default Boolean canDeposit() {
-        return builder().canDeposit();
-    }
-
     default StandardDataDescription dataDescription() {
         return builder().dataDescription;
     }
 
-    default AuthorizationsResult authorizationsForUserAndPublic() {
-        return builder().authorizationsForUser();
-    }
-
     default Application application() {
         return builder().application;
     }
@@ -49,22 +34,7 @@ sealed public interface State permits AuthorizationForUser, AuthorizationForUser
         return builder().dataName;
     }
 
-    default FileOrUUID params() {
-        return builder().params;
-    }default boolean testPredicateForOperationType(OperationType operationType, Predicate<AuthorizationParsed> predicate) {
-        // Check user authorizations
-        boolean userAuth = Optional.ofNullable(authorizationsForUserAndPublic().userAuthorization().get(dataName()))
-                .map(authList -> authList.stream()
-                        .filter(auth -> auth.operationTypes().contains(operationType))
-                        .anyMatch(predicate))
-                .orElse(false);
-
-        // Check public authorization
-        boolean publicAuth = Optional.ofNullable(authorizationsForUserAndPublic().publicAuthorization().get(dataName()))
-                .filter(auth -> auth.operationTypes().contains(operationType))
-                .map(predicate::test)
-                .orElse(false);
-
-        return userAuth || publicAuth;
+    default FileOrUUID fileOrUuid() {
+        return builder().fileOrUUID;
     }
 }
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/StoreFile.java b/src/main/java/fr/inra/oresing/rest/data/publication/StoreFile.java
index e34df85..606512d 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/StoreFile.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/StoreFile.java
@@ -1,10 +1,13 @@
 package fr.inra.oresing.rest.data.publication;
 
 import fr.inra.oresing.domain.BinaryFile;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForDepositException;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForPublishException;
 import fr.inra.oresing.domain.file.FileBomResolver;
 import fr.inra.oresing.domain.file.FileOrUUID;
 import fr.inra.oresing.domain.repository.file.BinaryFileRepository;
 import fr.inra.oresing.domain.services.file.BinaryFileService;
+import fr.inra.oresing.rest.exceptions.OreSiIOException;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
@@ -17,38 +20,59 @@ public record StoreFile(AuthorizationPublicationService builder) implements Stat
             MultipartFile file,
             BinaryFileRepository binaryFileRepository,
             BinaryFileService binaryFileService
-    ) throws IOException {
-            byte[] bytes = file==null?null : FileBomResolver.of(file.getInputStream()).readAllBytes();
-            assert builder().hasRightForDeposit();
+    ) {
 
-        builder().binaryFile = Optional.ofNullable(params()).map(FileOrUUID::fileid)
-                .flatMap(binaryFileRepository::tryFindByIdWithData)
-                .orElseGet(() -> {
-                    UUID fileId;
-                    try {
-                        fileId = binaryFileService
-                                .storeFile(
-                                        application(),
-                                        file,
-                                        "",
-                                        Optional.ofNullable(params()).map(FileOrUUID::binaryfiledataset).orElse(null));
-                    } catch (IOException e) {
-                        throw null;
-                    }
-                    BinaryFile binaryFile = binaryFileRepository.tryFindByIdWithData(fileId).orElse(null);
-                    if (binaryFile == null) {
-                        return null;
-                    }
-                    if (params() != null) {
-                        binaryFile.withBinaryFileDataset(params().binaryfiledataset());
-                    }
-                    binaryFile.setFileData(bytes);
-                    binaryFileRepository.store(binaryFile);
-                    return binaryFile;
-                });
-        if(builder().fileMustBeJustStored()){
+        try {
+            byte[] bytes = null;
+            bytes = file == null ? null : FileBomResolver.of(file.getInputStream()).readAllBytes();
+
+            byte[] finalBytes = bytes;
+            builder().binaryFile = Optional.ofNullable(fileOrUuid()).map(FileOrUUID::fileid)
+                    .flatMap(binaryFileRepository::tryFindByIdWithData)
+                    .orElseGet(() -> {
+                        UUID fileId;
+                        try {
+                            fileId = binaryFileService
+                                    .storeFile(
+                                            application(),
+                                            file,
+                                            "",
+                                            Optional.ofNullable(fileOrUuid()).map(FileOrUUID::binaryfiledataset).orElse(null));
+                        } catch (IOException e) {
+                            throw OreSiIOException.ORE_SI_IOEXCEPTION_CANT_LOAD_FILE();
+                        }
+                        BinaryFile binaryFile = binaryFileRepository.tryFindByIdWithData(fileId).orElse(null);
+                        if (binaryFile == null) {
+                            return null;
+                        }
+                        if (fileOrUuid() != null) {
+                            binaryFile.withBinaryFileDataset(fileOrUuid().binaryfiledataset());
+                        }
+                        binaryFile.setFileData(finalBytes);
+                        binaryFileRepository.store(binaryFile);
+                        return binaryFile;
+                    });
+            if (builder().fileMustBeJustStored()) {
                 return new JustStoredFile(builder());
             }
-        return new UnPublishedVersions(builder());
+            return new UnPublishedVersions(builder());
+        } catch (IOException e) {
+            throw OreSiIOException.ORE_SI_IOEXCEPTION_CANT_LOAD_FILE();
+        }
+    }
+
+    public StoreFile testRights() {
+        boolean newFileOrUUID = Optional.ofNullable(fileOrUuid()).map(FileOrUUID::fileid).isEmpty();
+        boolean publishing = Optional.ofNullable(fileOrUuid()).map(FileOrUUID::topublish).orElse(false) ||
+                             newFileOrUUID && !builder().isRepository();
+        publishing = !application().isData(dataName()) || publishing ;
+        if (newFileOrUUID && !builder().applicationDataWriter().hasRightForDeposit(fileOrUuid())) {
+            throw new NotApplicationDataWriterForDepositException(application().getName(), dataName());
+        } else {
+            if (publishing && !builder().applicationDataWriter().hasRightForPublishOrUnPublish(fileOrUuid())) {
+                throw new NotApplicationDataWriterForPublishException(application().getName(), dataName());
+            }
+        }
+        return this;
     }
 }
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/StoredFileBuilder.java b/src/main/java/fr/inra/oresing/rest/data/publication/StoredFileBuilder.java
new file mode 100644
index 0000000..d823840
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/StoredFileBuilder.java
@@ -0,0 +1,28 @@
+package fr.inra.oresing.rest.data.publication;
+
+import fr.inra.oresing.domain.BinaryFileDataset;
+import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.file.FileOrUUID;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
+public record StoredFileBuilder(
+        AuthorizationPublicationService builder
+) implements State {
+
+    public StoreFile testAndBuild(DataRepositoryForBuffer dataRepositoryWithBuffer) {
+        Map<String, List<Ltree>> requiredAuthorization = Optional.ofNullable(builder())
+                .map(AuthorizationPublicationService::getFileOrUUID)
+                .map(FileOrUUID::binaryfiledataset)
+                .map(binaryFileDataset -> binaryFileDataset.testrequiredAuthorizationsAndReturnHierarchicalKeys(dataRepositoryWithBuffer))
+                .map(BinaryFileDataset::getRequiredAuthorizations)
+                .orElse(null);
+        if (requiredAuthorization != null) {
+            builder().fileOrUUID.binaryfiledataset().setRequiredAuthorizations(requiredAuthorization);
+        }
+        return new StoreFile(builder()).testRights();
+    }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/inra/oresing/rest/data/publication/UnPublishedVersions.java b/src/main/java/fr/inra/oresing/rest/data/publication/UnPublishedVersions.java
index b46f803..324fa8d 100644
--- a/src/main/java/fr/inra/oresing/rest/data/publication/UnPublishedVersions.java
+++ b/src/main/java/fr/inra/oresing/rest/data/publication/UnPublishedVersions.java
@@ -9,29 +9,27 @@ import java.util.Set;
 
 public record UnPublishedVersions(AuthorizationPublicationService builder) implements State {
 
-    public CheckRights unPublishVersions(
+    public CheckAndStoreFile unPublishVersions(
             Set<BinaryFile> filesToStore,
             DataRepository dataRepository,
             BinaryFileRepository binaryFileRepository,
             SynthesisService synthesisService) {
 
         if (builder().isRepository()) {
-            if (params() != null && !params().topublish()) {
+            if (fileOrUuid() != null && !fileOrUuid().topublish()) {
                 if (binaryFile().getParams() != null && binaryFile().getParams().published()) {
                     binaryFile().markAsPublished(false);
                     filesToStore.add(binaryFile());
-                    assert builder().hasRightForPublishOrUnPublish();
                     builder().unPublishVersions(filesToStore, dataRepository, binaryFileRepository, synthesisService);
                 }
-            } else if (params() != null && params().binaryfiledataset() != null) {
+            } else if (fileOrUuid() != null && fileOrUuid().binaryfiledataset() != null) {
                 BinaryFile publishedVersion = builder().getPublishedVersion(binaryFileRepository);
                 if (publishedVersion != null && publishedVersion.getParams().published()) {
                     filesToStore.add(publishedVersion);
-                    assert builder().hasRightForPublishOrUnPublish();
                     builder().unPublishVersions(filesToStore, dataRepository, binaryFileRepository, synthesisService);
                 }
             }
         }
-        return new CheckRights(builder());
+        return new CheckAndStoreFile(builder());
     }
 }
diff --git a/src/main/java/fr/inra/oresing/rest/exceptions/OreSiIOException.java b/src/main/java/fr/inra/oresing/rest/exceptions/OreSiIOException.java
new file mode 100644
index 0000000..23c25a0
--- /dev/null
+++ b/src/main/java/fr/inra/oresing/rest/exceptions/OreSiIOException.java
@@ -0,0 +1,14 @@
+package fr.inra.oresing.rest.exceptions;
+
+import fr.inra.oresing.OreSiException;
+import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
+
+public class OreSiIOException extends OreSiTechnicalException {
+    private static final String CANT_LOAD_FILE = "CANT_LOAD_FILE";
+    public static OreSiIOException ORE_SI_IOEXCEPTION_CANT_LOAD_FILE() {
+        return new OreSiIOException(CANT_LOAD_FILE);
+    }
+    public OreSiIOException(String message) {
+        super(message);
+    }
+}
diff --git a/src/main/java/fr/inra/oresing/rest/model/authorization/GetGrantableResult.java b/src/main/java/fr/inra/oresing/rest/model/authorization/GetGrantableResult.java
index ae159bb..1798c72 100644
--- a/src/main/java/fr/inra/oresing/rest/model/authorization/GetGrantableResult.java
+++ b/src/main/java/fr/inra/oresing/rest/model/authorization/GetGrantableResult.java
@@ -1,5 +1,6 @@
 package fr.inra.oresing.rest.model.authorization;
 
+import com.google.common.collect.ImmutableSortedSet;
 import fr.inra.oresing.domain.authorization.request.AuthorizationForScope;
 import fr.inra.oresing.domain.internationalization.Internationalization;
 import fr.inra.oresing.domain.data.AuthorizationColumnsDescription;
@@ -11,7 +12,7 @@ import java.util.stream.Collectors;
 
 
 public record GetGrantableResult(
-        com.google.common.collect.ImmutableSortedSet<ApplicationUserResult> users,
+        ImmutableSortedSet<ApplicationUserResult> users,
         Map<String, List<ReferenceScope>> referenceScopes,
         Map<String, SortedMap<String, ColumnDescription>> columnsDescription,
         AuthorizationsResult authorizationsForUser,
diff --git a/src/main/java/fr/inra/oresing/rest/model/data/DataRowResult.java b/src/main/java/fr/inra/oresing/rest/model/data/DataRowResult.java
index 5b19a4b..60f8b8d 100644
--- a/src/main/java/fr/inra/oresing/rest/model/data/DataRowResult.java
+++ b/src/main/java/fr/inra/oresing/rest/model/data/DataRowResult.java
@@ -5,6 +5,7 @@ import fr.inra.oresing.domain.checker.type.FieldType;
 import fr.inra.oresing.domain.checker.type.NullType;
 import fr.inra.oresing.domain.data.DataColumn;
 import fr.inra.oresing.domain.data.RefsLinkedToValue;
+import fr.inra.oresing.domain.repository.data.DataRepositoryForBuffer;
 import fr.inra.oresing.persistence.DataRow;
 import fr.inra.oresing.persistence.data.read.DataRepositoryWithBuffer;
 import org.apache.commons.collections.keyvalue.DefaultMapEntry;
@@ -30,7 +31,7 @@ public record DataRowResult(
     public static DataRowResult of(DataRow dataRow,
                                    ImmutableSet<String> variables,
                                    String locale,
-                                   DataRepositoryWithBuffer dataRepositoryWithBuffer) {
+                                   DataRepositoryForBuffer dataRepositoryWithBuffer) {
         final Map<String, Object> rows = new HashMap<>();
         for (final Map.Entry<String, FieldType> componentEntry : dataRow.values().entrySet()) {
             final String component = componentEntry.getKey();
diff --git a/src/test/java/fr/inra/oresing/rest/Fixtures.java b/src/test/java/fr/inra/oresing/rest/Fixtures.java
index 9e61175..14e24e1 100644
--- a/src/test/java/fr/inra/oresing/rest/Fixtures.java
+++ b/src/test/java/fr/inra/oresing/rest/Fixtures.java
@@ -345,8 +345,8 @@ public class Fixtures {
                    "fileid":"%1$s",
                    "binaryfiledataset":{
                       "requiredAuthorizations":{
-                         "projet":["projet_%2$s"],
-                         "sites":["%3$s.%4$s.%4$s__p1"]
+                         "projet":["projetKprojet_%2$s"],
+                         "sites":["type_de_sitesK%3$s.sitesK%4$s.sitesK%4$s__p1"]
                       },
                       "from":"1984-01-01 00:00:00",
                       "to":"1984-01-05 00:00:00"
diff --git a/src/test/java/fr/inra/oresing/rest/OreSiResourcesTest.java b/src/test/java/fr/inra/oresing/rest/OreSiResourcesTest.java
index 2926022..e7a9462 100644
--- a/src/test/java/fr/inra/oresing/rest/OreSiResourcesTest.java
+++ b/src/test/java/fr/inra/oresing/rest/OreSiResourcesTest.java
@@ -8,21 +8,22 @@ import fr.inra.oresing.TestDatabaseConfig;
 import fr.inra.oresing.ValidationLevel;
 import fr.inra.oresing.domain.OreSiUser;
 import fr.inra.oresing.domain.application.configuration.Ltree;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterException;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationDataWriterForDepositException;
+import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotApplicationCanDeleteRightsException;
 import fr.inra.oresing.domain.authorization.privilegeassessor.exception.NotOpenAdomAdministratorForSystemException;
 import fr.inra.oresing.domain.checker.InvalidDatasetContentException;
 import fr.inra.oresing.domain.data.deposit.validation.CsvRowValidationCheckResult;
 import fr.inra.oresing.domain.data.deposit.validation.ValidationCheckResult;
 import fr.inra.oresing.domain.exceptions.OreSiTechnicalException;
 import fr.inra.oresing.domain.exceptions.SiOreIllegalArgumentException;
-import fr.inra.oresing.domain.exceptions.authentication.authentication.NotApplicationCanDeleteRightsException;
 import fr.inra.oresing.domain.exceptions.authorization.AuthorizationRequestException;
 import fr.inra.oresing.domain.exceptions.authorization.SiOreAuthorizationRequestException;
-import fr.inra.oresing.domain.exceptions.data.data.DeleteOnrepositoryApplicationNotAllowedException;
+import fr.inra.oresing.domain.exceptions.configuration.BadApplicationConfigurationException;
 import fr.inra.oresing.domain.repository.authorization.OperationType;
 import fr.inra.oresing.persistence.AuthenticationService;
 import fr.inra.oresing.persistence.JsonRowMapper;
 import fr.inra.oresing.persistence.UserRepository;
-import fr.inra.oresing.domain.exceptions.configuration.BadApplicationConfigurationException;
 import fr.inra.oresing.rest.model.application.ApplicationResult;
 import fr.inra.oresing.rest.reactive.ReactiveTypeResult;
 import fr.inra.oresing.rest.services.RelationalService;
@@ -1478,7 +1479,7 @@ public class OreSiResourcesTest {
                                 System.out.println(Objects.requireNonNull(result.getResolvedException()).getMessage());
                             }
                         })
-                        .andExpect(jsonPath("$.message", Is.is(SiOreIllegalArgumentException.NO_RIGHT_ON_TABLE_FOR_DEPOSIT)))
+                        .andExpect(jsonPath("$.message", Is.is(NotApplicationDataWriterException.NO_RIGHT_FOR_USER_DATA_WRITER)))
                         .andReturn().getResponse().getContentAsString();
                 log.debug(response);
             } catch (ServletException servletException) {
@@ -1543,10 +1544,10 @@ public class OreSiResourcesTest {
                     .andExpect(status().is4xxClientError())
                     .andReturn().getResolvedException();
 
-            Assertions.assertInstanceOf(SiOreIllegalArgumentException.class, exception);
-            Assertions.assertEquals("noRightForPublish", exception.getMessage());
-            Assertions.assertEquals("pem", ((SiOreIllegalArgumentException) exception).getParams().get("dataName"));
-            Assertions.assertEquals("monsore", ((SiOreIllegalArgumentException) exception).getParams().get("application"));
+            Assertions.assertInstanceOf(NotApplicationDataWriterException.class, exception);
+            Assertions.assertEquals(NotApplicationDataWriterException.NO_RIGHT_FOR_USER_DATA_WRITER, exception.getMessage());
+            Assertions.assertEquals("pem", ((NotApplicationDataWriterException) exception).dataName);
+            Assertions.assertEquals("monsore", ((NotApplicationDataWriterException) exception).applicationName);
 
 
             // on donne les droits publication
@@ -1632,9 +1633,9 @@ public class OreSiResourcesTest {
         try {
             publishOrDepublish(withRigthsCookie, "manche", "plateforme", "nivelle", 34, true, 1, true);
 
-        } catch (final SiOreIllegalArgumentException e) {
-            Assertions.assertEquals(SiOreIllegalArgumentException.NO_RIGHT_ON_TABLE_FOR_DEPOSIT, e.getMessage());
-            Assertions.assertEquals("referencevalue", e.getParams().get("table"));
+        } catch (final NotApplicationDataWriterForDepositException e) {
+            Assertions.assertEquals(NotApplicationDataWriterForDepositException.NO_RIGHT_FOR_USER_DATA_WRITER_FOR_DEPOSIT, e.getMessage());
+            Assertions.assertEquals("pem", e.dataName);
         }
         getJsonRightsforRestrictions(withRigthsUserId, List.of(OperationType.publication.name()),
                 "pem", "type_de_sitesKplateforme.sitesKnivelle.sitesKnivelle__p1", "1984,1,1", "1984,1,6", authCookie);
@@ -1713,25 +1714,22 @@ public class OreSiResourcesTest {
         Assertions.assertEquals("NO_RIGHT_FOR_DELETE_RIGHTS_APPLICATION", resolvedException.getMessage());
         Assertions.assertEquals("pem", resolvedException.getDataType());
         Assertions.assertEquals("monsore", resolvedException.getApplicationName());
-        Exception resolvedException1 = mockMvc.perform(delete("/api/v1/applications/monsore/data/pem")
+        /*Exception resolvedException1 = mockMvc.perform(delete("/api/v1/applications/monsore/data/pem")
                         .cookie(authCookie))
                 .andExpect(status().is4xxClientError())
                 .andReturn()
                 .getResolvedException();
-        Assertions.assertInstanceOf(DeleteOnrepositoryApplicationNotAllowedException.class, resolvedException1);
+        Assertions.assertInstanceOf(NotApplicationCanDeleteRightsException.class, resolvedException1);*/
 
         //on donne les droits de suppression
-        String deleteRights = getJsonRightsforRestrictions(withRigthsUserId, List.of(OperationType.delete.name()),
+
+        getJsonRightsforRestrictions(withRigthsUserId, List.of(OperationType.delete.name()),
                 "pem", "type_de_sitesKplateforme.sitesKnivelle.sitesKnivelle__p1", "1984,1,1", "1984,1,6", authCookie);
 
         // on supprime le fichier a les droits car à les droits de publication
         mockMvc.perform(delete("/api/v1/applications/monsore/file/" + fileUUID2)
                         .cookie(withRigthsCookie))
-                .andExpect(status().is2xxSuccessful())
-                .andExpect(content().string(fileUUID2));
-        // on supprime le fichier additionnel
-        return;
-
+                .andExpect(status().is2xxSuccessful());
     }
 
     @Test
diff --git a/ui/cypress/fixtures/applications/errors/errors.json b/ui/cypress/fixtures/applications/errors/errors.json
index f16891f..0b6f8b4 100644
--- a/ui/cypress/fixtures/applications/errors/errors.json
+++ b/ui/cypress/fixtures/applications/errors/errors.json
@@ -1 +1 @@
-{"testUnknownReferenceNameForChecker":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name","referenceName":"tr_type_de_sites"}},"time":"2025-01-06T09:14:02.261883167","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInComputedComponents":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_tags","notExpectedDomainTags":["contextt"]}},"time":"2025-01-06T09:15:42.880492507","type":"REACTIVE_ERROR"}],"testUnknownReferenceNameForDynamicColumns":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_reference","referenceName":"type_de_site"}},"time":"2025-01-06T09:14:44.201088731","type":"REACTIVE_ERROR"}],"testmissingComponentNameForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_component"}},"time":"2025-01-06T09:13:49.28823719","type":"REACTIVE_ERROR"}],"testMissingOrBadTypeVersionApplication":[{"errortype":"ValidationError","result":{"message":"badVersionPattern","params":{"givenVersion":"deux","path":"OA_application"}},"time":"2025-01-06T09:13:51.486930922","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForComputation":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-06T09:13:40.014681033","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-06T09:13:40.015906516","type":"REACTIVE_ERROR"}],"testmissingRequiredValueInTimeScopeInSubmission":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_timeScope > OA_component"}},"time":"2025-01-06T09:15:21.315695932","type":"REACTIVE_ERROR"}],"testMissingNameApplication":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_application > OA_name"}},"time":"2025-01-06T09:15:53.359364155","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForDefaultValue":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-06T09:13:46.938967833","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-06T09:13:46.939665484","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"invalidComponentReferenceForSubmissionScopeReference","params":{"submissionReference":"projet","componentReference":"proj","path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 2"}},"time":"2025-01-06T09:16:19.728423195","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataI18ndisplay":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_i18nDisplayPattern > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:16:28.838466494","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:14:58.482865695","type":"REACTIVE_ERROR"}],"testUnexpectedSections":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["OA_application","OA_version","OA_data","OA_additionalFiles","OA_rightsRequest","OA_tags"],"path":"OA_version > OA_application > OA_data > OA_unexpectedTag > OA_rightsRequest > OA_tags","unexpectedSections":["OA_unexpectedTag"]}},"time":"2025-01-06T09:14:48.8332807","type":"REACTIVE_ERROR"}],"testBadEnumSectionTypeInSubmission":[{"errortype":"ValidationError","result":{"message":"badEnumSectionType","params":{"givenValue":"OA_VERSIONINGY","path":"OA_data > pem > OA_submission > OA_strategy","acceptedValues":["OA_INSERTION","OA_VERSIONING"]}},"time":"2025-01-06T09:13:57.991227207","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInRightsRequestDescription":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_rightsRequest > OA_i18n > OA_description > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:16:00.336800692","type":"REACTIVE_ERROR"}],"testUnknownNameAuthorizationScopeInFileNameSubmission":[{"errortype":"ValidationError","result":{"message":"unknownNameReferenceScope","params":{"path":"OA_submission > OA_fileName > OA_referenceScopes > site_bassine","knownAuthorizationScope":["site_bassin","projet"],"unknownAuthorizationScope":"site_bassine"}},"time":"2025-01-06T09:15:58.091838247","type":"REACTIVE_ERROR"}],"testMissingMandatorySectionsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_rowNumber"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-06T09:14:53.720957464","type":"REACTIVE_ERROR"}],"testInvalidMinMaxForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidMinMaxForCheckerDate","params":{"declaredPattern":"dd/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params","declaredMinValue":"12/31/1980","declaredMaxValue":"31/12/2024"}},"time":"2025-01-06T09:13:42.396017861","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"invalidMinMaxForCheckerDate","params":{"declaredPattern":"dd/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params","declaredMinValue":"31/12/1980","declaredMaxValue":"12/31/2024"}},"time":"2025-01-06T09:15:07.613574919","type":"REACTIVE_ERROR"}],"testBadNameApplication":[{"errortype":"ValidationError","result":{"message":"unsupportedNameApplication","params":{"path":"OA_application","nameApplication":"F4KE app!cat°"}},"time":"2025-01-06T09:14:41.966910128","type":"REACTIVE_ERROR"}],"testBadVersionApplication":[{"errortype":"ValidationError","result":{"message":"badVersionPattern","params":{"givenVersion":"-2","path":"OA_application"}},"time":"2025-01-06T09:14:23.976980644","type":"REACTIVE_ERROR"}],"testUnknownColumnNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-06T09:15:09.876981737","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-06T09:16:31.355765465","type":"REACTIVE_ERROR"}],"testBadBuilderVersion":[{"errortype":"ValidationError","result":{"message":"unsupportedOpenadomVersion","params":{"path":"OA_version","actualVersion":"2","expectedVersion":"2.0.1"}},"time":"2025-01-06T09:14:26.716822439","type":"REACTIVE_ERROR"}],"testMissingReferenceNameForChecker":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name","referenceName":"toto"}},"time":"2025-01-06T09:13:53.581630565","type":"REACTIVE_ERROR"}],"testBadNameTag":[{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > especes","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-06T09:14:46.542328534","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > type_de_sites","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-06T09:14:46.544352792","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > sites","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-06T09:14:46.544927019","type":"REACTIVE_ERROR"}],"testReturnMultiplesErrors":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > site > OA_basicComponents > zet_chemin_parent > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-06T09:16:12.450635573","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-06T09:16:12.451138638","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-06T09:16:12.451241732","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_checker > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-06T09:16:12.451470718","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-06T09:16:12.451526701","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-06T09:16:12.45176012","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-06T09:16:12.451792467","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_validations > reference > OA_validations > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-06T09:16:12.452194363","type":"REACTIVE_ERROR"}],"testEmptyFile":[{"errortype":"ValidationError","result":{"message":"emptyFile","params":{}},"time":"2025-01-06T09:14:39.692394459","type":"REACTIVE_ERROR"}],"testunknownComponentNameForAuthorization":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"proj","knownComponents":["site_bassin","site","tel_experimental_site","projet","espece","chemin"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 2 > OA_component"}},"time":"2025-01-06T09:14:35.081689411","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownNameReferenceScope","params":{"path":"OA_submission > OA_fileName > OA_referenceScopes > projet","knownAuthorizationScope":["site_bassin","proj"],"unknownAuthorizationScope":"projet"}},"time":"2025-01-06T09:14:35.081922401","type":"REACTIVE_ERROR"}],"testMissingNameChecker":[{"errortype":"ValidationError","result":{"message":"missingCheckerName","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom","acceptedCheckerNames":["OA_reference","OA_float","OA_date","OA_groovyExpression","OA_boolean","OA_integer","OA_string"]}},"time":"2025-01-06T09:15:05.135797431","type":"REACTIVE_ERROR"}],"testduplicatedComponentInPatternComponent":[{"errortype":"ValidationError","result":{"message":"duplicatedComponentHeaderInPatternComponent","params":{"duplicatedPathes":["OA_data > pem > OA_patternComponents > tel_value > OA_componentQualifiers > tel_date","OA_data > pem > OA_patternComponents > tel_value > OA_componentAdjacents > tel_date"],"path":"OA_data > pem > OA_patternComponents > tel_value > OA_componentAdjacents > tel_date","qualifierName":"tel_date","data":"pem","patternComponent":"tel_value"}},"time":"2025-01-06T09:15:26.326043477","type":"REACTIVE_ERROR"}],"testMissingComponentNameValidation":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-06T09:15:00.729000637","type":"REACTIVE_ERROR"}],"testInvalidPatternForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidPatternForCheckerDate","params":{"badPattern":"bb/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params > OA_pattern"}},"time":"2025-01-06T09:14:08.935081293","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInAuthorizationScopes":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:15:36.870193757","type":"REACTIVE_ERROR"}],"testunknownComponentInTimeScopeInSubmission":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"dates","knownComponents":["date"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_timeScope > OA_component"}},"time":"2025-01-06T09:14:18.631224944","type":"REACTIVE_ERROR"}],"testMissingPatternForCheckerDate":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params > OA_pattern"}},"time":"2025-01-06T09:14:04.447473945","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForDefaultValueInConstantComponents":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-06T09:15:39.473455","type":"REACTIVE_ERROR"}],"testSuperieurImportHeaderRowNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"badConstantImportHeaderRowNumber","params":{"givenRowNumber":8,"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_rowNumber","firstRowLine":7}},"time":"2025-01-06T09:14:21.432963692","type":"REACTIVE_ERROR"}],"testNegativeImportHeaderRowNumberInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderRowNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_rowNumber"}},"time":"2025-01-06T09:13:55.798464021","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInData":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > especes","notExpectedDomainTags":["contxet"]}},"time":"2025-01-06T09:16:24.082763063","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > type_de_sites","notExpectedDomainTags":["contxet"]}},"time":"2025-01-06T09:16:24.083745149","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > sites","notExpectedDomainTags":["contxet"]}},"time":"2025-01-06T09:16:24.084044042","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataDynamicComponents":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:16:07.61053218","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInTags":[{"errortype":"ValidationError","result":{"message":"unsuportedI18nKeyLanguage","params":{"path":"OA_tags > test"}},"time":"2025-01-06T09:14:13.397625735","type":"REACTIVE_ERROR"}],"testNegativeColumnNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-06T09:16:15.122299169","type":"REACTIVE_ERROR"}],"testUnExpectedReservedTagPatternForDomainTag":[{"errortype":"ValidationError","result":{"message":"illegalDomainTagPattern","params":{"reservedTagNames":["HiddenTag[tagDefinition=HIDDEN_TAG]"],"path":"OA_tags","expectedPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-06T09:15:51.052397521","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > especes","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.052603393","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > projet","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.053514979","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > type_de_sites","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.05374477","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > sites","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.054037291","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.054453652","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > pem","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:15:51.054575254","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataInConstantComponentsExportheaderI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_exportHeader > OA_description > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:15:30.608192797","type":"REACTIVE_ERROR"}],"testMissingRequiredSections":[{"errortype":"ValidationError","result":{"message":"missingVersionApplication","params":{"path":"","actualVersion":"2.0.1"}},"time":"2025-01-06T09:15:33.207781811","type":"REACTIVE_ERROR"}],"testMissingReferencesForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_reference"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_exportHeader > OA_component > OA_i18n"}},"time":"2025-01-06T09:14:32.449446426","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForChecker":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name"}},"time":"2025-01-06T09:14:11.168883959","type":"REACTIVE_ERROR"}],"testMissingAnyMandatorySectionsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"missingAnyMandatoriesSections","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_importHeaderTarget > OA_rowNumber","anyMandatorySections":["OA_columnName","OA_columnNumber"]}},"time":"2025-01-06T09:15:55.707200266","type":"REACTIVE_ERROR"}],"testMissingBuilderVersion":[{"errortype":"ValidationError","result":{"message":"missingVersionApplication","params":{"path":"OA_version","expectedVersion":"2.0.1"}},"time":"2025-01-06T09:15:28.445077899","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInAuthorizationScopesExportheader":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 1 > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:14:56.223343007","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataExportheaderI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_computedComponents > my_computed_column > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:13:44.614753864","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInApplication":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_application > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:15:16.575928072","type":"REACTIVE_ERROR"}],"testUnknownCheckerName":[{"errortype":"ValidationError","result":{"message":"unknownCheckerName","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom","checkerName":"reference","acceptedCheckerNames":["OA_reference","OA_float","OA_date","OA_groovyExpression","OA_boolean","OA_integer","OA_string"]}},"time":"2025-01-06T09:14:29.869565236","type":"REACTIVE_ERROR"}],"testUnknownReferenceColumnToLookForHeaderInDataDynamicComponents":[{"errortype":"ValidationError","result":{"message":"unknownReferenceColumnToLookForHeader","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_referenceComponentToLookForHeader","listColumnsNameReference":["tze_definition_en","tze_definition_fr","tze_nom_en","tze_nom_fr","tze_nom_key"],"columnNameReference":"nom_key","referenceName":"type_de_sites"}},"time":"2025-01-06T09:14:00.156155327","type":"REACTIVE_ERROR"}],"testBadNameTagInDynamicComponents":[{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-06T09:15:23.61577797","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_reference"}},"time":"2025-01-06T09:14:37.572440248","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInValidation":[{"errortype":"ValidationError","result":{"message":"duplicateKey","params":{"columnNumber":8,"lineNumber":248,"duplicateKeys":"sites"}},"time":"2025-01-06T09:14:51.081723662","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"duplicatedComponentHeader","params":{"duplicatedImportHeader":["zet_nom_key","zet_chemin_parent"],"path":"OA_data > sites","duplicatedHeader":"zet_chemin_parent","data":"sites"}},"time":"2025-01-06T09:15:45.564781178","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","luy","ccp","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","be","ru","rw","bg","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","dyo","to","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","agq","hr","gsw","kkj","hu","yi","hy","yo","ia","id","ig","vai","naq","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","fur","ln","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","pa","dua","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_validations > reference > OA_i18n > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-06T09:15:48.541778865","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"duplicatedComponentName","params":{"duplicatedPathes":["OA_data > pem > OA_constantComponents > tel_experimental_site","OA_data > pem > OA_patternComponents > tel_experimental_site"],"path":"OA_data > pem > OA_patternComponents > tel_experimental_site","componentName":"tel_experimental_site"}},"time":"2025-01-06T09:16:05.13040238","type":"REACTIVE_ERROR"}],"testMissingAnyMandatoriesSectionsForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_reference","OA_component"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_exportHeader > OA_i18n"}},"time":"2025-01-06T09:16:02.87860239","type":"REACTIVE_ERROR"}],"testInvalidNaturalKey":[{"errortype":"ValidationError","result":{"message":"invalidNaturalKey","params":{"path":"OA_data > especes","invalidNaturalKeyElements":["espNom"],"expectedComponentLabel":["colonne_homonyme_entre_referentiels","esp_definition_en","my_computed_column","esp_nom","esp_definition_fr"]}},"time":"2025-01-06T09:15:19.034831171","type":"REACTIVE_ERROR"}],"testInvalidDurationForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidDurationCheckerDate","params":{"declaredDuration":"1 Yearss","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params"}},"time":"2025-01-06T09:16:17.600108785","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForDynamicColumns":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_reference"}},"time":"2025-01-06T09:16:26.294263224","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInBasicComponent":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_basicComponents > projet > OA_tags","notExpectedDomainTags":["testz"]}},"time":"2025-01-06T09:15:14.381718926","type":"REACTIVE_ERROR"}],"testunknownComponentNameValidation":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"sites","knownComponents":["site_bassin","date","tel_experimental_site","site","bassin","projet","espece","ordre_affichage","chemin","tel_experimental_network","plateforme","is_float_value","tel_value"],"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-06T09:15:12.202127846","type":"REACTIVE_ERROR"}],"testNotExpectedTagsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_tags","notExpectedDomainTags":["testz"]}},"time":"2025-01-06T09:15:02.963171876","type":"REACTIVE_ERROR"}],"testMissingComponentNameInColumnsForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingComponentForComponentName","params":{"knownComponents":["site_bassin","date","tel_experimental_site","site","bassin","projet","espece","ordre_affichage","chemin","tel_experimental_network","plateforme","is_float_value","tel_value"],"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-06T09:16:21.847011692","type":"REACTIVE_ERROR"}],"testBadDomaineTagPattern":[{"errortype":"ValidationError","result":{"message":"badDomainTagPattern","params":{"path":"OA_tags","domainTagPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-06T09:16:10.0040929","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"illegalDomainTagPattern","params":{"reservedTagNames":["NoTag[tagDefinition=NO_TAG, tagName=no_tag]"],"path":"OA_tags","expectedPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-06T09:16:10.004370456","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > especes","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:16:10.004487148","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > especes > OA_basicComponents > esp_nom > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-06T09:16:10.004901521","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > projet","notExpectedDomainTags":["test","context"]}},"time":"2025-01-06T09:16:10.005257495","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > type_de_sites","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:16:10.00549363","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > sites","notExpectedDomainTags":["context"]}},"time":"2025-01-06T09:16:10.00577613","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","notExpectedDomainTags":["test","context"]}},"time":"2025-01-06T09:16:10.006407967","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem","notExpectedDomainTags":["test","context"]}},"time":"2025-01-06T09:16:10.006597877","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem > OA_basicComponents > projet > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-06T09:16:10.007043116","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-06T09:16:10.007923352","type":"REACTIVE_ERROR"}]}
\ No newline at end of file
+{"testUnknownReferenceNameForChecker":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name","referenceName":"tr_type_de_sites"}},"time":"2025-01-24T17:37:28.702163034","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInComputedComponents":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_tags","notExpectedDomainTags":["contextt"]}},"time":"2025-01-24T17:39:05.860372067","type":"REACTIVE_ERROR"}],"testUnknownReferenceNameForDynamicColumns":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_reference","referenceName":"type_de_site"}},"time":"2025-01-24T17:38:08.454892685","type":"REACTIVE_ERROR"}],"testmissingComponentNameForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_component"}},"time":"2025-01-24T17:37:15.32848605","type":"REACTIVE_ERROR"}],"testMissingOrBadTypeVersionApplication":[{"errortype":"ValidationError","result":{"message":"badVersionPattern","params":{"givenVersion":"deux","path":"OA_application"}},"time":"2025-01-24T17:37:17.54751352","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForComputation":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-24T17:37:05.744998333","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-24T17:37:05.746032832","type":"REACTIVE_ERROR"}],"testmissingRequiredValueInTimeScopeInSubmission":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_timeScope > OA_component"}},"time":"2025-01-24T17:38:44.669771013","type":"REACTIVE_ERROR"}],"testMissingNameApplication":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_application > OA_name"}},"time":"2025-01-24T17:39:18.790011654","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForDefaultValue":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-24T17:37:12.991994698","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-24T17:37:12.992621666","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"invalidComponentReferenceForSubmissionScopeReference","params":{"submissionReference":"projet","componentReference":"proj","path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 2"}},"time":"2025-01-24T17:39:51.516424094","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataI18ndisplay":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_i18nDisplayPattern > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:40:01.636497236","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:38:22.029359804","type":"REACTIVE_ERROR"}],"testUnexpectedSections":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["OA_application","OA_version","OA_data","OA_additionalFiles","OA_rightsRequest","OA_tags"],"path":"OA_version > OA_application > OA_data > OA_unexpectedTag > OA_rightsRequest > OA_tags","unexpectedSections":["OA_unexpectedTag"]}},"time":"2025-01-24T17:38:12.859469485","type":"REACTIVE_ERROR"}],"testBadEnumSectionTypeInSubmission":[{"errortype":"ValidationError","result":{"message":"badEnumSectionType","params":{"givenValue":"OA_VERSIONINGY","path":"OA_data > pem > OA_submission > OA_strategy","acceptedValues":["OA_INSERTION","OA_VERSIONING"]}},"time":"2025-01-24T17:37:24.161963506","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInRightsRequestDescription":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_rightsRequest > OA_i18n > OA_description > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:39:28.781925036","type":"REACTIVE_ERROR"}],"testUnknownNameAuthorizationScopeInFileNameSubmission":[{"errortype":"ValidationError","result":{"message":"unknownNameReferenceScope","params":{"path":"OA_submission > OA_fileName > OA_referenceScopes > site_bassine","unknownAuthorizationScope":"site_bassine","knownAuthorizationScope":["site_bassin","projet"]}},"time":"2025-01-24T17:39:25.081346451","type":"REACTIVE_ERROR"}],"testMissingMandatorySectionsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_rowNumber"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-24T17:38:17.182456851","type":"REACTIVE_ERROR"}],"testInvalidMinMaxForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidMinMaxForCheckerDate","params":{"declaredPattern":"dd/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params","declaredMinValue":"12/31/1980","declaredMaxValue":"31/12/2024"}},"time":"2025-01-24T17:37:08.059722906","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"invalidMinMaxForCheckerDate","params":{"declaredPattern":"dd/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params","declaredMinValue":"31/12/1980","declaredMaxValue":"12/31/2024"}},"time":"2025-01-24T17:38:31.492135817","type":"REACTIVE_ERROR"}],"testBadNameApplication":[{"errortype":"ValidationError","result":{"message":"unsupportedNameApplication","params":{"path":"OA_application","nameApplication":"F4KE app!cat°"}},"time":"2025-01-24T17:38:06.342625501","type":"REACTIVE_ERROR"}],"testBadVersionApplication":[{"errortype":"ValidationError","result":{"message":"badVersionPattern","params":{"givenVersion":"-2","path":"OA_application"}},"time":"2025-01-24T17:37:49.764952482","type":"REACTIVE_ERROR"}],"testUnknownColumnNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-24T17:38:33.606118512","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-24T17:40:04.011524172","type":"REACTIVE_ERROR"}],"testBadBuilderVersion":[{"errortype":"ValidationError","result":{"message":"unsupportedOpenadomVersion","params":{"path":"OA_version","actualVersion":"2","expectedVersion":"2.0.1"}},"time":"2025-01-24T17:37:51.948444866","type":"REACTIVE_ERROR"}],"testMissingReferenceNameForChecker":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name","referenceName":"toto"}},"time":"2025-01-24T17:37:19.835435388","type":"REACTIVE_ERROR"}],"testBadNameTag":[{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > especes","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-24T17:38:10.714136076","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > type_de_sites","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-24T17:38:10.715686622","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > sites","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-24T17:38:10.716031371","type":"REACTIVE_ERROR"}],"testReturnMultiplesErrors":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > site > OA_basicComponents > zet_chemin_parent > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-24T17:39:43.180077561","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-24T17:39:43.180437648","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_basicComponents > chemin > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-24T17:39:43.180523534","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_checker > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-24T17:39:43.180695065","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_computedComponents > site_bassin > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-24T17:39:43.180755789","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-24T17:39:43.181031274","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"sites"}},"time":"2025-01-24T17:39:43.181060662","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["site","especes","type_de_sites","projet","pem"],"path":"OA_data > pem > OA_validations > reference > OA_validations > OA_checker > OA_params > OA_reference > OA_name","referenceName":"sites"}},"time":"2025-01-24T17:39:43.181376875","type":"REACTIVE_ERROR"}],"testEmptyFile":[{"errortype":"ValidationError","result":{"message":"emptyFile","params":{}},"time":"2025-01-24T17:38:04.165888141","type":"REACTIVE_ERROR"}],"testunknownComponentNameForAuthorization":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"proj","knownComponents":["site_bassin","site","tel_experimental_site","projet","espece","chemin"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 2 > OA_component"}},"time":"2025-01-24T17:37:58.992562876","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unknownNameReferenceScope","params":{"path":"OA_submission > OA_fileName > OA_referenceScopes > projet","unknownAuthorizationScope":"projet","knownAuthorizationScope":["site_bassin","proj"]}},"time":"2025-01-24T17:37:58.992785443","type":"REACTIVE_ERROR"}],"testMissingNameChecker":[{"errortype":"ValidationError","result":{"message":"missingCheckerName","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom","acceptedCheckerNames":["OA_reference","OA_float","OA_date","OA_groovyExpression","OA_boolean","OA_integer","OA_string"]}},"time":"2025-01-24T17:38:29.162562195","type":"REACTIVE_ERROR"}],"testduplicatedComponentInPatternComponent":[{"errortype":"ValidationError","result":{"message":"duplicatedComponentHeaderInPatternComponent","params":{"duplicatedPathes":["OA_data > pem > OA_patternComponents > tel_value > OA_componentQualifiers > tel_date","OA_data > pem > OA_patternComponents > tel_value > OA_componentAdjacents > tel_date"],"path":"OA_data > pem > OA_patternComponents > tel_value > OA_componentAdjacents > tel_date","qualifierName":"tel_date","data":"pem","patternComponent":"tel_value"}},"time":"2025-01-24T17:38:49.002642876","type":"REACTIVE_ERROR"}],"testMissingComponentNameValidation":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-24T17:38:24.273685496","type":"REACTIVE_ERROR"}],"testInvalidPatternForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidPatternForCheckerDate","params":{"badPattern":"bb/MM/yyyy","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params > OA_pattern"}},"time":"2025-01-24T17:37:35.718466121","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInAuthorizationScopes":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:38:57.8438773","type":"REACTIVE_ERROR"}],"testunknownComponentInTimeScopeInSubmission":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"dates","knownComponents":["date"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_timeScope > OA_component"}},"time":"2025-01-24T17:37:45.172489408","type":"REACTIVE_ERROR"}],"testMissingPatternForCheckerDate":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params > OA_pattern"}},"time":"2025-01-24T17:37:30.902756258","type":"REACTIVE_ERROR"}],"testUnexpectedReferencesForDefaultValueInConstantComponents":[{"errortype":"ValidationError","result":{"message":"unknownReferenceName","params":{"allDataNames":["especes","type_de_sites","projet","pem","sites"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_defaultValue > OA_references","referenceName":"site"}},"time":"2025-01-24T17:39:01.369382802","type":"REACTIVE_ERROR"}],"testSuperieurImportHeaderRowNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"badConstantImportHeaderRowNumber","params":{"givenRowNumber":8,"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_rowNumber","firstRowLine":7}},"time":"2025-01-24T17:37:47.631654457","type":"REACTIVE_ERROR"}],"testNegativeImportHeaderRowNumberInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderRowNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_rowNumber"}},"time":"2025-01-24T17:37:21.979214229","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInData":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > especes","notExpectedDomainTags":["contxet"]}},"time":"2025-01-24T17:39:57.007609274","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > type_de_sites","notExpectedDomainTags":["contxet"]}},"time":"2025-01-24T17:39:57.008529372","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > sites","notExpectedDomainTags":["contxet"]}},"time":"2025-01-24T17:39:57.008834509","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataDynamicComponents":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:39:37.308899987","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInTags":[{"errortype":"ValidationError","result":{"message":"unsuportedI18nKeyLanguage","params":{"path":"OA_tags > test"}},"time":"2025-01-24T17:37:40.230953173","type":"REACTIVE_ERROR"}],"testNegativeColumnNumberToFirstRowLineInConstantComponents":[{"errortype":"ValidationError","result":{"message":"negativeConstantImportHeaderColumnNumber","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_importHeaderTarget > OA_columnNumber"}},"time":"2025-01-24T17:39:45.775459505","type":"REACTIVE_ERROR"}],"testUnExpectedReservedTagPatternForDomainTag":[{"errortype":"ValidationError","result":{"message":"illegalDomainTagPattern","params":{"reservedTagNames":["HiddenTag[tagDefinition=HIDDEN_TAG]"],"path":"OA_tags","expectedPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-24T17:39:15.456531441","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > especes","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.456843553","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > projet","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.458182103","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > type_de_sites","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.458870712","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > sites","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.460145474","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.46208478","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test"],"path":"OA_data > pem","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:15.462487433","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataInConstantComponentsExportheaderI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_exportHeader > OA_description > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:38:53.256486729","type":"REACTIVE_ERROR"}],"testMissingRequiredSections":[{"errortype":"ValidationError","result":{"message":"missingVersionApplication","params":{"path":"","actualVersion":"2.0.1"}},"time":"2025-01-24T17:38:55.492018498","type":"REACTIVE_ERROR"}],"testMissingReferencesForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_reference"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_exportHeader > OA_component > OA_i18n"}},"time":"2025-01-24T17:37:56.732929531","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForChecker":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom > OA_checker > OA_params > OA_reference > OA_name"}},"time":"2025-01-24T17:37:37.940372306","type":"REACTIVE_ERROR"}],"testMissingAnyMandatorySectionsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"missingAnyMandatoriesSections","params":{"path":"OA_data > pem > OA_constantComponents > tel_experimental_site > OA_importHeaderTarget > OA_rowNumber","anyMandatorySections":["OA_columnName","OA_columnNumber"]}},"time":"2025-01-24T17:39:21.629441491","type":"REACTIVE_ERROR"}],"testMissingBuilderVersion":[{"errortype":"ValidationError","result":{"message":"missingVersionApplication","params":{"path":"OA_version","expectedVersion":"2.0.1"}},"time":"2025-01-24T17:38:51.127358032","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInAuthorizationScopesExportheader":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 1 > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:38:19.645194776","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInDataExportheaderI18n":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > especes > OA_computedComponents > my_computed_column > OA_exportHeader > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:37:10.644029892","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInApplication":[{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_application > OA_i18n > OA_title > en > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:38:40.155189043","type":"REACTIVE_ERROR"}],"testUnknownCheckerName":[{"errortype":"ValidationError","result":{"message":"unknownCheckerName","params":{"path":"OA_data > sites > OA_basicComponents > tze_type_nom","checkerName":"reference","acceptedCheckerNames":["OA_reference","OA_float","OA_date","OA_groovyExpression","OA_boolean","OA_integer","OA_string"]}},"time":"2025-01-24T17:37:54.307249036","type":"REACTIVE_ERROR"}],"testUnknownReferenceColumnToLookForHeaderInDataDynamicComponents":[{"errortype":"ValidationError","result":{"message":"unknownReferenceColumnToLookForHeader","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_referenceComponentToLookForHeader","listColumnsNameReference":["tze_definition_en","tze_definition_fr","tze_nom_en","tze_nom_fr","tze_nom_key"],"columnNameReference":"nom_key","referenceName":"type_de_sites"}},"time":"2025-01-24T17:37:26.403976354","type":"REACTIVE_ERROR"}],"testBadNameTagInDynamicComponents":[{"errortype":"ValidationError","result":{"message":"badTagsPatterns","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","acceptedTagPatterns":["__HIDDEN__","__REFERENCE__","test","context","no-tag","__ORDER_(\\d*)__","__DATA__"]}},"time":"2025-01-24T17:38:46.891735061","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_reference"}},"time":"2025-01-24T17:38:01.689185428","type":"REACTIVE_ERROR"}],"testUnsuportedI18nKeyLanguageInValidation":[{"errortype":"ValidationError","result":{"message":"duplicateKey","params":{"columnNumber":8,"lineNumber":248,"duplicateKeys":"sites"}},"time":"2025-01-24T17:38:14.987497805","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"duplicatedComponentHeader","params":{"duplicatedImportHeader":["zet_nom_key","zet_chemin_parent"],"path":"OA_data > sites","duplicatedHeader":"zet_chemin_parent","data":"sites"}},"time":"2025-01-24T17:39:09.875948166","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"unexpectedSections","params":{"expectedSections":["sbp","ksh","nyn","ps","pt","luo","fil","mgh","ccp","luy","mgo","bas","raj","teo","qu","af","brx","ak","am","kde","ar","as","az","rm","rn","ro","ceb","ru","be","bg","rw","kea","bm","bn","bo","sa","twq","br","sc","bs","sd","xog","se","sg","si","seh","sk","sl","sn","so","sq","ca","sr","ses","mzn","ce","su","sv","sw","ta","asa","yav","cs","te","yrl","tg","cv","th","ti","cy","tk","to","dyo","da","tr","tt","de","cgg","ast","nmg","bem","ug","kgp","dz","uk","bez","ur","dje","haw","ee","uz","tzm","el","nnh","en","eo","chr","es","et","eu","vi","khq","shi","hsb","fa","bgc","ff","fi","rwk","yue","fo","fr","fy","jgo","lkt","wo","wae","zgh","ga","pcm","gd","gl","bho","mni","gu","gv","xh","ha","ckb","he","hi","gsw","hr","agq","kkj","hu","yi","hy","yo","ia","id","ig","naq","vai","ii","frr","is","it","kln","zh","ja","zu","doi","jv","guz","tok","mai","smn","ka","sms","mas","ki","kk","kl","km","kn","ko","ks","ku","kw","ky","lb","ebu","lg","nds","jmc","ln","fur","lo","kok","lt","lu","lv","nus","vun","lag","dav","mg","pis","lrc","mi","mk","ml","mn","mr","ms","mt","my","mdf","dsb","nb","nd","ne","mua","nl","nn","no","rof","kab","oc","kam","mer","sah","om","ann","saq","or","os","sat","mfe","dua","pa","ksb","pl","ewo","ksf"],"path":"OA_data > pem > OA_validations > reference > OA_i18n > frrr","unexpectedSections":["frrr"]}},"time":"2025-01-24T17:39:12.634941038","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"duplicatedComponentName","params":{"duplicatedPathes":["OA_data > pem > OA_constantComponents > tel_experimental_site","OA_data > pem > OA_patternComponents > tel_experimental_site"],"path":"OA_data > pem > OA_patternComponents > tel_experimental_site","componentName":"tel_experimental_site"}},"time":"2025-01-24T17:39:34.314921366","type":"REACTIVE_ERROR"}],"testMissingAnyMandatoriesSectionsForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingMandatoriesSections","params":{"missingMandatoriesSections":["OA_reference","OA_component"],"path":"OA_data > pem > OA_submission > OA_submissionScope > OA_referenceScopes > 0 > OA_exportHeader > OA_i18n"}},"time":"2025-01-24T17:39:31.733687866","type":"REACTIVE_ERROR"}],"testInvalidNaturalKey":[{"errortype":"ValidationError","result":{"message":"invalidNaturalKey","params":{"path":"OA_data > especes","invalidNaturalKeyElements":["espNom"],"expectedComponentLabel":["colonne_homonyme_entre_referentiels","esp_definition_en","my_computed_column","esp_nom","esp_definition_fr"]}},"time":"2025-01-24T17:38:42.346340784","type":"REACTIVE_ERROR"}],"testInvalidDurationForCheckerDate":[{"errortype":"ValidationError","result":{"message":"invalidDurationCheckerDate","params":{"declaredDuration":"1 Yearss","path":"OA_data > pem > OA_basicComponents > date > OA_checker > OA_params"}},"time":"2025-01-24T17:39:48.646323477","type":"REACTIVE_ERROR"}],"testMissingRequiredValueForDynamicColumns":[{"errortype":"ValidationError","result":{"message":"missingRequiredValue","params":{"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_reference"}},"time":"2025-01-24T17:39:59.337002375","type":"REACTIVE_ERROR"}],"testUnexpectedNameTagInBasicComponent":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_basicComponents > projet > OA_tags","notExpectedDomainTags":["testz"]}},"time":"2025-01-24T17:38:37.986231043","type":"REACTIVE_ERROR"}],"testunknownComponentNameValidation":[{"errortype":"ValidationError","result":{"message":"unknownComponentForComponentName","params":{"unknownComponent":"sites","knownComponents":["site_bassin","date","tel_experimental_site","site","bassin","projet","espece","ordre_affichage","chemin","tel_experimental_network","plateforme","is_float_value","tel_value"],"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-24T17:38:35.722885901","type":"REACTIVE_ERROR"}],"testNotExpectedTagsInConstantComponents":[{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":["test","context"],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_tags","notExpectedDomainTags":["testz"]}},"time":"2025-01-24T17:38:26.769197066","type":"REACTIVE_ERROR"}],"testMissingComponentNameInColumnsForAuthorization":[{"errortype":"ValidationError","result":{"message":"missingComponentForComponentName","params":{"knownComponents":["site_bassin","date","tel_experimental_site","site","bassin","projet","espece","ordre_affichage","chemin","tel_experimental_network","plateforme","is_float_value","tel_value"],"path":"OA_data > pem > OA_validations > reference > OA_components"}},"time":"2025-01-24T17:39:54.463304666","type":"REACTIVE_ERROR"}],"testBadDomaineTagPattern":[{"errortype":"ValidationError","result":{"message":"badDomainTagPattern","params":{"path":"OA_tags","domainTagPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-24T17:39:40.350177911","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"illegalDomainTagPattern","params":{"reservedTagNames":["NoTag[tagDefinition=NO_TAG, tagName=no_tag]"],"path":"OA_tags","expectedPattern":"^[a-z][a-z_0-9]*[a-z0-9]$"}},"time":"2025-01-24T17:39:40.350525524","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > especes","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:40.350675715","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > especes > OA_basicComponents > esp_nom > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-24T17:39:40.351301788","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > projet","notExpectedDomainTags":["test","context"]}},"time":"2025-01-24T17:39:40.351726685","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > type_de_sites","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:40.352136716","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > sites","notExpectedDomainTags":["context"]}},"time":"2025-01-24T17:39:40.352452213","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > sites > OA_dynamicComponents > proprieteDeTaxon > OA_tags","notExpectedDomainTags":["test","context"]}},"time":"2025-01-24T17:39:40.353156439","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem","notExpectedDomainTags":["test","context"]}},"time":"2025-01-24T17:39:40.353320537","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem > OA_basicComponents > projet > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-24T17:39:40.353668012","type":"REACTIVE_ERROR"},{"errortype":"ValidationError","result":{"message":"notExpectedDomainTags","params":{"expectedDomainTags":[],"path":"OA_data > pem > OA_constantComponents > tel_experimental_network > OA_tags","notExpectedDomainTags":["test"]}},"time":"2025-01-24T17:39:40.354345239","type":"REACTIVE_ERROR"}]}
\ No newline at end of file
diff --git a/ui/cypress/fixtures/applications/ore/monsore/changeMonsore.txt b/ui/cypress/fixtures/applications/ore/monsore/changeMonsore.txt
index 98c28ba..d461fe9 100644
--- a/ui/cypress/fixtures/applications/ore/monsore/changeMonsore.txt
+++ b/ui/cypress/fixtures/applications/ore/monsore/changeMonsore.txt
@@ -1,17 +1,17 @@
-{"result":0.0,"time":[2025,1,16,16,39,20,165904848],"type":"REACTIVE_PROGRESS"}
-{"result":"application.ChangeConfiguration.configuration.rights.checking","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,167825436],"type":"REACTIVE_INFO"}
-{"result":0.02,"time":[2025,1,16,16,39,20,167886535],"type":"REACTIVE_PROGRESS"}
-{"result":"application.ChangeConfiguration.configuration.parsingConfiguration.forSingle","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,167944891],"type":"REACTIVE_INFO"}
-{"result":"application.ChangeConfiguration.configuration.testYamlIsvalid","params":null,"time":[2025,1,16,16,39,20,168026249],"type":"REACTIVE_INFO"}
-{"result":"application.ChangeConfiguration.configuration.yamlIsvalid","params":null,"time":[2025,1,16,16,39,20,169866589],"type":"REACTIVE_INFO"}
-{"result":"application.ChangeConfiguration.configuration.versionIsValid","params":null,"time":[2025,1,16,16,39,20,169935373],"type":"REACTIVE_INFO"}
-{"result":0.03,"time":[2025,1,16,16,39,20,169949912],"type":"REACTIVE_PROGRESS"}
-{"result":"application.ChangeConfiguration.configuration.Starting parsing of configuration","params":{},"time":[2025,1,16,16,39,20,268058097],"type":"REACTIVE_INFO"}
-{"result":0.0,"time":[2025,1,16,16,39,20,268125437],"type":"REACTIVE_PROGRESS"}
-{"result":0.0,"time":[2025,1,16,16,39,20,268141567],"type":"REACTIVE_PROGRESS"}
-{"result":"application.ChangeConfiguration.configuration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,290502408],"type":"REACTIVE_INFO"}
-{"result":"application.configuration.create.register.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,290563407],"type":"REACTIVE_INFO"}
-{"result":"application.ChangeConfiguration.configuration.parsingConfiguration.endparsing","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,290585311],"type":"REACTIVE_INFO"}
-{"result":"application.register","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,20,335411864],"type":"REACTIVE_INFO"}
-{"result":"0f2d5d4b-0425-49a0-8a22-6ad1a29b0425","time":[2025,1,16,16,39,20,347824825],"type":"REACTIVE_RESULT"}
-{"result":1.0,"time":[2025,1,16,16,39,20,347930012],"type":"REACTIVE_PROGRESS"}
+{"result":0.0,"time":[2025,1,27,14,35,21,318697431],"type":"REACTIVE_PROGRESS"}
+{"result":"application.ChangeConfiguration.configuration.rights.checking","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,320733650],"type":"REACTIVE_INFO"}
+{"result":0.02,"time":[2025,1,27,14,35,21,320793310],"type":"REACTIVE_PROGRESS"}
+{"result":"application.ChangeConfiguration.configuration.parsingConfiguration.forSingle","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,320844150],"type":"REACTIVE_INFO"}
+{"result":"application.ChangeConfiguration.configuration.testYamlIsvalid","params":null,"time":[2025,1,27,14,35,21,320870175],"type":"REACTIVE_INFO"}
+{"result":"application.ChangeConfiguration.configuration.yamlIsvalid","params":null,"time":[2025,1,27,14,35,21,322106561],"type":"REACTIVE_INFO"}
+{"result":"application.ChangeConfiguration.configuration.versionIsValid","params":null,"time":[2025,1,27,14,35,21,322143014],"type":"REACTIVE_INFO"}
+{"result":0.03,"time":[2025,1,27,14,35,21,322173348],"type":"REACTIVE_PROGRESS"}
+{"result":"application.ChangeConfiguration.configuration.Starting parsing of configuration","params":{},"time":[2025,1,27,14,35,21,425169416],"type":"REACTIVE_INFO"}
+{"result":0.0,"time":[2025,1,27,14,35,21,425245308],"type":"REACTIVE_PROGRESS"}
+{"result":0.0,"time":[2025,1,27,14,35,21,425264322],"type":"REACTIVE_PROGRESS"}
+{"result":"application.ChangeConfiguration.configuration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,450253761],"type":"REACTIVE_INFO"}
+{"result":"application.configuration.create.register.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,450321163],"type":"REACTIVE_INFO"}
+{"result":"application.ChangeConfiguration.configuration.parsingConfiguration.endparsing","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,450347926],"type":"REACTIVE_INFO"}
+{"result":"application.register","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,489379780],"type":"REACTIVE_INFO"}
+{"result":"acb7a301-204b-41d8-9698-f778a4d78c70","time":[2025,1,27,14,35,21,503369889],"type":"REACTIVE_RESULT"}
+{"result":1.0,"time":[2025,1,27,14,35,21,503464537],"type":"REACTIVE_PROGRESS"}
diff --git a/ui/cypress/fixtures/applications/ore/monsore/createMonsore.txt b/ui/cypress/fixtures/applications/ore/monsore/createMonsore.txt
index d13012f..d120844 100644
--- a/ui/cypress/fixtures/applications/ore/monsore/createMonsore.txt
+++ b/ui/cypress/fixtures/applications/ore/monsore/createMonsore.txt
@@ -1,21 +1,21 @@
-{"result":0.0,"time":[2025,1,16,16,39,19,414636223],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.configuration.rights.checking","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,417340150],"type":"REACTIVE_INFO"}
-{"result":0.02,"time":[2025,1,16,16,39,19,417580124],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.configuration.parsingConfiguration.forSingle","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,417738521],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.configuration.testYamlIsvalid","params":null,"time":[2025,1,16,16,39,19,417797997],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.configuration.yamlIsvalid","params":null,"time":[2025,1,16,16,39,19,422199516],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.configuration.versionIsValid","params":null,"time":[2025,1,16,16,39,19,422279508],"type":"REACTIVE_INFO"}
-{"result":0.03,"time":[2025,1,16,16,39,19,422293798],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.configuration.Starting parsing of configuration","params":{},"time":[2025,1,16,16,39,19,539989215],"type":"REACTIVE_INFO"}
-{"result":0.0,"time":[2025,1,16,16,39,19,540057591],"type":"REACTIVE_PROGRESS"}
-{"result":0.0,"time":[2025,1,16,16,39,19,540087563],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.configuration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,571822186],"type":"REACTIVE_INFO"}
-{"result":"application.configuration.create.register.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,571928459],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.configuration.parsingConfiguration.endparsing","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,572446151],"type":"REACTIVE_INFO"}
-{"result":"application.register","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,905155824],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.viewCreation.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,905269164],"type":"REACTIVE_INFO"}
-{"result":0.5,"time":[2025,1,16,16,39,19,905572537],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.viewCreation.end","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,905627391],"type":"REACTIVE_INFO"}
-{"result":"0f2d5d4b-0425-49a0-8a22-6ad1a29b0425","time":[2025,1,16,16,39,19,905645413],"type":"REACTIVE_RESULT"}
-{"result":1.0,"time":[2025,1,16,16,39,19,905773189],"type":"REACTIVE_PROGRESS"}
-{"result":1.0,"time":[2025,1,16,16,39,19,905813899],"type":"REACTIVE_PROGRESS"}
+{"result":0.0,"time":[2025,1,27,14,35,20,579272115],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.configuration.rights.checking","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,581661919],"type":"REACTIVE_INFO"}
+{"result":0.02,"time":[2025,1,27,14,35,20,581909348],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.configuration.parsingConfiguration.forSingle","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,582017261],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.configuration.testYamlIsvalid","params":null,"time":[2025,1,27,14,35,20,582082163],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.configuration.yamlIsvalid","params":null,"time":[2025,1,27,14,35,20,584378355],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.configuration.versionIsValid","params":null,"time":[2025,1,27,14,35,20,584424688],"type":"REACTIVE_INFO"}
+{"result":0.03,"time":[2025,1,27,14,35,20,584454014],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.configuration.Starting parsing of configuration","params":{},"time":[2025,1,27,14,35,20,709881076],"type":"REACTIVE_INFO"}
+{"result":0.0,"time":[2025,1,27,14,35,20,709977778],"type":"REACTIVE_PROGRESS"}
+{"result":0.0,"time":[2025,1,27,14,35,20,709998360],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.configuration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,759528855],"type":"REACTIVE_INFO"}
+{"result":"application.configuration.create.register.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,759618013],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.configuration.parsingConfiguration.endparsing","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,760071420],"type":"REACTIVE_INFO"}
+{"result":"application.register","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,71353506],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.viewCreation.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,71442241],"type":"REACTIVE_INFO"}
+{"result":0.5,"time":[2025,1,27,14,35,21,71872955],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.viewCreation.end","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,21,71955208],"type":"REACTIVE_INFO"}
+{"result":"acb7a301-204b-41d8-9698-f778a4d78c70","time":[2025,1,27,14,35,21,71990669],"type":"REACTIVE_RESULT"}
+{"result":1.0,"time":[2025,1,27,14,35,21,72226249],"type":"REACTIVE_PROGRESS"}
+{"result":1.0,"time":[2025,1,27,14,35,21,72288725],"type":"REACTIVE_PROGRESS"}
diff --git a/ui/cypress/fixtures/applications/ore/monsore/validateMonsore.txt b/ui/cypress/fixtures/applications/ore/monsore/validateMonsore.txt
index 17b10fd..2bee573 100644
--- a/ui/cypress/fixtures/applications/ore/monsore/validateMonsore.txt
+++ b/ui/cypress/fixtures/applications/ore/monsore/validateMonsore.txt
@@ -1,10 +1,10 @@
-{"result":"application.createConfiguration.testYamlIsvalid","params":null,"time":[2025,1,16,16,39,18,900168044],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.yamlIsvalid","params":null,"time":[2025,1,16,16,39,18,906603802],"type":"REACTIVE_INFO"}
-{"result":"application.createConfiguration.versionIsValid","params":null,"time":[2025,1,16,16,39,18,907036888],"type":"REACTIVE_INFO"}
-{"result":0.01,"time":[2025,1,16,16,39,18,907460341],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.Starting parsing of configuration","params":{},"time":[2025,1,16,16,39,19,228021189],"type":"REACTIVE_INFO"}
-{"result":0.0,"time":[2025,1,16,16,39,19,228522853],"type":"REACTIVE_PROGRESS"}
-{"result":0.0,"time":[2025,1,16,16,39,19,228545993],"type":"REACTIVE_PROGRESS"}
-{"result":"application.createConfiguration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,16,16,39,19,273517981],"type":"REACTIVE_INFO"}
-{"result":{"id":"79984f88-2b9d-4ace-85f4-927d4d9bbffb","creationDate":null,"updateDate":null,"lastChartes":5336473980199903000,"name":"monsore","version":null,"data":["themes","especes","variables","type_de_sites","site_theme_datatype","unites","projet","valeurs_qualitatives","type_de_fichiers","variables_et_unites_par_types_de_donnees","pem","sites"],"additionalFiles":["fichiers","utilisateurs"],"configuration":{"version":{"version":"2.0.1","runTimeVersion":{}},"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"},{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"unit"},{"tagDefinition":"DOMAIN_TAG","tagName":"temporal"}],"i18n":{"tags":{"unit":{"en":"Unit","fr":"Unité"},"data":{"en":"Data","fr":"Donnée"},"test":{"en":"Test","fr":"Test"},"context":{"en":"Context","fr":"Contexte"},"temporal":{"en":"Temporality","fr":"Temporalité"}},"application":{"title":{"en":"SOERE my SOERE","fr":"SOERE mon SOERE"},"description":{"en":"SOERE my SOERE","fr":"SOERE mon SOERE"}},"data":{"themes":{"validations":{},"exceptions":{},"components":{"description_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du thème"}}},"description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Thematic definition"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Site name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"Le nom du thème"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{description_en}","fr":"{description_fr}"}},"i18n":{"title":{"en":"Thematic","fr":"Thème"},"description":{"en":"Thematic list","fr":"Liste des thèmes"}}},"variables":{"validations":{},"exceptions":{},"components":{"definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Variable definition"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Variable name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"Le nom de la variable"}}},"definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La définition de la variable"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{definition_en}","fr":"{definition_fr}"}},"i18n":{"title":{"en":"Variables","fr":"Variables"},"description":{"en":"Variables list","fr":"Liste des variables"}}},"especes":{"validations":{},"exceptions":{},"components":{"my_computed_column":{"exportHeader":{"title":{"en":"computed column","fr":"colonne calculée"},"description":{"en":"a calculated column returning 'my value'","fr":"une colonne calculée retournant 'my value'"}}},"esp_definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"species definition"}}},"esp_definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"définition de l'espèce"}}},"esp_nom":{"exportHeader":{"title":{"en":"code","fr":"code"},"description":{"en":"code name of the species","fr":"nom codique de l'espèce"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{esp_nom}","fr":"{esp_nom}"},"description":{"en":"{esp_definition_en}","fr":"{esp_definition_fr}"}},"i18n":{"title":{"en":"Species","fr":"Espèces"},"description":{"en":"Description of species fished in the watershed","fr":"Description des espèces pêchées sur le bassin versant"}}},"site_theme_datatype":{"validations":{"checkDatatype":{"fr":"test"},"projetRef":{"fr":"référence au projet"},"sitesRef":{"fr":"référence au site"},"themesRef":{"fr":"référence au theme"}},"exceptions":{},"components":{},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"projet name: {projet}, site name : {site}, theme name : {theme}, data type name : {datatype}","fr":"nom du projet: {projet}, nom du site : {site}, nom du thème : {theme}, nom du type de données : {datatype}"},"description":{"en":"Join on projet name: {projet}, site name : {site}, theme name : {theme}, data type name : {datatype}","fr":"Jointure nom du projet: {projet}, nom du site : {site}, nom du thème : {theme}, nom du type de données : {datatype}"}},"i18n":{"title":{"en":"Data types by site and project","fr":"Types de données par site et projet"},"description":{"en":"Join table of theme sites and datatypes","fr":"Table de jointure des sites theme et datatypes"}}},"type_de_sites":{"validations":{},"exceptions":{},"components":{"tze_nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"La nom du type de sites"}}},"tze_nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Site type name"}}},"tze_definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Site type definition"}}},"tze_definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du type de site"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{tze_nom_en}","fr":"{tze_nom_fr}"},"description":{"en":"{tze_definition_en}","fr":"{tze_definition_fr}"}},"i18n":{"title":{"en":"Sites types","fr":"Types de sites"},"description":{"en":"Sites types list","fr":"Liste des types de sites"}}},"unites":{"validations":{},"exceptions":{},"components":{"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Unit name"}}},"code_en":{"exportHeader":{"title":{"en":"code"},"description":{"en":"Unit code"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"La nom de l'unité"}}},"code_fr":{"exportHeader":{"title":{"fr":"code"},"description":{"fr":"Le code du unité"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en} ({code_key})","fr":"{nom_fr} ({code_key})"},"description":{}},"i18n":{"title":{"en":"Units","fr":"Unités"},"description":{"en":"Units list","fr":"Liste des unités"}}},"projet":{"validations":{},"exceptions":{},"components":{"definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"project definition"}}},"nom_en":{"exportHeader":{"title":{"en":"Name"},"description":{"en":"Project name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"Nom"},"description":{"fr":"Nom du projet"}}},"definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"définition du projet"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{definition_en}","fr":"{definition_fr}"}},"i18n":{"title":{"en":"Project","fr":"Projet"},"description":{"en":"List of information system projects","fr":"Liste des projets du système d'information"}}},"valeurs_qualitatives":{"validations":{},"exceptions":{},"components":{"valeur_fr":{"exportHeader":{"title":{"fr":"valeur"},"description":{"fr":"La valeur dans la liste"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"The name list"}}},"valeur_en":{"exportHeader":{"title":{"en":"value"},"description":{"en":"The value in list"}}},"nom_fr":{"exportHeader":{"title":{"fr":"Nom"},"description":{"fr":"Le nom de la liste"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{valeur_en}","fr":"{valeur_fr}"},"description":{"en":"{valeur_en} of {nom_en}","fr":"{valeur_fr} de {nom_fr}"}},"i18n":{"title":{"en":"Qualitative values","fr":"Valeurs qualitatives"},"description":{"en":"List of qualitative values list","fr":"Liste de liste de valeurs qualitatives"}}},"variables_et_unites_par_types_de_donnees":{"validations":{"checkDatatype":{"fr":"test"},"uniteRef":{"fr":"référence à l'unité'"},"variableRef":{"fr":"référence à la variable"}},"exceptions":{},"components":{},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"datatype name : {datatype}, variable name : {variable}, : unit name {unite}","fr":"nom du type de données : {datatype}, nom de la variable : {variable}, : nom de l'unité {unite}"},"description":{"en":"Join ondatatype name : {datatype}, variable name : {variable}, : unit name {unite}","fr":"Jointure des nom du type de données : {datatype}, nom de la variable : {variable}, : nom de l'unité {unite}"}},"i18n":{"title":{"en":"Variables and units by data type","fr":"Variables et unités par type de données"},"description":{"en":"Variables and units by data type join list","fr":"Liste de jointure des variables et unités par type de données"}}},"type_de_fichiers":{"validations":{},"exceptions":{},"components":{"description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Thematic definition"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{description_en}","fr":"{description_fr}"}},"i18n":{"title":{"en":"Files types","fr":"Types de fichiers"},"description":{"en":"The files types","fr":"Les types de fichiers"}}},"pem":{"validations":{"unitOfIndividus":{"fr":"vérifie l'unité du nombre d'individus"},"unitOfColor":{"fr":"vérifie l'unité de la couleur des individus"}},"exceptions":{},"components":{"chemin":{"exportHeader":{"title":{"en":"Path","fr":"Chemin"},"description":{"en":"Data calculating the full path of the site","fr":"Données calculant le chemin complet du site"}}},"color_value":{"exportHeader":{"title":{"en":"United colors","fr":"Couleur des individus"},"description":{}}},"individusNumbervalue":{"exportHeader":{"title":{"en":"Number of individuals","fr":"Nombre d'individus"},"description":{}}}},"submissions":{"referenceScopes":{"projet":{"title":{"en":"project","fr":"projet"},"description":{"en":"Choose the project","fr":"Choisissez le projet"}},"sites":{"title":{"en":"site","fr":"site"},"description":{"en":"The site","fr":"Le site"}}}},"i18nDisplayPattern":null,"i18n":{"title":{"en":"Trap in ascent","fr":"Piégeage en Montée"},"description":{"en":"Upstream trapping fishing data","fr":"Données de pêche par piégeage en Montée"}}},"sites":{"validations":{},"exceptions":{},"components":{"zet_description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"site definition"}}},"zet_nom_fr":{"exportHeader":{"title":{"fr":"Nom du site"},"description":{"fr":"Le nom du site"}}},"zet_nom_en":{"exportHeader":{"title":{"en":"Site name"},"description":{"en":"The site name"}}},"zet_description_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du site"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{zet_chemin_parent} - {zet_nom_fr}","fr":"{zet_chemin_parent} - {zet_nom_fr} "},"description":{"en":"{zet_description_en}","fr":"{zet_description_fr}"}},"i18n":{"title":{"en":"Site","fr":"Site"},"description":{"en":"Sites list","fr":"Liste des sites du système d'information"}}}},"rightsrequest":{"fields":{"endDate":{"title":{"en":"Give the project end date","fr":"Date de fin du projet"},"description":{"en":"Project end date","fr":"Donnez la date de fin du projet"}},"organization":{"title":{"en":"Name of research organization","fr":"Nom de l'organisme de recherche"},"description":{"en":"Usual ame of research organization","fr":"Nom usuel de l'organisme de recherche"}},"project":{"title":{"en":"Description of the research project","fr":"Description du projet de recherche"},"description":{"en":"Describe your the research project","fr":"Donnez une description du projet de recherche"}},"startDate":{"title":{"en":"Project start date","fr":"Date de début du projet"},"description":{"en":"Give the project start date","fr":"Donnez la date de début du projet"}}},"i18n":{"title":{"en":"You can request rights to the monsore application by filling out this form","fr":"Vous pouvez demander des droits à l'application monsore en remplissant ce formulaire"},"description":{"en":"Monsoere Data Access Right Request Form","fr":"Formulaire de demande de droit d'accès aux données de Monsoere"}}},"additionalFiles":{"utilisateurs":{"i18n":{"title":{"en":"Users","fr":"Utilsateurs"},"description":{"en":"System User Description Files","fr":"Fichiers de dexcription des utilisateurs du système"}},"fields":{"prenom":{"title":{"en":"Surname","fr":"Prénom"},"description":{"en":"User surname","fr":"Prénom de l'utilisateur"}},"nom":{"title":{"en":"Name","fr":"Nom"},"description":{"en":"User name","fr":"Nom de l'utilisateur"}}}},"fichiers":{"i18n":{"title":{"en":"Files","fr":"Fichiers"},"description":{"en":"Various files relating to the Information System","fr":"Différents fichiers afférents au Système d'Information"}},"fields":{"date":{"title":{"en":"Date","fr":"Date"},"description":{"en":"The date the file was updated","fr":"La date de mise à jour du fichier"}},"site":{"title":{"en":"Place","fr":"Site"},"description":{"en":"Site described by the file","fr":"Site décrit par le fichier"}},"poids":{"title":{"en":"Weight","fr":"Poids"},"description":{"en":"File size in kb","fr":"Poids du fichier en ko"}},"nom":{"title":{"en":"Name","fr":"Nom"},"description":{"en":"The name of the file for download","fr":"Le nom du fichier pour téléchargement"}},"age":{"title":{"en":"Age","fr":"Age"},"description":{"en":"Minimum age for file access","fr":"Age minumum d'accès au fichier"}}}}}},"applicationDescription":{"name":"monsore","version":{"version":"3.0.1","runTimeVersion":{}},"defaultLanguage":"fr","comment":"Fichier de test de l'application brokenADOM version initiale"},"dataDescription":{"themes":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"description_fr":{"type":"BasicComponent","componentKey":"description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_fr","exportHeaderName":"description_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"description_en":{"type":"BasicComponent","componentKey":"description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_en","exportHeaderName":"description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"especes":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["esp_nom"],"componentDescriptions":{"colonne_homonyme_entre_referentiels":{"type":"BasicComponent","componentKey":"colonne_homonyme_entre_referentiels","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"colonne_homonyme_entre_referentiels","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"esp_definition_en":{"type":"BasicComponent","componentKey":"esp_definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"esp_definition_en","exportHeaderName":"esp_definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"my_computed_column":{"type":"ComputedComponent","componentKey":"my_computed_column","tags":[{"tagDefinition":"HIDDEN_TAG"}],"exportHeaderName":"my_computed_column","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return \"my value\";\n","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"hidden":true,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"esp_nom":{"type":"BasicComponent","componentKey":"esp_nom","defaultValue":null,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"test"}],"importHeader":"esp_nom","exportHeaderName":"esp_nom","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"esp_definition_fr":{"type":"BasicComponent","componentKey":"esp_definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"esp_definition_fr","exportHeaderName":"esp_definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"variables":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"definition_en":{"type":"BasicComponent","componentKey":"definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_en","exportHeaderName":"definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"is_qualitative":{"type":"BasicComponent","componentKey":"is_qualitative","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"isQualitative","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"definition_fr":{"type":"BasicComponent","componentKey":"definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_fr","exportHeaderName":"definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"type_de_sites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["tze_nom_key"],"componentDescriptions":{"tze_nom_key":{"type":"BasicComponent","componentKey":"tze_nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"tze_nom_fr":{"type":"BasicComponent","componentKey":"tze_nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_fr","exportHeaderName":"tze_nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"tze_definition_fr":{"type":"BasicComponent","componentKey":"tze_definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_definition_fr","exportHeaderName":"tze_definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"tze_nom_en":{"type":"BasicComponent","componentKey":"tze_nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_en","exportHeaderName":"tze_nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"tze_definition_en":{"type":"BasicComponent","componentKey":"tze_definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_definition_en","exportHeaderName":"tze_definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"site_theme_datatype":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["projet","site","theme","datatype"],"componentDescriptions":{"site":{"type":"BasicComponent","componentKey":"site","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du site","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"theme":{"type":"BasicComponent","componentKey":"theme","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du thème","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"projet":{"type":"BasicComponent","componentKey":"projet","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du projet","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"datatype":{"type":"BasicComponent","componentKey":"datatype","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du type de données","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{"projetRef":{"checkers":{"projet":{"type":"ReferenceChecker","componentKey":"projet","multiplicity":"ONE","required":false,"refType":"projet","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["projet"],"required":false,"mandatory":"OPTIONAL"},"sitesRef":{"checkers":{"site":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["site"],"required":false,"mandatory":"OPTIONAL"},"themesRef":{"checkers":{"theme":{"type":"ReferenceChecker","componentKey":"theme","multiplicity":"ONE","required":false,"refType":"themes","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["theme"],"required":false,"mandatory":"OPTIONAL"},"checkDatatype":{"checkers":{"datatype":{"type":"GroovyExpressionChecker","multiplicity":"ONE","required":false,"expression":"String datatype = datum.datatype;  def data = application.getConfiguration().i18n().data ; if(data==null){\n    return false;\n}; def i18n = data\n        .collect{ it->it.value.i18n};\nif(i18n==null){\n    return false;\n}; def title = i18n \n        .collect{ it->it.title};\nif(title==null){\n    return false;\n}; def french = title\n        .collect { it->it.get(java.util.Locale.FRENCH)};\nreturn french \n        .find{it->datatype.equals(fr.inra.oresing.domain.application.configuration.Ltree.fromUnescapedString(it.toString()).sql)}!=null;\n","references":null,"exceptionMessages":[],"codify":true,"data":null}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["datatype"],"required":false,"mandatory":"OPTIONAL"}},"depends":[],"migrations":null,"hidden":false,"order":9999},"unites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key"],"componentDescriptions":{"code_en":{"type":"BasicComponent","componentKey":"code_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_en","exportHeaderName":"code_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"code_key":{"type":"BasicComponent","componentKey":"code_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"code_fr":{"type":"BasicComponent","componentKey":"code_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_fr","exportHeaderName":"code_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"projet":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"definition_en":{"type":"BasicComponent","componentKey":"definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_en","exportHeaderName":"definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"colonne_homonyme_entre_referentiels":{"type":"BasicComponent","componentKey":"colonne_homonyme_entre_referentiels","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"colonne_homonyme_entre_referentiels","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"definition_fr":{"type":"BasicComponent","componentKey":"definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_fr","exportHeaderName":"definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"valeurs_qualitatives":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key","valeur_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"valeur_en":{"type":"BasicComponent","componentKey":"valeur_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_en","exportHeaderName":"valeur_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"valeur_key":{"type":"BasicComponent","componentKey":"valeur_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"valeur_fr":{"type":"BasicComponent","componentKey":"valeur_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_fr","exportHeaderName":"valeur_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"type_de_fichiers":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"HIDDEN_TAG"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"description_fr":{"type":"BasicComponent","componentKey":"description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_fr","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"description_en":{"type":"BasicComponent","componentKey":"description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_en","exportHeaderName":"description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":true,"order":9999},"variables_et_unites_par_types_de_donnees":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["datatype","variable"],"componentDescriptions":{"variable":{"type":"BasicComponent","componentKey":"variable","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom de la variable","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"datatype":{"type":"BasicComponent","componentKey":"datatype","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du type de données","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"unite":{"type":"BasicComponent","componentKey":"unite","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom de l'unité","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false}},"submission":null,"authorization":null,"validations":{"variableRef":{"checkers":{"variable":{"type":"ReferenceChecker","componentKey":"variable","multiplicity":"ONE","required":false,"refType":"variables","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["variable"],"required":false,"mandatory":"OPTIONAL"},"uniteRef":{"checkers":{"unite":{"type":"ReferenceChecker","componentKey":"unite","multiplicity":"ONE","required":false,"refType":"unites","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["unite"],"required":false,"mandatory":"OPTIONAL"},"checkDatatype":{"checkers":{"datatype":{"type":"GroovyExpressionChecker","multiplicity":"ONE","required":false,"expression":"String datatype = datum.datatype;  def data = application.getConfiguration().i18n().data ; if(data==null){\n    return false;\n}; def i18n = data\n        .collect{ it->it.value.i18n};\nif(i18n==null){\n    return false;\n}; def title = i18n \n        .collect{ it->it.title};\nif(title==null){\n    return false;\n}; def french = title\n        .collect { it->it.get(java.util.Locale.FRENCH)};\nreturn french \n        .find{it->datatype.equals(fr.inra.oresing.domain.application.configuration.Ltree.fromUnescapedString(it.toString()).sql)}!=null;\n","references":null,"exceptionMessages":[],"codify":true,"data":null}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["datatype"],"required":false,"mandatory":"OPTIONAL"}},"depends":[],"migrations":null,"hidden":false,"order":9999},"pem":{"separator":";","headerLine":4,"firstRowLine":5,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":2},{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"context"},{"tagDefinition":"DATA_TAG"}],"naturalKey":["projet","site","plateforme","date","espece"],"componentDescriptions":{"date":{"type":"BasicComponent","componentKey":"date","defaultValue":null,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":1},{"tagDefinition":"DOMAIN_TAG","tagName":"temporal"}],"importHeader":"date","exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"DateChecker","multiplicity":"ONE","required":true,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"site":{"type":"BasicComponent","componentKey":"site","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"site","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"sites","chartDescription":null,"reference":true},"individusNumber_unit":{"type":"ComputedComponent","componentKey":"individusNumber_unit","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"individusNumber_unit","multiplicity":"ONE","required":true,"refType":"unites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":true,"expression":"'sans_unite'","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"unites","chartDescription":null,"reference":true},"projet":{"type":"BasicComponent","componentKey":"projet","defaultValue":null,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":2},{"tagDefinition":"DOMAIN_TAG","tagName":"test"}],"importHeader":"projet","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"projet","multiplicity":"ONE","required":false,"refType":"projet","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"projet","chartDescription":null,"reference":true},"espece":{"type":"BasicComponent","componentKey":"espece","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"espece","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"espece","multiplicity":"ONE","required":false,"refType":"especes","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"especes","chartDescription":null,"reference":true},"chemin":{"type":"ComputedComponent","componentKey":"chemin","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":"chemin","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"chemin","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return OA_buildCompositeKey(['site','plateforme']);\n","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"sites","chartDescription":null,"reference":true},"plateforme":{"type":"BasicComponent","componentKey":"plateforme","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"plateforme","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"color_value":{"type":"BasicComponent","componentKey":"color_value","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"Couleur des individus","exportHeaderName":"color_value","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"color_value","multiplicity":"ONE","required":false,"refType":"valeurs_qualitatives","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"valeurs_qualitatives","chartDescription":null,"reference":true},"individusNumbervalue":{"type":"BasicComponent","componentKey":"individusNumbervalue","defaultValue":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return 0","references":null,"exceptionMessages":[],"codify":false,"data":null},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"Nombre d'individus","exportHeaderName":"individusNumbervalue","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"color_unit":{"type":"ComputedComponent","componentKey":"color_unit","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"color_unit","multiplicity":"ONE","required":false,"refType":"unites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"'sans_unite'","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"unites","chartDescription":null,"reference":true}},"submission":{"strategy":"OA_VERSIONING","fileNameParsing":{"pattern":"(.*)!(.*)!(.*)!(.*).csv","authorizationScopes":["projet","chemin"],"startDate":3,"endDate":4},"submissionScope":{"referenceScopes":[{"reference":"projet","component":"projet"},{"reference":"sites","component":"chemin"}],"timescope":{"component":"date"}}},"authorization":{"authorizationScope":[{"component":"projet","data":"projet"},{"component":"chemin","data":"sites"}],"timeScope":"date"},"validations":{"unitOfColor":{"checkers":{},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":null,"required":false,"mandatory":"OPTIONAL"},"unitOfIndividus":{"checkers":{},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":null,"required":true,"mandatory":"OPTIONAL"}},"depends":[{"type":"DependsReferences","references":"sites","component":"site"},{"type":"DependsReferences","references":"unites","component":"individusNumber_unit"},{"type":"DependsReferences","references":"projet","component":"projet"},{"type":"DependsReferences","references":"especes","component":"espece"},{"type":"DependsReferences","references":"sites","component":"chemin"},{"type":"DependsReferences","references":"valeurs_qualitatives","component":"color_value"},{"type":"DependsReferences","references":"unites","component":"color_unit"}],"migrations":null,"hidden":false,"order":2},"sites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["zet_chemin_parent","zet_nom_key"],"componentDescriptions":{"tze_type_nom":{"type":"BasicComponent","componentKey":"tze_type_nom","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_type_nom","exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"tze_type_nom","multiplicity":"ONE","required":true,"refType":"type_de_sites","isRecursive":false,"isParent":true},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"type_de_sites","chartDescription":null,"reference":true},"zet_description_en":{"type":"BasicComponent","componentKey":"zet_description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_description_en","exportHeaderName":"zet_description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"zet_nom_fr":{"type":"BasicComponent","componentKey":"zet_nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_fr","exportHeaderName":"zet_nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"zet_nom_key":{"type":"BasicComponent","componentKey":"zet_nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"zet_nom_en":{"type":"BasicComponent","componentKey":"zet_nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_en","exportHeaderName":"zet_nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"zet_description_fr":{"type":"BasicComponent","componentKey":"zet_description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_description_fr","exportHeaderName":"zet_description_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"StringChecker","chartDescription":null,"reference":false},"zet_chemin_parent":{"type":"BasicComponent","componentKey":"zet_chemin_parent","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_chemin_parent","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"zet_chemin_parent","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":true,"isParent":true},"submissionAuthorizationScope":null,"hidden":false,"referenceCheckerType":"sites","chartDescription":null,"reference":true}},"submission":null,"authorization":null,"validations":{},"depends":[{"type":"DependsParent","references":"type_de_sites","component":"tze_type_nom"},{"type":"DependsParent","references":"sites","component":"zet_chemin_parent"}],"migrations":null,"hidden":false,"order":9999}},"rightsRequest":{"formFields":{"organization":{"order":0,"type":"RightsRequestField","required":true,"checker":{"type":"StringChecker","multiplicity":"ONE","required":true,"pattern":".*"}},"project":{"order":1,"type":"RightsRequestField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":".*"}},"startDate":{"order":2,"type":"RightsRequestField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}},"endDate":{"order":3,"type":"RightsRequestField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}}}},"additionalFiles":{"fichiers":{"formFields":{"nom":{"order":0,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}},"date":{"order":1,"type":"AdditionalFileField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}},"age":{"order":2,"type":"AdditionalFileField","required":false,"checker":{"type":"IntegerChecker","multiplicity":"ONE","required":false,"min":-2147483648,"max":2147483647}},"poids":{"order":3,"type":"AdditionalFileField","required":false,"checker":{"type":"FloatChecker","multiplicity":"ONE","required":false,"min":10.0,"max":100.0}},"site":{"order":4,"type":"AdditionalFileField","required":true,"checker":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":true,"refType":"sites","isRecursive":false,"isParent":false}}}},"utilisateurs":{"formFields":{"nom":{"order":0,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}},"prenom":{"order":1,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}}}}},"hierarchicalNodes":[{"nodeName":"especes","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"projet","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"pem","componentKey":"color_unit","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["sites","unites","projet","especes","valeurs_qualitatives","type_de_sites"],"order":2,"isRecursive":false},{"nodeName":"themes","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"site_theme_datatype","componentKey":"theme","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["sites","projet","themes","type_de_sites"],"order":9999,"isRecursive":false},{"nodeName":"type_de_fichiers","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"type_de_sites","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[{"nodeName":"sites","componentKey":"zet_chemin_parent","columnToLookUpForRecursive":"zet_chemin_parent","parent":"type_de_sites","children":[],"depends":["type_de_sites"],"order":9999,"isRecursive":true}],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"unites","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"valeurs_qualitatives","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"variables","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"variables_et_unites_par_types_de_donnees","componentKey":"variable","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["unites","variables"],"order":9999,"isRecursive":false}],"requiredAuthorizationsAttributes":["themes","variables","especes","site_theme_datatype","type_de_sites","unites","projet","valeurs_qualitatives","variables_et_unites_par_types_de_donnees","type_de_fichiers","pem","sites"],"hiddenData":["type_de_fichiers"]},"configFile":null,"allDataNames":["especes","projet","sites","themes","type_de_sites","site_theme_datatype","type_de_fichiers","unites","valeurs_qualitatives","variables","variables_et_unites_par_types_de_donnees","pem"]},"time":[2025,1,16,16,39,19,274393517],"type":"REACTIVE_RESULT"}
-{"result":1.0,"time":[2025,1,16,16,39,19,274813887],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.testYamlIsvalid","params":null,"time":[2025,1,27,14,35,19,56584458],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.yamlIsvalid","params":null,"time":[2025,1,27,14,35,19,62010906],"type":"REACTIVE_INFO"}
+{"result":"application.createConfiguration.versionIsValid","params":null,"time":[2025,1,27,14,35,19,62400757],"type":"REACTIVE_INFO"}
+{"result":0.01,"time":[2025,1,27,14,35,19,63177446],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.Starting parsing of configuration","params":{},"time":[2025,1,27,14,35,19,503641913],"type":"REACTIVE_INFO"}
+{"result":0.0,"time":[2025,1,27,14,35,19,504272532],"type":"REACTIVE_PROGRESS"}
+{"result":0.0,"time":[2025,1,27,14,35,19,504836962],"type":"REACTIVE_PROGRESS"}
+{"result":"application.createConfiguration.CheckSyntax.startValidation.start","params":{"applicationName":"monsore"},"time":[2025,1,27,14,35,20,403496272],"type":"REACTIVE_INFO"}
+{"result":{"id":"4aa54dc2-084f-4bed-b270-29b4b621c8c8","creationDate":null,"updateDate":null,"lastChartes":5336473980199903000,"name":"monsore","version":null,"data":["themes","especes","variables","type_de_sites","site_theme_datatype","unites","projet","valeurs_qualitatives","type_de_fichiers","variables_et_unites_par_types_de_donnees","pem","sites"],"additionalFiles":["fichiers","utilisateurs"],"configuration":{"version":{"version":"2.0.1","runTimeVersion":{}},"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"},{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"unit"},{"tagDefinition":"DOMAIN_TAG","tagName":"temporal"}],"i18n":{"tags":{"unit":{"en":"Unit","fr":"Unité"},"data":{"en":"Data","fr":"Donnée"},"test":{"en":"Test","fr":"Test"},"context":{"en":"Context","fr":"Contexte"},"temporal":{"en":"Temporality","fr":"Temporalité"}},"application":{"title":{"en":"SOERE my SOERE","fr":"SOERE mon SOERE"},"description":{"en":"SOERE my SOERE","fr":"SOERE mon SOERE"}},"data":{"themes":{"validations":{},"exceptions":{},"components":{"description_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du thème"}}},"description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Thematic definition"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Site name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"Le nom du thème"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{description_en}","fr":"{description_fr}"}},"i18n":{"title":{"en":"Thematic","fr":"Thème"},"description":{"en":"Thematic list","fr":"Liste des thèmes"}}},"variables":{"validations":{},"exceptions":{},"components":{"definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Variable definition"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Variable name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"Le nom de la variable"}}},"definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La définition de la variable"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{definition_en}","fr":"{definition_fr}"}},"i18n":{"title":{"en":"Variables","fr":"Variables"},"description":{"en":"Variables list","fr":"Liste des variables"}}},"especes":{"validations":{},"exceptions":{},"components":{"my_computed_column":{"exportHeader":{"title":{"en":"computed column","fr":"colonne calculée"},"description":{"en":"a calculated column returning 'my value'","fr":"une colonne calculée retournant 'my value'"}}},"esp_definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"species definition"}}},"esp_definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"définition de l'espèce"}}},"esp_nom":{"exportHeader":{"title":{"en":"code","fr":"code"},"description":{"en":"code name of the species","fr":"nom codique de l'espèce"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{esp_nom}","fr":"{esp_nom}"},"description":{"en":"{esp_definition_en}","fr":"{esp_definition_fr}"}},"i18n":{"title":{"en":"Species","fr":"Espèces"},"description":{"en":"Description of species fished in the watershed","fr":"Description des espèces pêchées sur le bassin versant"}}},"site_theme_datatype":{"validations":{"checkDatatype":{"fr":"test"},"projetRef":{"fr":"référence au projet"},"sitesRef":{"fr":"référence au site"},"themesRef":{"fr":"référence au theme"}},"exceptions":{},"components":{},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"projet name: {projet}, site name : {site}, theme name : {theme}, data type name : {datatype}","fr":"nom du projet: {projet}, nom du site : {site}, nom du thème : {theme}, nom du type de données : {datatype}"},"description":{"en":"Join on projet name: {projet}, site name : {site}, theme name : {theme}, data type name : {datatype}","fr":"Jointure nom du projet: {projet}, nom du site : {site}, nom du thème : {theme}, nom du type de données : {datatype}"}},"i18n":{"title":{"en":"Data types by site and project","fr":"Types de données par site et projet"},"description":{"en":"Join table of theme sites and datatypes","fr":"Table de jointure des sites theme et datatypes"}}},"type_de_sites":{"validations":{},"exceptions":{},"components":{"tze_nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"La nom du type de sites"}}},"tze_nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Site type name"}}},"tze_definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Site type definition"}}},"tze_definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du type de site"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{tze_nom_en}","fr":"{tze_nom_fr}"},"description":{"en":"{tze_definition_en}","fr":"{tze_definition_fr}"}},"i18n":{"title":{"en":"Sites types","fr":"Types de sites"},"description":{"en":"Sites types list","fr":"Liste des types de sites"}}},"unites":{"validations":{},"exceptions":{},"components":{"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"Unit name"}}},"code_en":{"exportHeader":{"title":{"en":"code"},"description":{"en":"Unit code"}}},"nom_fr":{"exportHeader":{"title":{"fr":"nom"},"description":{"fr":"La nom de l'unité"}}},"code_fr":{"exportHeader":{"title":{"fr":"code"},"description":{"fr":"Le code du unité"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en} ({code_key})","fr":"{nom_fr} ({code_key})"},"description":{}},"i18n":{"title":{"en":"Units","fr":"Unités"},"description":{"en":"Units list","fr":"Liste des unités"}}},"projet":{"validations":{},"exceptions":{},"components":{"definition_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"project definition"}}},"nom_en":{"exportHeader":{"title":{"en":"Name"},"description":{"en":"Project name"}}},"nom_fr":{"exportHeader":{"title":{"fr":"Nom"},"description":{"fr":"Nom du projet"}}},"definition_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"définition du projet"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{definition_en}","fr":"{definition_fr}"}},"i18n":{"title":{"en":"Project","fr":"Projet"},"description":{"en":"List of information system projects","fr":"Liste des projets du système d'information"}}},"valeurs_qualitatives":{"validations":{},"exceptions":{},"components":{"valeur_fr":{"exportHeader":{"title":{"fr":"valeur"},"description":{"fr":"La valeur dans la liste"}}},"nom_en":{"exportHeader":{"title":{"en":"name"},"description":{"en":"The name list"}}},"valeur_en":{"exportHeader":{"title":{"en":"value"},"description":{"en":"The value in list"}}},"nom_fr":{"exportHeader":{"title":{"fr":"Nom"},"description":{"fr":"Le nom de la liste"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{valeur_en}","fr":"{valeur_fr}"},"description":{"en":"{valeur_en} of {nom_en}","fr":"{valeur_fr} de {nom_fr}"}},"i18n":{"title":{"en":"Qualitative values","fr":"Valeurs qualitatives"},"description":{"en":"List of qualitative values list","fr":"Liste de liste de valeurs qualitatives"}}},"variables_et_unites_par_types_de_donnees":{"validations":{"checkDatatype":{"fr":"test"},"uniteRef":{"fr":"référence à l'unité'"},"variableRef":{"fr":"référence à la variable"}},"exceptions":{},"components":{},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"datatype name : {datatype}, variable name : {variable}, : unit name {unite}","fr":"nom du type de données : {datatype}, nom de la variable : {variable}, : nom de l'unité {unite}"},"description":{"en":"Join ondatatype name : {datatype}, variable name : {variable}, : unit name {unite}","fr":"Jointure des nom du type de données : {datatype}, nom de la variable : {variable}, : nom de l'unité {unite}"}},"i18n":{"title":{"en":"Variables and units by data type","fr":"Variables et unités par type de données"},"description":{"en":"Variables and units by data type join list","fr":"Liste de jointure des variables et unités par type de données"}}},"type_de_fichiers":{"validations":{},"exceptions":{},"components":{"description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"Thematic definition"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{nom_en}","fr":"{nom_fr}"},"description":{"en":"{description_en}","fr":"{description_fr}"}},"i18n":{"title":{"en":"Files types","fr":"Types de fichiers"},"description":{"en":"The files types","fr":"Les types de fichiers"}}},"pem":{"validations":{"unitOfIndividus":{"fr":"vérifie l'unité du nombre d'individus"},"unitOfColor":{"fr":"vérifie l'unité de la couleur des individus"}},"exceptions":{},"components":{"chemin":{"exportHeader":{"title":{"en":"Path","fr":"Chemin"},"description":{"en":"Data calculating the full path of the site","fr":"Données calculant le chemin complet du site"}}},"color_value":{"exportHeader":{"title":{"en":"United colors","fr":"Couleur des individus"},"description":{}}},"individusNumbervalue":{"exportHeader":{"title":{"en":"Number of individuals","fr":"Nombre d'individus"},"description":{}}}},"submissions":{"referenceScopes":{"projet":{"title":{"en":"project","fr":"projet"},"description":{"en":"Choose the project","fr":"Choisissez le projet"}},"sites":{"title":{"en":"site","fr":"site"},"description":{"en":"The site","fr":"Le site"}}}},"i18nDisplayPattern":null,"i18n":{"title":{"en":"Trap in ascent","fr":"Piégeage en Montée"},"description":{"en":"Upstream trapping fishing data","fr":"Données de pêche par piégeage en Montée"}}},"sites":{"validations":{},"exceptions":{},"components":{"zet_description_en":{"exportHeader":{"title":{"en":"definition"},"description":{"en":"site definition"}}},"zet_nom_fr":{"exportHeader":{"title":{"fr":"Nom du site"},"description":{"fr":"Le nom du site"}}},"zet_nom_en":{"exportHeader":{"title":{"en":"Site name"},"description":{"en":"The site name"}}},"zet_description_fr":{"exportHeader":{"title":{"fr":"définition"},"description":{"fr":"La definition du site"}}}},"submissions":{"referenceScopes":{}},"i18nDisplayPattern":{"title":{"en":"{zet_chemin_parent} - {zet_nom_fr}","fr":"{zet_chemin_parent} - {zet_nom_fr} "},"description":{"en":"{zet_description_en}","fr":"{zet_description_fr}"}},"i18n":{"title":{"en":"Site","fr":"Site"},"description":{"en":"Sites list","fr":"Liste des sites du système d'information"}}}},"rightsrequest":{"fields":{"endDate":{"title":{"en":"Give the project end date","fr":"Date de fin du projet"},"description":{"en":"Project end date","fr":"Donnez la date de fin du projet"}},"organization":{"title":{"en":"Name of research organization","fr":"Nom de l'organisme de recherche"},"description":{"en":"Usual ame of research organization","fr":"Nom usuel de l'organisme de recherche"}},"project":{"title":{"en":"Description of the research project","fr":"Description du projet de recherche"},"description":{"en":"Describe your the research project","fr":"Donnez une description du projet de recherche"}},"startDate":{"title":{"en":"Project start date","fr":"Date de début du projet"},"description":{"en":"Give the project start date","fr":"Donnez la date de début du projet"}}},"i18n":{"title":{"en":"You can request rights to the monsore application by filling out this form","fr":"Vous pouvez demander des droits à l'application monsore en remplissant ce formulaire"},"description":{"en":"Monsoere Data Access Right Request Form","fr":"Formulaire de demande de droit d'accès aux données de Monsoere"}}},"additionalFiles":{"utilisateurs":{"i18n":{"title":{"en":"Users","fr":"Utilsateurs"},"description":{"en":"System User Description Files","fr":"Fichiers de dexcription des utilisateurs du système"}},"fields":{"prenom":{"title":{"en":"Surname","fr":"Prénom"},"description":{"en":"User surname","fr":"Prénom de l'utilisateur"}},"nom":{"title":{"en":"Name","fr":"Nom"},"description":{"en":"User name","fr":"Nom de l'utilisateur"}}}},"fichiers":{"i18n":{"title":{"en":"Files","fr":"Fichiers"},"description":{"en":"Various files relating to the Information System","fr":"Différents fichiers afférents au Système d'Information"}},"fields":{"date":{"title":{"en":"Date","fr":"Date"},"description":{"en":"The date the file was updated","fr":"La date de mise à jour du fichier"}},"site":{"title":{"en":"Place","fr":"Site"},"description":{"en":"Site described by the file","fr":"Site décrit par le fichier"}},"poids":{"title":{"en":"Weight","fr":"Poids"},"description":{"en":"File size in kb","fr":"Poids du fichier en ko"}},"nom":{"title":{"en":"Name","fr":"Nom"},"description":{"en":"The name of the file for download","fr":"Le nom du fichier pour téléchargement"}},"age":{"title":{"en":"Age","fr":"Age"},"description":{"en":"Minimum age for file access","fr":"Age minumum d'accès au fichier"}}}}}},"applicationDescription":{"name":"monsore","version":{"version":"3.0.1","runTimeVersion":{}},"defaultLanguage":"fr","comment":"Fichier de test de l'application brokenADOM version initiale"},"dataDescription":{"themes":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"description_fr":{"type":"BasicComponent","componentKey":"description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_fr","exportHeaderName":"description_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"description_en":{"type":"BasicComponent","componentKey":"description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_en","exportHeaderName":"description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"especes":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["esp_nom"],"componentDescriptions":{"colonne_homonyme_entre_referentiels":{"type":"BasicComponent","componentKey":"colonne_homonyme_entre_referentiels","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"colonne_homonyme_entre_referentiels","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"esp_definition_en":{"type":"BasicComponent","componentKey":"esp_definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"esp_definition_en","exportHeaderName":"esp_definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"my_computed_column":{"type":"ComputedComponent","componentKey":"my_computed_column","tags":[{"tagDefinition":"HIDDEN_TAG"}],"exportHeaderName":"my_computed_column","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return \"my value\";\n","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":true,"referenceCheckerType":"StringChecker"},"esp_nom":{"type":"BasicComponent","componentKey":"esp_nom","defaultValue":null,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"test"}],"importHeader":"esp_nom","exportHeaderName":"esp_nom","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"esp_definition_fr":{"type":"BasicComponent","componentKey":"esp_definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"esp_definition_fr","exportHeaderName":"esp_definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"variables":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"definition_en":{"type":"BasicComponent","componentKey":"definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_en","exportHeaderName":"definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"is_qualitative":{"type":"BasicComponent","componentKey":"is_qualitative","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"isQualitative","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"definition_fr":{"type":"BasicComponent","componentKey":"definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_fr","exportHeaderName":"definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"type_de_sites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["tze_nom_key"],"componentDescriptions":{"tze_nom_key":{"type":"BasicComponent","componentKey":"tze_nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"tze_nom_fr":{"type":"BasicComponent","componentKey":"tze_nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_fr","exportHeaderName":"tze_nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"tze_definition_fr":{"type":"BasicComponent","componentKey":"tze_definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_definition_fr","exportHeaderName":"tze_definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"tze_nom_en":{"type":"BasicComponent","componentKey":"tze_nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_nom_en","exportHeaderName":"tze_nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"tze_definition_en":{"type":"BasicComponent","componentKey":"tze_definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_definition_en","exportHeaderName":"tze_definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"site_theme_datatype":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["projet","site","theme","datatype"],"componentDescriptions":{"site":{"type":"BasicComponent","componentKey":"site","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du site","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"theme":{"type":"BasicComponent","componentKey":"theme","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du thème","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"projet":{"type":"BasicComponent","componentKey":"projet","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du projet","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"datatype":{"type":"BasicComponent","componentKey":"datatype","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du type de données","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{"projetRef":{"checkers":{"projet":{"type":"ReferenceChecker","componentKey":"projet","multiplicity":"ONE","required":false,"refType":"projet","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["projet"],"required":false,"mandatory":"OPTIONAL"},"sitesRef":{"checkers":{"site":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["site"],"required":false,"mandatory":"OPTIONAL"},"themesRef":{"checkers":{"theme":{"type":"ReferenceChecker","componentKey":"theme","multiplicity":"ONE","required":false,"refType":"themes","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["theme"],"required":false,"mandatory":"OPTIONAL"},"checkDatatype":{"checkers":{"datatype":{"type":"GroovyExpressionChecker","multiplicity":"ONE","required":false,"expression":"String datatype = datum.datatype;  def data = application.getConfiguration().i18n().data ; if(data==null){\n    return false;\n}; def i18n = data\n        .collect{ it->it.value.i18n};\nif(i18n==null){\n    return false;\n}; def title = i18n \n        .collect{ it->it.title};\nif(title==null){\n    return false;\n}; def french = title\n        .collect { it->it.get(java.util.Locale.FRENCH)};\nreturn french \n        .find{it->datatype.equals(fr.inra.oresing.domain.application.configuration.Ltree.fromUnescapedString(it.toString()).sql)}!=null;\n","references":null,"exceptionMessages":[],"codify":true,"data":null}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["datatype"],"required":false,"mandatory":"OPTIONAL"}},"depends":[],"migrations":null,"hidden":false,"order":9999},"unites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key"],"componentDescriptions":{"code_en":{"type":"BasicComponent","componentKey":"code_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_en","exportHeaderName":"code_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"code_key":{"type":"BasicComponent","componentKey":"code_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"code_fr":{"type":"BasicComponent","componentKey":"code_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"code_fr","exportHeaderName":"code_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"projet":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"definition_en":{"type":"BasicComponent","componentKey":"definition_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_en","exportHeaderName":"definition_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"colonne_homonyme_entre_referentiels":{"type":"BasicComponent","componentKey":"colonne_homonyme_entre_referentiels","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"colonne_homonyme_entre_referentiels","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"definition_fr":{"type":"BasicComponent","componentKey":"definition_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"definition_fr","exportHeaderName":"definition_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"valeurs_qualitatives":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["nom_key","valeur_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":"nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"valeur_en":{"type":"BasicComponent","componentKey":"valeur_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_en","exportHeaderName":"valeur_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":"nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"valeur_key":{"type":"BasicComponent","componentKey":"valeur_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"valeur_fr":{"type":"BasicComponent","componentKey":"valeur_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"valeur_fr","exportHeaderName":"valeur_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":false,"order":9999},"type_de_fichiers":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"HIDDEN_TAG"}],"naturalKey":["nom_key"],"componentDescriptions":{"nom_key":{"type":"BasicComponent","componentKey":"nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_en":{"type":"BasicComponent","componentKey":"nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_en","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"nom_fr":{"type":"BasicComponent","componentKey":"nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom_fr","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"description_fr":{"type":"BasicComponent","componentKey":"description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_fr","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"description_en":{"type":"BasicComponent","componentKey":"description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"description_en","exportHeaderName":"description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{},"depends":[],"migrations":null,"hidden":true,"order":9999},"variables_et_unites_par_types_de_donnees":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"data"}],"naturalKey":["datatype","variable"],"componentDescriptions":{"variable":{"type":"BasicComponent","componentKey":"variable","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom de la variable","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"datatype":{"type":"BasicComponent","componentKey":"datatype","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom du type de données","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"unite":{"type":"BasicComponent","componentKey":"unite","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"nom de l'unité","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"}},"submission":null,"authorization":null,"validations":{"variableRef":{"checkers":{"variable":{"type":"ReferenceChecker","componentKey":"variable","multiplicity":"ONE","required":false,"refType":"variables","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["variable"],"required":false,"mandatory":"OPTIONAL"},"uniteRef":{"checkers":{"unite":{"type":"ReferenceChecker","componentKey":"unite","multiplicity":"ONE","required":false,"refType":"unites","isRecursive":false,"isParent":false}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["unite"],"required":false,"mandatory":"OPTIONAL"},"checkDatatype":{"checkers":{"datatype":{"type":"GroovyExpressionChecker","multiplicity":"ONE","required":false,"expression":"String datatype = datum.datatype;  def data = application.getConfiguration().i18n().data ; if(data==null){\n    return false;\n}; def i18n = data\n        .collect{ it->it.value.i18n};\nif(i18n==null){\n    return false;\n}; def title = i18n \n        .collect{ it->it.title};\nif(title==null){\n    return false;\n}; def french = title\n        .collect { it->it.get(java.util.Locale.FRENCH)};\nreturn french \n        .find{it->datatype.equals(fr.inra.oresing.domain.application.configuration.Ltree.fromUnescapedString(it.toString()).sql)}!=null;\n","references":null,"exceptionMessages":[],"codify":true,"data":null}},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":["datatype"],"required":false,"mandatory":"OPTIONAL"}},"depends":[],"migrations":null,"hidden":false,"order":9999},"pem":{"separator":";","headerLine":4,"firstRowLine":5,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":2},{"tagDefinition":"DOMAIN_TAG","tagName":"data"},{"tagDefinition":"DOMAIN_TAG","tagName":"test"},{"tagDefinition":"DOMAIN_TAG","tagName":"context"},{"tagDefinition":"DATA_TAG"}],"naturalKey":["projet","site","plateforme","date","espece"],"componentDescriptions":{"date":{"type":"BasicComponent","componentKey":"date","defaultValue":null,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":1},{"tagDefinition":"DOMAIN_TAG","tagName":"temporal"}],"importHeader":"date","exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"DateChecker","multiplicity":"ONE","required":true,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null},"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"site":{"type":"BasicComponent","componentKey":"site","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"site","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"sites"},"individusNumber_unit":{"type":"ComputedComponent","componentKey":"individusNumber_unit","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"individusNumber_unit","multiplicity":"ONE","required":true,"refType":"unites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":true,"expression":"'sans_unite'","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"unites"},"projet":{"type":"BasicComponent","componentKey":"projet","defaultValue":null,"tags":[{"tagDefinition":"ORDER_TAG","tagOrder":2},{"tagDefinition":"DOMAIN_TAG","tagName":"test"}],"importHeader":"projet","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"projet","multiplicity":"ONE","required":false,"refType":"projet","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"projet"},"espece":{"type":"BasicComponent","componentKey":"espece","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"espece","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"espece","multiplicity":"ONE","required":false,"refType":"especes","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"especes"},"chemin":{"type":"ComputedComponent","componentKey":"chemin","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":"chemin","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"chemin","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return OA_buildCompositeKey(['site','plateforme']);\n","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"sites"},"plateforme":{"type":"BasicComponent","componentKey":"plateforme","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"plateforme","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"color_value":{"type":"BasicComponent","componentKey":"color_value","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"Couleur des individus","exportHeaderName":"color_value","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"color_value","multiplicity":"ONE","required":false,"refType":"valeurs_qualitatives","isRecursive":false,"isParent":false},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"valeurs_qualitatives"},"individusNumbervalue":{"type":"BasicComponent","componentKey":"individusNumbervalue","defaultValue":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"return 0","references":null,"exceptionMessages":[],"codify":false,"data":null},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"Nombre d'individus","exportHeaderName":"individusNumbervalue","langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"color_unit":{"type":"ComputedComponent","componentKey":"color_unit","tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"color_unit","multiplicity":"ONE","required":false,"refType":"unites","isRecursive":false,"isParent":false},"computationChecker":{"type":"ComputationChecker","multiplicity":"ONE","required":false,"expression":"'sans_unite'","references":null,"exceptionMessages":[],"codify":false,"data":null},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"unites"}},"submission":{"strategy":"OA_VERSIONING","fileNameParsing":{"pattern":"(.*)!(.*)!(.*)!(.*).csv","authorizationScopes":["projet","chemin"],"startDate":3,"endDate":4},"submissionScope":{"referenceScopes":[{"reference":"projet","component":"projet"},{"reference":"sites","component":"chemin"}],"timescope":{"component":"date"}}},"authorization":{"authorizationScope":[{"component":"projet","data":"projet"},{"component":"chemin","data":"sites"}],"timeScope":"date"},"validations":{"unitOfColor":{"checkers":{},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":null,"required":false,"mandatory":"OPTIONAL"},"unitOfIndividus":{"checkers":{},"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"columns":null,"required":true,"mandatory":"OPTIONAL"}},"depends":[{"type":"DependsReferences","references":"sites","component":"site"},{"type":"DependsReferences","references":"unites","component":"individusNumber_unit"},{"type":"DependsReferences","references":"projet","component":"projet"},{"type":"DependsReferences","references":"especes","component":"espece"},{"type":"DependsReferences","references":"sites","component":"chemin"},{"type":"DependsReferences","references":"valeurs_qualitatives","component":"color_value"},{"type":"DependsReferences","references":"unites","component":"color_unit"}],"migrations":null,"hidden":false,"order":2},"sites":{"separator":";","headerLine":1,"firstRowLine":2,"allowUnexpectedColumns":false,"tags":[{"tagDefinition":"DOMAIN_TAG","tagName":"context"}],"naturalKey":["zet_chemin_parent","zet_nom_key"],"componentDescriptions":{"tze_type_nom":{"type":"BasicComponent","componentKey":"tze_type_nom","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"tze_type_nom","exportHeaderName":null,"langRestrictions":[],"required":true,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"tze_type_nom","multiplicity":"ONE","required":true,"refType":"type_de_sites","isRecursive":false,"isParent":true},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"type_de_sites"},"zet_description_en":{"type":"BasicComponent","componentKey":"zet_description_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_description_en","exportHeaderName":"zet_description_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"zet_nom_fr":{"type":"BasicComponent","componentKey":"zet_nom_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_fr","exportHeaderName":"zet_nom_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"zet_nom_key":{"type":"BasicComponent","componentKey":"zet_nom_key","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_key","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"zet_nom_en":{"type":"BasicComponent","componentKey":"zet_nom_en","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_nom_en","exportHeaderName":"zet_nom_en","langRestrictions":["en"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"zet_description_fr":{"type":"BasicComponent","componentKey":"zet_description_fr","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_description_fr","exportHeaderName":"zet_description_fr","langRestrictions":["fr"],"required":false,"mandatory":"OPTIONAL","checker":null,"submissionAuthorizationScope":null,"chartDescription":null,"reference":false,"hidden":false,"referenceCheckerType":"StringChecker"},"zet_chemin_parent":{"type":"BasicComponent","componentKey":"zet_chemin_parent","defaultValue":null,"tags":[{"tagDefinition":"NO_TAG","tagName":"no_tag"}],"importHeader":"zet_chemin_parent","exportHeaderName":null,"langRestrictions":[],"required":false,"mandatory":"OPTIONAL","checker":{"type":"ReferenceChecker","componentKey":"zet_chemin_parent","multiplicity":"ONE","required":false,"refType":"sites","isRecursive":true,"isParent":true},"submissionAuthorizationScope":null,"chartDescription":null,"reference":true,"hidden":false,"referenceCheckerType":"sites"}},"submission":null,"authorization":null,"validations":{},"depends":[{"type":"DependsParent","references":"type_de_sites","component":"tze_type_nom"},{"type":"DependsParent","references":"sites","component":"zet_chemin_parent"}],"migrations":null,"hidden":false,"order":9999}},"rightsRequest":{"formFields":{"organization":{"order":0,"type":"RightsRequestField","required":true,"checker":{"type":"StringChecker","multiplicity":"ONE","required":true,"pattern":".*"}},"project":{"order":1,"type":"RightsRequestField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":".*"}},"startDate":{"order":2,"type":"RightsRequestField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}},"endDate":{"order":3,"type":"RightsRequestField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}}}},"additionalFiles":{"fichiers":{"formFields":{"nom":{"order":0,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}},"date":{"order":1,"type":"AdditionalFileField","required":false,"checker":{"type":"DateChecker","multiplicity":"ONE","required":false,"pattern":"dd/MM/yyyy","min":[-999999999,1,1,0,0],"max":[999999999,12,31,23,59,59,999999999],"duration":null}},"age":{"order":2,"type":"AdditionalFileField","required":false,"checker":{"type":"IntegerChecker","multiplicity":"ONE","required":false,"min":-2147483648,"max":2147483647}},"poids":{"order":3,"type":"AdditionalFileField","required":false,"checker":{"type":"FloatChecker","multiplicity":"ONE","required":false,"min":10.0,"max":100.0}},"site":{"order":4,"type":"AdditionalFileField","required":true,"checker":{"type":"ReferenceChecker","componentKey":"site","multiplicity":"ONE","required":true,"refType":"sites","isRecursive":false,"isParent":false}}}},"utilisateurs":{"formFields":{"nom":{"order":0,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}},"prenom":{"order":1,"type":"AdditionalFileField","required":false,"checker":{"type":"StringChecker","multiplicity":"ONE","required":false,"pattern":"[a-z]*"}}}}},"hierarchicalNodes":[{"nodeName":"especes","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"projet","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"pem","componentKey":"color_unit","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["sites","unites","projet","especes","valeurs_qualitatives","type_de_sites"],"order":2,"isRecursive":false},{"nodeName":"themes","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"site_theme_datatype","componentKey":"theme","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["sites","projet","themes","type_de_sites"],"order":9999,"isRecursive":false},{"nodeName":"type_de_fichiers","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"type_de_sites","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[{"nodeName":"sites","componentKey":"zet_chemin_parent","columnToLookUpForRecursive":"zet_chemin_parent","parent":"type_de_sites","children":[],"depends":["type_de_sites"],"order":9999,"isRecursive":true}],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"unites","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"valeurs_qualitatives","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"variables","componentKey":null,"columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":[],"order":9999,"isRecursive":false},{"nodeName":"variables_et_unites_par_types_de_donnees","componentKey":"variable","columnToLookUpForRecursive":null,"parent":null,"children":[],"depends":["unites","variables"],"order":9999,"isRecursive":false}],"requiredAuthorizationsAttributes":["themes","variables","especes","site_theme_datatype","type_de_sites","unites","projet","valeurs_qualitatives","variables_et_unites_par_types_de_donnees","type_de_fichiers","pem","sites"],"hiddenData":["type_de_fichiers"]},"configFile":null,"allDataNames":["especes","projet","sites","themes","type_de_sites","site_theme_datatype","type_de_fichiers","unites","valeurs_qualitatives","variables","variables_et_unites_par_types_de_donnees","pem"]},"time":[2025,1,27,14,35,20,404192189],"type":"REACTIVE_RESULT"}
+{"result":1.0,"time":[2025,1,27,14,35,20,404545450],"type":"REACTIVE_PROGRESS"}
-- 
GitLab