diff --git a/pom.xml b/pom.xml
index 8fcd0df7275c73b385711e8267a1665edd1d00f1..8b1f91f9cec4043fa9001f82dfc216ed707af5b9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,7 +88,7 @@
 		<junit.version>4.13.2</junit.version>
 		<log4j.version>2.22.1</log4j.version>
 		<lombok.version>1.18.30</lombok.version>
-		<apache.poi.version>5.2.5</apache.poi.version>
+		<apache.poi.version>5.4.0</apache.poi.version>
 		<checkstyle.config.location>file://${basedir}/config/sun_checks.xml</checkstyle.config.location>
 		<checkstyle.failsOnError>false</checkstyle.failsOnError>
 		<checkstyle.includeResources>false</checkstyle.includeResources>
@@ -175,19 +175,14 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.poi</groupId>
-			<artifactId>poi-ooxml-schemas</artifactId>
-			<version>4.1.2</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>commons-collections4</artifactId>
-			<version>4.4</version>
+			<artifactId>poi-ooxml-lite</artifactId>
+			<version>${apache.poi.version}</version>
 		</dependency>
 		<!-- Dependency for POI, will be missing in sido-verification if not present -->
 		<dependency>
 			<groupId>commons-io</groupId>
 			<artifactId>commons-io</artifactId>
-			<version>2.15.1</version>
+			<version>2.18.0</version>
 		</dependency>
 	</dependencies>
 	</dependencyManagement>
diff --git a/sido-gwt/pom.xml b/sido-gwt/pom.xml
index 20bb956969657db133ec98c4adfe38df9cd64cbb..cdecea17b1dc97bc2487fe54668acc3e35a9fdb8 100644
--- a/sido-gwt/pom.xml
+++ b/sido-gwt/pom.xml
@@ -372,7 +372,7 @@
 		<dependency>
 		    <groupId>com.researchspace</groupId>
 		    <artifactId>dataverse-client-java</artifactId>
-		    <version>1.0.2</version>
+		    <version>1.0.3</version>
 		</dependency>
 		<dependency>
 		    <groupId>org.apache.logging.log4j</groupId>
diff --git a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/dataverseclient/DataverseHandler.java b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/dataverseclient/DataverseHandler.java
index d973da0f87c6f6f82f0dd6a96b4090dd5f5ed24f..b8145f1eaa0e4afe63438ec7a7f9a029ea356621 100644
--- a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/dataverseclient/DataverseHandler.java
+++ b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/dataverseclient/DataverseHandler.java
@@ -319,7 +319,7 @@ public class DataverseHandler implements Runnable {
     private void uploadWorkbookFile(final String doi, final File workbookFile, final String workBookName)
             throws IOException, ReachDataverseException {
         LOGGER.traceEntry(workBookName);
-        LOGGER.info("Uploading to Dataverse: " + workBookName);
+        LOGGER.info("Uploading to Dataverse: {} from {}", workBookName, workbookFile.getAbsolutePath());
         final Identifier identifier = new Identifier();
         // Construct persistent ID
         identifier.setPersistentId("doi:" + doi);
diff --git a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/License.java b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/License.java
new file mode 100644
index 0000000000000000000000000000000000000000..2d0c0e85d7069f2fb97f1008f342bdcc2723bc13
--- /dev/null
+++ b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/License.java
@@ -0,0 +1,13 @@
+package fr.soeretempo.sido.gwt.server.metadata;
+
+import lombok.Data;
+
+/**
+ * License definition for ERDG.
+ */
+@Data
+public class License {
+    private String name;
+    private String iconUri;
+    private String uri;
+}
diff --git a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/Licenses.java b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/Licenses.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e4880e70e57c77a4381f226dbc87969f4709ec8
--- /dev/null
+++ b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/Licenses.java
@@ -0,0 +1,57 @@
+package fr.soeretempo.sido.gwt.server.metadata;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.researchspace.dataverse.entities.DatasetLicense;
+
+import fr.soeretempo.sido.gwt.server.utils.FileUtils;
+import lombok.extern.log4j.Log4j2;
+
+/**
+ * Licenses definitions for ERDG.
+ */
+@Log4j2
+public class Licenses {
+
+    /**
+     * Available licenses.
+     */
+    private static Map<String, DatasetLicense> matches = new HashMap<>();
+
+    /**
+     * Read file.
+     */
+    private static void init() {
+        final ObjectMapper mapper = JsonMapper.builder()
+                .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) //
+                .build();
+        try {
+            final String content = FileUtils.getFileContent(Licenses.class, "licenses.json");
+            matches = mapper.readValue(content, new TypeReference<Map<String, DatasetLicense>>() {
+            });
+        } catch (final IOException e) {
+            LOGGER.fatal("This should never occur as the file must exist.", e);
+        }
+    }
+
+    /**
+     * @param key license key (eg.: LO 2.0)
+     * @return found license or empty
+     */
+    public static Optional<DatasetLicense> get(final String key) {
+        if (matches.isEmpty()) {
+            init();
+        }
+        if (matches.containsKey(key)) {
+            return Optional.of(matches.get(key));
+        }
+        return Optional.empty();
+    }
+}
diff --git a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/MetadataParser.java b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/MetadataParser.java
index b2660a8ea3c48d4f97432a82a0b53570474402c5..414c9c5679bfa03b8b845d381af8952f00ddc55b 100644
--- a/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/MetadataParser.java
+++ b/sido-gwt/src/main/java/fr/soeretempo/sido/gwt/server/metadata/MetadataParser.java
@@ -7,16 +7,11 @@ import java.net.MalformedURLException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URL;
-import java.nio.charset.Charset;
-import java.nio.file.Files;
-import java.nio.file.Paths;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.format.DateTimeParseException;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -843,7 +838,7 @@ public class MetadataParser {
             if (language != null && !language.isEmpty()) {
                 languages.add(language);
             }
-            if (productionPlace != null && !productionPlace.isEmpty()) {
+            if (productionPlace != null && !productionPlace.isEmpty() && !productionPlaces.contains(productionPlace)) {
                 productionPlaces.add(productionPlace);
             }
             parsedLine++;
@@ -937,47 +932,10 @@ public class MetadataParser {
                     .collect(Collectors.joining(","));
             final List<String> licenseShortenings = dataDao.findStringValues(
                     dataset.getId(), license[0], license[1], license[2], workbooks);
-            final List<String> licenseBodies = new ArrayList<>();
-            final Map<String, String> licenseMap = getLicensesMap();
             for (final String shortening : licenseShortenings) {
-                if (licenseMap.containsKey(shortening)) {
-                    licenseBodies.add(licenseMap.get(shortening));
-                } else {
-                    licenseBodies.add(shortening);
-                }
-            }
-            metadataReport.getDatasetFacade().setTermsOfUse(String.join("<br>", licenseBodies));
-        }
-    }
-
-    private Map<String, String> getLicensesMap() {
-        final Map<String, String> licensesMap = new HashMap<>();
-        final String propertiesFileName = "licenses.txt";
-        // For now, licenses are in a common file with en / fr
-        // if (parserLocale.getLanguage().equals(new Locale("fr").getLanguage())) {
-        //     propertiesFileName += "fr.txt";
-        // } else {
-        //     propertiesFileName += "en.txt";
-        // }
-        final URL resource = this.getClass().getResource(propertiesFileName);
-        if (resource == null) {
-            throw new IllegalArgumentException(propertiesFileName + " not found!");
-        }
-        try {
-            final List<String> lines = Files.readAllLines(
-                    Paths.get(resource.toURI()),
-                    Charset.defaultCharset());
-            for (final String line : lines) {
-                if (!line.isBlank()) {
-                    final String[] split = line.split("=", 2);
-                    licensesMap.put(split[0], split[1]);
-                }
+                Licenses.get(shortening).ifPresent(metadataReport.getDatasetFacade()::setLicense);
             }
-        } catch (final IOException | URISyntaxException e) {
-            LOGGER.error(e.getLocalizedMessage());
-            return new HashMap<>();
         }
-        return licensesMap;
     }
 
     private void setTimePeriodCovered(final Dataset dataset, final Map<String, String[]> mappedColumns) {
diff --git a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.json b/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.json
new file mode 100644
index 0000000000000000000000000000000000000000..d8661b6d8455cf44b4cd6826b65f571f0385cf61
--- /dev/null
+++ b/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.json
@@ -0,0 +1,11 @@
+{
+	"LO 2.0": {
+		"name": "etalab 2.0",
+		"uri": "https://spdx.org/licenses/etalab-2.0.html",
+		"iconUri": "https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Logo-licence-ouverte2.svg/25px-Logo-licence-ouverte2.svg.png"
+	},
+	"OdbL": {
+		"name": "ODbL-1.0",
+		"uri": "https://spdx.org/licenses/ODbL-1.0.html"
+	}
+}
\ No newline at end of file
diff --git a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.txt b/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.txt
deleted file mode 100644
index a28c574a66a34138d8ad0c439d74c31abb0c7ef4..0000000000000000000000000000000000000000
--- a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licenses.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-LO 2.0=<img src="https://www.etalab.gouv.fr/wp-content/uploads/2011/10/licence-ouverte-open-licence.gif" alt="Licence Ouverte" height="100"> <a href="https://www.etalab.gouv.fr/licence-ouverte-open-licence" rel="nofollow" target="_blank">Licence Ouverte / Open Licence Version 2.0</a> compatible CC BY 
-OdbL=Available under the Open Database License: <a href="https://opendatacommons.org/licenses/odbl/1.0/">http://opendatacommons.org/licenses/odbl/1.0/</a>. Any rights in individual contents of the database are licensed under the Database Contents License: <a href="https://opendatacommons.org/licenses/dbcl/1.0/">http://opendatacommons.org/licenses/dbcl/1.0/</a>
\ No newline at end of file
diff --git a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesen.txt b/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesen.txt
deleted file mode 100644
index a28c574a66a34138d8ad0c439d74c31abb0c7ef4..0000000000000000000000000000000000000000
--- a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesen.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-LO 2.0=<img src="https://www.etalab.gouv.fr/wp-content/uploads/2011/10/licence-ouverte-open-licence.gif" alt="Licence Ouverte" height="100"> <a href="https://www.etalab.gouv.fr/licence-ouverte-open-licence" rel="nofollow" target="_blank">Licence Ouverte / Open Licence Version 2.0</a> compatible CC BY 
-OdbL=Available under the Open Database License: <a href="https://opendatacommons.org/licenses/odbl/1.0/">http://opendatacommons.org/licenses/odbl/1.0/</a>. Any rights in individual contents of the database are licensed under the Database Contents License: <a href="https://opendatacommons.org/licenses/dbcl/1.0/">http://opendatacommons.org/licenses/dbcl/1.0/</a>
\ No newline at end of file
diff --git a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesfr.txt b/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesfr.txt
deleted file mode 100644
index a28c574a66a34138d8ad0c439d74c31abb0c7ef4..0000000000000000000000000000000000000000
--- a/sido-gwt/src/main/resources/fr/soeretempo/sido/gwt/server/metadata/licensesfr.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-LO 2.0=<img src="https://www.etalab.gouv.fr/wp-content/uploads/2011/10/licence-ouverte-open-licence.gif" alt="Licence Ouverte" height="100"> <a href="https://www.etalab.gouv.fr/licence-ouverte-open-licence" rel="nofollow" target="_blank">Licence Ouverte / Open Licence Version 2.0</a> compatible CC BY 
-OdbL=Available under the Open Database License: <a href="https://opendatacommons.org/licenses/odbl/1.0/">http://opendatacommons.org/licenses/odbl/1.0/</a>. Any rights in individual contents of the database are licensed under the Database Contents License: <a href="https://opendatacommons.org/licenses/dbcl/1.0/">http://opendatacommons.org/licenses/dbcl/1.0/</a>
\ No newline at end of file
diff --git a/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/LicensesTest.java b/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/LicensesTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..fcdc906d16e713ad0622a3e232791ebd5bd080ae
--- /dev/null
+++ b/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/LicensesTest.java
@@ -0,0 +1,21 @@
+package fr.soeretempo.sido.gwt.server.metadata;
+
+import static org.junit.Assert.assertFalse;
+
+import java.util.Optional;
+
+import org.junit.Test;
+
+import com.researchspace.dataverse.entities.DatasetLicense;
+
+/**
+ * Ensure licenses.json is well read.
+ */
+public class LicensesTest {
+
+    @Test
+    public void getLO() {
+        final Optional<DatasetLicense> actual = Licenses.get("LO 2.0");
+        assertFalse(actual.isEmpty());
+    }
+}
diff --git a/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/package-info.java b/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/package-info.java
deleted file mode 100644
index ca0cdf834ac1d4bf5ec6ab2a772a06c0a1008b98..0000000000000000000000000000000000000000
--- a/sido-gwt/src/test/java/fr/soeretempo/sido/gwt/server/metadata/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Contains test classes related to the reading, conversion and processing of metadata.
- */
-package fr.soeretempo.sido.gwt.server.metadata;
diff --git a/verification/pom.xml b/verification/pom.xml
index 487f236c86fe28d0de2b0721d55fdeb95bad37a4..72a7e1023ace591db90da067ee7401c2513adf2a 100644
--- a/verification/pom.xml
+++ b/verification/pom.xml
@@ -69,21 +69,17 @@
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml-schemas</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-        </dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.poi</groupId>
+			<artifactId>poi-ooxml-lite</artifactId>
+		</dependency>
 	</dependencies>
 	<build>
 		<plugins>