diff --git a/src/test/resources/data/foret/multiyaml/configuration.yaml b/src/test/resources/data/foret/multiyaml/configuration.yaml
index 0b6ba88572ac9f43490140297f8abcb85361b8ad..e05d84efad45336610cffd445fb21e5f21fc9b2b 100644
--- a/src/test/resources/data/foret/multiyaml/configuration.yaml
+++ b/src/test/resources/data/foret/multiyaml/configuration.yaml
@@ -225,455 +225,4 @@ dataTypes:
         - header: Time
           boundTo:
             variable: date
-            component: time
-    internationalizationName:
-      fr: Tension de l'eau infra-journalière
-      en: Infra-daily tension water
-    repository:
-      toto: test
-    template:
-      SMP_([0-9]*)_([0-9]*):
-        variables:
-          - variable
-          - profondeur
-          - répétition
-        boundToComponent : value
-        dataGroups:
-          SMP:
-            label: "variables"
-            data:
-              - ${variable}
-        data:
-          ${variable}:
-            components:
-              variable:
-                defaultValue: return "SMP"
-                checker:
-                  name: Reference
-                  params:
-                    refType: variables
-                    required: true
-                    codify: true
-              value:
-                checker:
-                  name: Float
-                  params:
-                    required: false
-              unit:
-                defaultValue: return "kilopascal"
-                checker:
-                  name: Reference
-                  params:
-                    refType: unites
-                    required: true
-                    codify: true
-              profondeur:
-                defaultValue: return "${profondeur}"
-                checker:
-                  name: Float
-                  params:
-                    required: false
-              repetition:
-                defaultValue: return "${répétition}"
-                checker:
-                  name: Integer
-                  params:
-                    required: false
-    authorization:
-      authorizationScopes:
-        localization:
-          variable: localization
-          component: zones_etudes
-      timeScope:
-        variable: date
-        component: datetime
-      dataGroups:
-        informations:
-          label: "Informations"
-          data:
-          - informations
-        referentiel:
-          label: "Référentiel"
-          data:
-            - localization
-        date:
-          label: "date"
-          data:
-            - date
-    data:
-      localization:
-        components:
-          zones_etudes_parent:
-            checker:
-              name: Reference
-              params:
-                codify: true
-                refType: zones_etudes
-                required: false
-          zones_etudes:
-            checker:
-              name: Reference
-              params:
-                groovy: >
-                  String parent = datumByVariableAndComponent.localization.zones_etudes_parent;
-                  String nom = datumByVariableAndComponent.localization.zones_etudes;
-                  String hierarchicalKey = ""; 
-                  if ("".equals(nom)){
-                    hierarchicalKey = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(parent);
-                  }else{
-                    parent = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(parent)
-                    nom = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(nom)
-                    hierarchicalKey = String.format("%s.%s__%s", parent, parent, nom)
-                  }
-                  
-                  return references
-                  .find{it.key.equals("zones_etudes")}.value
-                  .find {it.hierarchicalKey.equals(hierarchicalKey)} .hierarchicalKey
-                references: zones_etudes
-                codify: true
-                refType: zones_etudes
-                required: true
-      informations:
-        components:
-          thematic:
-            defaultValue: return "climat du sol"
-            checker:
-              name: Reference
-              params:
-                refType: themes
-                codify: true
-          frequency:
-            checker:
-              name: RegularExpression
-              params:
-                pattern: infrajournalier
-                required: true
-                codify: true
-          start date:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          end date:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          comment: null
-          profondeur max:
-            checker:
-              name: Float
-              params:
-                required: true
-          nombre de repetition max:
-            checker:
-              name: Integer
-              params:
-                required: true
-      date:
-        components:
-          day:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          time:
-            checker:
-              name: Date
-              params:
-                pattern: HH:mm
-          datetime:
-            defaultValue: >
-              return datumByVariableAndComponent.get("date").get("day") +" " +datumByVariableAndComponent.get("date").get("time")+ ":00"
-            checker:
-              name: Date
-              params:
-                pattern: "dd/MM/yyyy HH:mm:ss"
-                duration: "1 MINUTES"
-    format:
-      constants:
-        - rowNumber: 1
-          columnNumber: 2
-          boundTo:
-            variable: localization
-            component: zones_etudes_parent
-          exportHeader: zones_etudes_parent
-        - rowNumber: 1
-          columnNumber: 3
-          boundTo:
-            variable: localization
-            component: zones_etudes
-          exportHeader: zones_etudes
-        - rowNumber: 3
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: frequency
-          exportHeader: frequency
-        - rowNumber: 4
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: start date
-          exportHeader: start date
-        - rowNumber: 5
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: end date
-          exportHeader: end date
-        - rowNumber: 6
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: comment
-          exportHeader: comment
-        - rowNumber: 7
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component:  "profondeur max"
-          exportHeader: "profondeur max"
-        - rowNumber: 8
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: "nombre de repetition max"
-          exportHeader: "nombre de repetition max"
-      headerLine: 10
-      firstRowLine: 13
-      columns:
-        - header: Date
-          boundTo:
-            variable: date
-            component: day
-        - header: Time
-          boundTo:
-            variable: date
-            component: time
-  gwd_infraj:
-    internationalizationName:
-      fr: Profondeur de la nappe infra-journalière
-      en: Infra-daily depth of the groundwater
-    repository:
-      toto: test
-    template:
-      GWD_([0-9]*)_([0-9]*):
-        variables:
-          - variable
-          - profondeur
-          - répétition
-        boundToComponent : value
-        dataGroups:
-          GWD:
-            label: "variables"
-            data:
-              - ${variable}
-        data:
-          ${variable}:
-            components:
-              variable:
-                defaultValue: return "GWD"
-                checker:
-                  name: Reference
-                  params:
-                    refType: variables
-                    required: true
-                    codify: true
-              value:
-                checker:
-                  name: Float
-                  params:
-                    required: false
-              unit:
-                defaultValue: return "degre celcius"
-                checker:
-                  name: Reference
-                  params:
-                    refType: unites
-                    required: true
-                    codify: true
-              profondeur:
-                defaultValue: return "${profondeur}"
-                checker:
-                  name: Float
-                  params:
-                    required: false
-              repetition:
-                defaultValue: return "${répétition}"
-                checker:
-                  name: Integer
-                  params:
-                    required: false
-    authorization:
-      authorizationScopes:
-        localization:
-          variable: localization
-          component: zones_etudes
-      timeScope:
-        variable: date
-        component: datetime
-      dataGroups:
-        informations:
-          label: "Informations"
-          data:
-          - informations
-        referentiel:
-          label: "Référentiel"
-          data:
-            - localization
-        date:
-          label: "date"
-          data:
-            - date
-    data:
-      localization:
-        components:
-          zones_etudes_parent:
-            checker:
-              name: Reference
-              params:
-                codify: true
-                refType: zones_etudes
-                required: false
-          zones_etudes:
-            checker:
-              name: Reference
-              params:
-                groovy: >
-                  String parent = datumByVariableAndComponent.localization.zones_etudes_parent;
-                  String nom = datumByVariableAndComponent.localization.zones_etudes;
-                  String hierarchicalKey = ""; 
-                  if ("".equals(nom)){
-                    hierarchicalKey = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(parent);
-                  }else{
-                    parent = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(parent)
-                    nom = fr.inra.oresing.rest.OreSiService.escapeKeyComponent(nom)
-                    hierarchicalKey = String.format("%s.%s__%s", parent, parent, nom)
-                  }
-                  
-                  return references
-                  .find{it.key.equals("zones_etudes")}.value
-                  .find {it.hierarchicalKey.equals(hierarchicalKey)} .hierarchicalKey
-                references: zones_etudes
-                codify: true
-                refType: zones_etudes
-                required: true
-      informations:
-        components:
-          thematic:
-            defaultValue: return "climat du sol"
-            checker:
-              name: Reference
-              params:
-                refType: themes
-                codify: true
-          frequency:
-            checker:
-              name: RegularExpression
-              params:
-                pattern: infrajournalier
-                required: true
-                codify: true
-          start date:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          end date:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          comment: null
-          profondeur max:
-            checker:
-              name: Float
-              params:
-                required: true
-          nombre de repetition max:
-            checker:
-              name: Integer
-              params:
-                required: true
-      date:
-        components:
-          day:
-            checker:
-              name: Date
-              params:
-                pattern: dd/MM/yyyy
-          time:
-            checker:
-              name: Date
-              params:
-                pattern: HH:mm
-          datetime:
-            defaultValue: >
-              return datumByVariableAndComponent.get("date").get("day") +" " +datumByVariableAndComponent.get("date").get("time")+ ":00"
-            checker:
-              name: Date
-              params:
-                pattern: "dd/MM/yyyy HH:mm:ss"
-                duration: "1 MINUTES"
-    format:
-      constants:
-        - rowNumber: 1
-          columnNumber: 2
-          boundTo:
-            variable: localization
-            component: zones_etudes_parent
-          exportHeader: zones_etudes_parent
-        - rowNumber: 1
-          columnNumber: 3
-          boundTo:
-            variable: localization
-            component: zones_etudes
-          exportHeader: zones_etudes
-        - rowNumber: 3
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: frequency
-          exportHeader: frequency
-        - rowNumber: 4
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: start date
-          exportHeader: start date
-        - rowNumber: 5
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: end date
-          exportHeader: end date
-        - rowNumber: 6
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: comment
-          exportHeader: comment
-        - rowNumber: 7
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component:  "profondeur max"
-          exportHeader: "profondeur max"
-        - rowNumber: 8
-          columnNumber: 2
-          boundTo:
-            variable: informations
-            component: "nombre de repetition max"
-          exportHeader: "nombre de repetition max"
-      headerLine: 10
-      firstRowLine: 13
-      columns:
-        - header: Date
-          boundTo:
-            variable: date
-            component: day
-        - header: Time
-          boundTo:
-            variable: date
-            component: time
\ No newline at end of file
+            component: tim
\ No newline at end of file
diff --git a/src/test/resources/data/foret/multiyaml/multiyaml.zip b/src/test/resources/data/foret/multiyaml/multiyaml.zip
index 7b5fb00fc71904e025e08c53f6d218cf73ffbada..454a52b3462bd9c3e43d0f42e7252914a0cd581e 100644
Binary files a/src/test/resources/data/foret/multiyaml/multiyaml.zip and b/src/test/resources/data/foret/multiyaml/multiyaml.zip differ
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 12ac7cb4e7320ba108cf05c595a65f81e6aabd7b..ae3ffdb40605e16bd76a563cb9dd334e7843e509 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -15,6 +15,8 @@
         "chart.js": "^2.9.4",
         "core-js": "^3.17.1",
         "husky": "^6.0.0",
+        "js-yaml": "^4.1.0",
+        "jszip": "^3.7.1",
         "sortablejs": "^1.14.0",
         "vee-validate": "^3.4.12",
         "vue": "^2.6.14",
@@ -3848,8 +3850,7 @@
     "node_modules/argparse": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
     },
     "node_modules/arr-diff": {
       "version": "4.0.0",
@@ -6044,8 +6045,7 @@
     "node_modules/core-util-is": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "dev": true
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
     },
     "node_modules/cosmiconfig": {
       "version": "5.2.1",
@@ -9871,6 +9871,11 @@
         "node": ">= 4"
       }
     },
+    "node_modules/immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
+    },
     "node_modules/import-cwd": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -10025,8 +10030,7 @@
     "node_modules/inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "node_modules/ini": {
       "version": "2.0.0",
@@ -10717,8 +10721,7 @@
     "node_modules/isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
     },
     "node_modules/isexe": {
       "version": "2.0.0",
@@ -10784,7 +10787,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
       "dependencies": {
         "argparse": "^2.0.1"
       },
@@ -10931,6 +10933,17 @@
         "verror": "1.10.0"
       }
     },
+    "node_modules/jszip": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
+      "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
+      "dependencies": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
+      }
+    },
     "node_modules/killable": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -11002,6 +11015,14 @@
         "node": ">= 0.8.0"
       }
     },
+    "node_modules/lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "dependencies": {
+        "immediate": "~3.0.5"
+      }
+    },
     "node_modules/lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -12933,8 +12954,7 @@
     "node_modules/pako": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-      "dev": true
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
     },
     "node_modules/parallel-transform": {
       "version": "1.2.0",
@@ -13990,8 +14010,7 @@
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
     },
     "node_modules/progress": {
       "version": "2.0.3",
@@ -14319,7 +14338,6 @@
       "version": "2.3.7",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
       "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
       "dependencies": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -14886,8 +14904,7 @@
     "node_modules/safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
     "node_modules/safe-regex": {
       "version": "1.1.0",
@@ -15387,6 +15404,14 @@
       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
       "dev": true
     },
+    "node_modules/set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
     "node_modules/set-value": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -16187,7 +16212,6 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
       "dependencies": {
         "safe-buffer": "~5.1.0"
       }
@@ -17420,8 +17444,7 @@
     "node_modules/util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
     },
     "node_modules/util.promisify": {
       "version": "1.0.0",
@@ -22304,8 +22327,7 @@
     "argparse": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
-      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
-      "dev": true
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
     },
     "arr-diff": {
       "version": "4.0.0",
@@ -24062,8 +24084,7 @@
     "core-util-is": {
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
-      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
-      "dev": true
+      "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
     },
     "cosmiconfig": {
       "version": "5.2.1",
@@ -27052,6 +27073,11 @@
       "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==",
       "dev": true
     },
+    "immediate": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
+      "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
+    },
     "import-cwd": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -27172,8 +27198,7 @@
     "inherits": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
-      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
-      "dev": true
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
     "ini": {
       "version": "2.0.0",
@@ -27668,8 +27693,7 @@
     "isarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-      "dev": true
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
     },
     "isexe": {
       "version": "2.0.0",
@@ -27726,7 +27750,6 @@
       "version": "4.1.0",
       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
       "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
-      "dev": true,
       "requires": {
         "argparse": "^2.0.1"
       }
@@ -27845,6 +27868,17 @@
         "verror": "1.10.0"
       }
     },
+    "jszip": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.7.1.tgz",
+      "integrity": "sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==",
+      "requires": {
+        "lie": "~3.3.0",
+        "pako": "~1.0.2",
+        "readable-stream": "~2.3.6",
+        "set-immediate-shim": "~1.0.1"
+      }
+    },
     "killable": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -27906,6 +27940,14 @@
         "type-check": "~0.3.2"
       }
     },
+    "lie": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
+      "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
+      "requires": {
+        "immediate": "~3.0.5"
+      }
+    },
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -29420,8 +29462,7 @@
     "pako": {
       "version": "1.0.11",
       "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
-      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
-      "dev": true
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="
     },
     "parallel-transform": {
       "version": "1.2.0",
@@ -30317,8 +30358,7 @@
     "process-nextick-args": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
-      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
-      "dev": true
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
     },
     "progress": {
       "version": "2.0.3",
@@ -30595,7 +30635,6 @@
       "version": "2.3.7",
       "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
       "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
-      "dev": true,
       "requires": {
         "core-util-is": "~1.0.0",
         "inherits": "~2.0.3",
@@ -31051,8 +31090,7 @@
     "safe-buffer": {
       "version": "5.1.2",
       "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
-      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
-      "dev": true
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
     },
     "safe-regex": {
       "version": "1.1.0",
@@ -31462,6 +31500,11 @@
       "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
       "dev": true
     },
+    "set-immediate-shim": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz",
+      "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E="
+    },
     "set-value": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -32145,7 +32188,6 @@
       "version": "1.1.1",
       "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
       "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
-      "dev": true,
       "requires": {
         "safe-buffer": "~5.1.0"
       }
@@ -33133,8 +33175,7 @@
     "util-deprecate": {
       "version": "1.0.2",
       "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
-      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
-      "dev": true
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
     },
     "util.promisify": {
       "version": "1.0.0",
@@ -34686,4 +34727,4 @@
       }
     }
   }
-}
\ No newline at end of file
+}
diff --git a/ui/package.json b/ui/package.json
index bf80a685ce366f0a375601ca6e855b4a17677efe..4576dfc4541de1ca956eb6632202970a9e080f55 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -17,6 +17,8 @@
     "chart.js": "^2.9.4",
     "core-js": "^3.17.1",
     "husky": "^6.0.0",
+    "js-yaml": "^4.1.0",
+    "jszip": "^3.7.1",
     "sortablejs": "^1.14.0",
     "vee-validate": "^3.4.12",
     "vue": "^2.6.14",
@@ -59,4 +61,4 @@
       "prettier --list-different"
     ]
   }
-}
\ No newline at end of file
+}
diff --git a/ui/src/views/application/ApplicationCreationView.vue b/ui/src/views/application/ApplicationCreationView.vue
index 00581b88d811925fdea4fbac7006fb62ec76478d..ab438d634f581df8dbf2a8a2137e001fa29aa6f1 100644
--- a/ui/src/views/application/ApplicationCreationView.vue
+++ b/ui/src/views/application/ApplicationCreationView.vue
@@ -44,7 +44,9 @@
                 'is-success': valid,
               }"
             >
-              <b-upload v-model="applicationConfig.file" class="file-label" accept=".yaml, .zip">
+              <b-upload v-model="applicationConfig.file" class="file-label" accept=".yaml, .zip"
+                        @input="loadingFile"
+              >
                 <span class="file-cta">
                   <b-icon class="file-icon" icon="upload"></b-icon>
                   <span class="file-label">{{ $t("applications.chose-config") }}</span>
@@ -52,6 +54,10 @@
                 <span class="file-name" v-if="applicationConfig.file">
                   {{ applicationConfig.file.name }}
                 </span>
+                <span class="file-name" v-if="currentYaml.application">
+                  Version : {{ currentYaml.application.version }}
+                  Name : {{ currentYaml.application.name }}
+                </span>
               </b-upload>
             </b-field>
           </ValidationProvider>
@@ -99,6 +105,9 @@ import { ApplicationService } from "@/services/rest/ApplicationService";
 import { AlertService } from "@/services/AlertService";
 import { ErrorsService } from "@/services/ErrorsService";
 import { HttpStatusCodes } from "@/utils/HttpUtils";
+import JSYaml from "js-yaml";
+var JSZip = require("jszip");
+
 
 @Component({
   components: { PageView, ValidationObserver, ValidationProvider },
@@ -111,7 +120,9 @@ export default class ApplicationCreationView extends Vue {
   applicationConfig = new ApplicationConfig();
   errorsMessages = [];
   comment = "";
-
+  currentYaml="";
+  completeFile = {};
+  JSZip = new JSZip();
   async createApplication() {
     this.errorsMessages = [];
     try {
@@ -157,5 +168,75 @@ export default class ApplicationCreationView extends Vue {
       this.alertService.toastServerError(error);
     }
   }
+  loadingFile(inputfile){
+    var zip = this.JSZip;
+    if(inputfile.type=="application/zip"){
+      zip.loadAsync(inputfile);
+      zip.loadAsync( inputfile /* = file blob */)
+          .then(zipFiles=>this.compile(zipFiles ));
+    }else {
+      inputfile.text().then(this.readFile)
+    }
+  }
+
+  compile(zipFiles){
+    this.currentYaml = {};
+    for (const filePath in zipFiles.files) {
+      this.readNode(filePath, zipFiles.files[filePath])
+    }
+  }
+  readNode(filePath, unzippedFile) {
+    var name = unzippedFile.name
+    if (name.match('.*.yaml')) {
+      this.JSZip.file(name).async('blob').then(node => this.addZipNode(node, name));
+    }
+  }
+  readBlob(file, name){
+    var split = name.split('/');
+    try {
+      var yaml = JSYaml.load(file);
+      var obj = split
+          .reverse()
+          .map(s=>s.replace('.yaml', ''))
+          .reduce((acc, pathName)=>{
+            var obj = {};
+            obj[pathName] = acc
+            return "configuration.yaml"==name?acc:obj
+          }, yaml)
+      this.mergeDeep(obj, this.currentYaml)
+      this.currentYaml = obj
+    }catch (e) {
+      console.log(e)
+    }
+  }
+  isObject(item) {
+    return (item && typeof item === 'object' && !Array.isArray(item));
+  }
+  mergeDeep(target, ...sources) {
+    if (!sources.length) return target;
+    const source = sources.shift();
+
+    if (this.isObject(target) && this.isObject(source)) {
+      for (const key in source) {
+        if (this.isObject(source[key])) {
+          if (!target[key]) Object.assign(target, {[key]: {}});
+          this.mergeDeep(target[key], source[key]);
+        } else {
+          Object.assign(target, {[key]: source[key]});
+        }
+      }
+    }
+  }
+  addZipNode( blob,  name){
+        blob.text().then((file)=>this.readBlob(file, name));
+  }
+  readFile(file){
+    try {
+      var yaml = JSYaml.load(file)
+      this.currentYaml = yaml
+    }    catch (e) {
+      console.log( e);
+    }
+  }
 }
-</script>
+</script>
\ No newline at end of file