diff --git a/src/main/java/fr/inra/oresing/rest/OreSiResources.java b/src/main/java/fr/inra/oresing/rest/OreSiResources.java
index c4355841efc0d7a4f03fe8c674ddabb22f52c2c2..1402b6244eb65e4ccd6c026855fc69b5db305315 100644
--- a/src/main/java/fr/inra/oresing/rest/OreSiResources.java
+++ b/src/main/java/fr/inra/oresing/rest/OreSiResources.java
@@ -322,7 +322,7 @@ public class OreSiResources {
                 String variableComponentKey = referenceCheckersByVariableComponentKey.getKey();
                 ReferenceLineChecker referenceLineChecker = (ReferenceLineChecker) referenceCheckersByVariableComponentKey.getValue();
                 for (Map.Entry<Ltree, UUID> ltreeUUIDEntry : referenceLineChecker.getReferenceValues().entrySet()) {
-
+                    // TODO renvois null et je ne vois pas pourquoi... LV
                     final ReferenceValue referenceValue = requiredreferencesValues.getOrDefault(ltreeUUIDEntry.getKey(), List.of())
                             .stream()
                             .findFirst().orElse(null);
diff --git a/ui/src/views/datatype/DataTypeTableView.vue b/ui/src/views/datatype/DataTypeTableView.vue
index 254ec61ee61e574283adb749e52f072039c01612..ec4f3481eb0764c4211ca9be0742f3a6f4becfcb 100644
--- a/ui/src/views/datatype/DataTypeTableView.vue
+++ b/ui/src/views/datatype/DataTypeTableView.vue
@@ -667,6 +667,7 @@ export default class DataTypeTableView extends Vue {
           params
         );
         refvalues = reference.referenceValues[0].values;
+        console.log(refvalues)
       }
       const data = Object.entries(refvalues)
         .map((entry) => ({ colonne: entry[0], valeur: entry[1] }))
diff --git a/ui/src/views/datatype/DataTypesRepositoryView.vue b/ui/src/views/datatype/DataTypesRepositoryView.vue
index 3efe3417751f52730e48e567a57dae73dfeee0f5..5085619716646bf82d10a23c757f0695157c782e 100644
--- a/ui/src/views/datatype/DataTypesRepositoryView.vue
+++ b/ui/src/views/datatype/DataTypesRepositoryView.vue
@@ -51,18 +51,18 @@
             {{
               this.requiredAuthorizationsObject
                 ? Object.entries(this.requiredAuthorizationsObject)
-                    .filter((e) => e[1])
-                    .map(
-                      (e) =>
-                        internationalisationService.getLocaleforPath(
+                  .filter((e) => e[1])
+                  .map(
+                    (e) =>
+                      internationalisationService.getLocaleforPath(
                           application,
                           getAuthorizationScopePath(e[0]),
                           e[0]
-                        ) +
-                        " : " +
-                        e[1]
-                    )
-                    .join(", ")
+                      ) +
+                      " : " +
+                      e[1]
+                  )
+                  .join(", ")
                 : ""
             }}
           </h1>
@@ -199,7 +199,21 @@
                 {{
                   currentDataset[0].periode
                 }}
+                <div v-if="errorsMessages.length" style="margin: 10px">
+                  <div v-for="msg in errorsMessages" v-bind:key="msg">
+                    <b-message
+                        :title="$t('message.data-type-config-error')"
+                        type="is-danger"
+                        has-icon
+                        :aria-close-label="$t('message.close')"
+                        class="mt-4 DataTypesManagementView-message"
+                    >
+                      <span v-html="msg"/>
+                    </b-message>
+                  </div>
+                </div>
               </caption>
+
               <tr>
                 <th align>{{ $t("dataTypesRepository.table-file-data-id") }}</th>
                 <th align>{{ $t("dataTypesRepository.table-file-data-size") }}</th>
@@ -221,7 +235,7 @@
                       :aria-describedby="dataset.id"
                       tabindex="0"
                       @keypress.enter="changeCss(dataset.id)"
-                      >{{ dataset.id.slice(0, 8) }}</a
+                    >{{ dataset.id.slice(0, 8) }}</a
                     >
                   </b-tooltip>
                 </td>
@@ -281,9 +295,10 @@ import { InternationalisationService } from "@/services/InternationalisationServ
 import { LOCAL_STORAGE_LANG } from "@/services/Fetcher";
 import DropDownMenu from "@/components/common/DropDownMenu";
 import moment from "moment";
+import {HttpStatusCodes} from "@/utils/HttpUtils";
 
 @Component({
-  components: { DropDownMenu, CollapsibleTree, PageView, SubMenu },
+  components: {DropDownMenu, CollapsibleTree, PageView, SubMenu},
 })
 export default class DataTypesRepositoryView extends Vue {
   @Prop() applicationName;
@@ -315,6 +330,7 @@ export default class DataTypesRepositoryView extends Vue {
   comment = "";
   currentDataset = null;
   repository = {};
+  errorsMessages = [];
 
   mounted() {
     this.$on("authorizationChanged", this.updateDatasets);
@@ -336,7 +352,8 @@ export default class DataTypesRepositoryView extends Vue {
     this.subMenuPaths = [
       new SubMenuPath(
         this.dataTypeId.toLowerCase(),
-        () => {},
+        () => {
+        },
         () => this.$router.push(prevPath)
       ),
     ];
@@ -522,13 +539,11 @@ export default class DataTypesRepositoryView extends Vue {
   }
 
   parseDate(date) {
-    let date1 = moment(date, ["DD-MM-YYYY", "YYYY-MM-DD"]).toDate();
-    return date1;
+    return moment(date, "DD/MM/YYYY").toDate();
   }
 
   formatDate(date) {
-    let date1 = moment(date).format("DD/MM/YYYY");
-    return date1;
+    return moment(date).format("DD/MM/YYYY");
   }
 
   periodeToString(dataset) {
@@ -559,8 +574,14 @@ export default class DataTypesRepositoryView extends Vue {
         new BinaryFileDataset(
           this.dataTypeId,
           this.selected.requiredAuthorizations,
-          moment(this.startDate).format("YYYY-MM-DD HH:mm:ss"),
-          moment(this.endDate).format("YYYY-MM-DD HH:mm:ss"),
+          /(.{10})T(.{8}).*/
+            .exec(new Date(this.startDate).toISOString())
+            .filter((a, i) => i !== 0)
+            .join(" "),
+          /(.{10})T(.{8}).*/
+            .exec(new Date(this.endDate).toISOString())
+            .filter((a, i) => i !== 0)
+            .join(" "),
           this.comment
         ),
         false
@@ -571,12 +592,12 @@ export default class DataTypesRepositoryView extends Vue {
         this.file,
         fileOrId
       );
-      console.log(fileOrId);
       this.$emit("uploaded", uuid);
     }
   }
 
   async publish(dataset, pusblished) {
+    this.errorsMessages = [];
     dataset.params.published = pusblished;
     let requiredAuthorizations = dataset.params.binaryFiledataset.requiredAuthorizations;
     requiredAuthorizations = Object.keys(requiredAuthorizations).reduce(function (acc, key) {
@@ -587,13 +608,53 @@ export default class DataTypesRepositoryView extends Vue {
     dataset.params.binaryFiledataset.requiredAuthorizations = requiredAuthorizations;
     console.log("binaryFiledataset", dataset.params.binaryFiledataset);
     var fileOrId = new FileOrUUID(dataset.id, dataset.params.binaryFiledataset, pusblished);
-    var uuid = await this.dataService.addData(
-      this.applicationName,
-      this.dataTypeId,
-      null,
-      fileOrId
-    );
-    this.$emit("published", uuid.fileId);
+    try {
+      var uuid = await this.dataService.addData(
+        this.applicationName,
+        this.dataTypeId,
+        null,
+        fileOrId
+      );
+      this.$emit("published", uuid.fileId);
+      this.alertService.toastSuccess(this.$t("alert.data-updated"));
+    } catch (error) {
+      this.checkMessageErrors(error);
+    }
+  }
+
+  checkMessageErrors(error) {
+    let message = [];
+    if (error.httpResponseCode === HttpStatusCodes.BAD_REQUEST) {
+      if (error.content != null) {
+        this.errorsList = [];
+        error.content.then((value) => {
+          for (let i = 0; i < value.length; i++) {
+            if (message.length > 0) {
+              if (JSON.stringify(value[i]) !== JSON.stringify(value[i - message.length])) {
+                console.log(message)
+                this.errorsList.push(value[i]);
+              }
+              for (let j = 0; j < message.length; j++) {
+                if (!message.includes(value[i].validationCheckResult.message)) {
+                  message.push(value[i].validationCheckResult.message);
+                }
+              }
+            } else {
+              message.push(value[i].validationCheckResult.message);
+              this.errorsList.push(value[i]);
+            }
+          }
+          console.log(this.errorsList)
+          if (this.errorsList.length !== 0) {
+            this.errorsMessages = this.errorsService.getCsvErrorsMessages(this.errorsList);
+          } else {
+            this.errorsMessages = this.errorsService.getErrorsMessages(error);
+          }
+        });
+      }
+    } else {
+      this.alertService.toastServerError(error);
+    }
   }
 
   selectAuthorization(key, event) {
@@ -685,7 +746,7 @@ export default class DataTypesRepositoryView extends Vue {
       var previousKeySplit = currentPath ? currentPath.split(".") : [];
       var keys = referenceValue.hierarchicalKey.split(".");
       var references = referenceValue.hierarchicalReference.split(".");
-      if (previousKeySplit.length == keys.length) {
+      if (previousKeySplit.length === keys.length) {
         continue;
       }
       for (let i = 0; i < previousKeySplit.length; i++) {
@@ -707,7 +768,7 @@ export default class DataTypesRepositoryView extends Vue {
       }
       var completeLocalName =
         typeof currentCompleteLocalName === "undefined" ? "" : currentCompleteLocalName;
-      completeLocalName = completeLocalName + (completeLocalName == "" ? "" : ",") + localName;
+      completeLocalName = completeLocalName + (completeLocalName === "" ? "" : ",") + localName;
       let authPartition = returnValues[key] || {
         key,
         reference,
@@ -725,7 +786,7 @@ export default class DataTypesRepositoryView extends Vue {
       let referenceValueLeaf = auth.referenceValues?.[0];
       if (
         auth.referenceValues.length <= 1 &&
-        referenceValueLeaf.hierarchicalKey == auth.currentPath
+        referenceValueLeaf.hierarchicalKey === auth.currentPath
       ) {
         returnValues[returnValuesKey] = {
           ...auth,