diff --git a/oaipmh-core/pom.xml b/oaipmh-core/pom.xml
index 8c4380788a4364789ab693c55715352ec7c0bfae..4fd393caf0b3cdf43bdf956ccfe9f9e6a29e8494 100644
--- a/oaipmh-core/pom.xml
+++ b/oaipmh-core/pom.xml
@@ -27,11 +27,6 @@
 			<artifactId>httpclients</artifactId>
 			<version>${common.version}</version>
 		</dependency>
-		<dependency>
-			<groupId>info.textgrid.middleware</groupId>
-			<artifactId>ltputils</artifactId>
-			<version>${common.version}</version>
-		</dependency>
 		<dependency>
 			<groupId>info.textgrid.middleware.clients</groupId>
 			<artifactId>textgrid-clients</artifactId>
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
index 8a06ce10ba377dab089918b43dcd209725126eb5..7b0c4411bfeddda92a567b17e50137496cc06a64 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
@@ -123,7 +123,7 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD
   public SearchResponse hitHandling(SearchResponse listFurtherValues, ListIdentifiersType lit,
       String set, String resumptionToken, Map<String, Integer> cursorCollector) {
 
-    long size = listFurtherValues.getHits().totalHits;
+    long size = listFurtherValues.getHits().getTotalHits().value;
     setResultSize(size);
 
     for (SearchHit hit : listFurtherValues.getHits().getHits()) {
@@ -147,7 +147,7 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD
 
     // Check the need for a resumption token!
     ResumptionTokenType responseToken = OaipmhUtilities.getResumptionToken(
-        listFurtherValues.getHits().getTotalHits(), resumptionToken, cursorCollector,
+        listFurtherValues.getHits().getTotalHits().value, resumptionToken, cursorCollector,
         listFurtherValues.getScrollId(), this.searchResponseSize);
     if (responseToken != null) {
       lit.setResumptionToken(responseToken);
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java
index 4b483374e9bedd653d955222f854bec7b2003696..8fe6dfc279e294e4dd6a34e4c610b4fb09c59837 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererIdiom.java
@@ -135,7 +135,7 @@ public class IdentifierListDelivererIdiom extends IdentifierListDelivererAbstrac
 
     String scrollID = scrollResp.getScrollId();
 
-    long completeListSize = scrollResp.getHits().totalHits;
+    long completeListSize = scrollResp.getHits().getTotalHits().value;
 
     log.fine("complete list size: " + completeListSize);
 
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java
index 334fe565fbe3827cf7f662fefdab26889f3f5ac2..e22b06009f4ee6da6d69c2737b68d537febcbf57 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/MetadataFormatListDelivererTG.java
@@ -35,9 +35,8 @@ public class MetadataFormatListDelivererTG extends MetadataFormatListDelivererAb
     FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
 
     GetRequest getRequest =
-        new GetRequest(this.oaiEsClient.getEsIndex(), this.oaiEsClient.getEsType(),
-            id.replace("textgrid:", "")).fetchSourceContext(fetchSourceContext);
-
+        new GetRequest(this.oaiEsClient.getEsIndex(), id.replace("textgrid:", ""))
+            .fetchSourceContext(fetchSourceContext);
     GetResponse tgObject = null;
     try {
       tgObject = this.oaiEsClient.getEsClient().get(getRequest, RequestOptions.DEFAULT);
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java
index 30b0c3d31eb47f1e1027633ae47adc2828aeaf48..effcc0a8760cc94bbec51c81e5d52ac658957494 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhElasticSearchClient.java
@@ -13,16 +13,14 @@ import org.elasticsearch.client.RestHighLevelClient;
  * 
  * @author Maximilian Brodhun, SUB Göttingen
  * @author Stefan E. Funk, SUB Göttingen
- * @version 2022-09-08
+ * @version 2023-09-06
  * @since 2014-01-09
  */
 public class OaipmhElasticSearchClient {
 
   private String url;
   private int[] ports;
-  private String esCluster;
   private String esIndex;
-  private String esType;
   private RestHighLevelClient esClient;
 
   /**
@@ -62,34 +60,6 @@ public class OaipmhElasticSearchClient {
     this.esIndex = esIndex;
   }
 
-  /**
-   * @return esType
-   */
-  public String getEsType() {
-    return this.esType;
-  }
-
-  /**
-   * @param esType
-   */
-  public void setEsType(String esType) {
-    this.esType = esType;
-  }
-
-  /**
-   * @return esCluster
-   */
-  public String getClusterName() {
-    return this.esCluster;
-  }
-
-  /**
-   * @param esCluster
-   */
-  public void setClusterName(String esCluster) {
-    this.esCluster = esCluster;
-  }
-
   /**
    * @return url
    */
@@ -107,7 +77,7 @@ public class OaipmhElasticSearchClient {
   /**
    * @return port
    */
-  public int[] getPort() {
+  public int[] getPorts() {
     return this.ports;
   }
 
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
index 26158b71ddf93d7c1800edb94020b5a3c6bd140d..48bef015b37d43c6dff127ff3e8936caa6294704 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OaipmhUtilities.java
@@ -445,9 +445,8 @@ public class OaipmhUtilities {
     }
 
     // Building the getRequest against the elastic search index.
-    GetRequest getRequest =
-        new GetRequest(theESClient.getEsIndex(), theESClient.getEsType(), idInElasticSearchIndex)
-            .fetchSourceContext(fetchSourceContext);
+    GetRequest getRequest = new GetRequest(theESClient.getEsIndex(), idInElasticSearchIndex)
+        .fetchSourceContext(fetchSourceContext);
 
     log.fine("get request id: " + getRequest.id());
 
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
index 1722a4aabeb56934d3cce7b8468c4e4d1a538b86..7dd1645597d5443d8749560069de2181b4f8bb9c 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDatacite.java
@@ -9,7 +9,6 @@ import org.elasticsearch.action.get.GetResponse;
 import org.elasticsearch.common.Strings;
 import org.json.JSONObject;
 import org.springframework.stereotype.Component;
-import info.textgrid.middleware.common.LTPUtils;
 import info.textgrid.middleware.common.RDFConstants;
 import info.textgrid.middleware.common.TextGridMimetypes;
 import info.textgrid.middleware.oaipmh.ContributorType;
@@ -492,10 +491,10 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
           RelatedIdentifier relatedID = new RelatedIdentifier();
           if (i.startsWith(RDFConstants.HDL_PREFIX)) {
             relatedID.setRelatedIdentifierType(RelatedIdentifierType.HANDLE);
-            relatedID.setValue(LTPUtils.omitHdlPrefix(i));
+            relatedID.setValue(omitHdlPrefix(i));
           } else if (i.startsWith(RDFConstants.DOI_PREFIX)) {
             relatedID.setRelatedIdentifierType(RelatedIdentifierType.DOI);
-            relatedID.setValue(LTPUtils.omitDoiPrefix(i));
+            relatedID.setValue(omitDoiPrefix(i));
           } else if (i.startsWith("http")) {
             relatedID.setRelatedIdentifierType(RelatedIdentifierType.URL);
           }
@@ -685,10 +684,10 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
           AlternateIdentifier alternateID = new AlternateIdentifier();
           if (i.startsWith(RDFConstants.HDL_PREFIX)) {
             alternateID.setAlternateIdentifierType(ID_TYPE_HANDLE);
-            alternateID.setValue(LTPUtils.omitHdlPrefix(i));
+            alternateID.setValue(omitHdlPrefix(i));
           } else if (i.startsWith(RDFConstants.DOI_PREFIX)) {
             alternateID.setAlternateIdentifierType(ID_TYPE_DOI);
-            alternateID.setValue(LTPUtils.omitDoiPrefix(i));
+            alternateID.setValue(omitDoiPrefix(i));
           } else {
             alternateID.setAlternateIdentifierType(ID_TYPE_OTHER);
             alternateID.setValue(i);
@@ -859,7 +858,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
       // Datacite schema validation!
       if (idValue != null && !idValue.isEmpty()) {
         identifier.setIdentifierType(ID_TYPE_HANDLE);
-        identifier.setValue(LTPUtils.omitHdlPrefix(idValue));
+        identifier.setValue(omitHdlPrefix(idValue));
       }
     }
 
@@ -870,7 +869,7 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
     else if (this.dariah) {
       // We set DOI for DH, 'cause we HAVE it! :-D
       identifier.setIdentifierType(ID_TYPE_DOI);
-      identifier.setValue(LTPUtils.omitDoiPrefix(idValue));
+      identifier.setValue(omitDoiPrefix(idValue));
     }
 
     return identifier;
@@ -1009,6 +1008,51 @@ public class RecordDelivererDatacite extends RecordDelivererAbstract {
         .getYear());
   }
 
+  /**
+   * <p>
+   * Removes the "doi:" from the given DOI, if existing.
+   * </p>
+   *
+   * @param theDOI
+   * @return
+   */
+  private static String omitDoiPrefix(final String theDOI) {
+    return omitPrefix(theDOI, RDFConstants.DOI_PREFIX);
+  }
+
+
+  /**
+   * <p>
+   * Removes the "hdl:" from the given PID, if existing.
+   * </p>
+   *
+   * @param theHDL
+   * @return
+   */
+  private static String omitHdlPrefix(final String theHDL) {
+    return omitPrefix(theHDL, RDFConstants.HDL_PREFIX);
+  }
+
+  /**
+   * <p>
+   * Removes a prefix, including the ":" from the beginning of a string.
+   * </p>
+   *
+   * @param theURI
+   * @param thePrefix
+   * @return
+   */
+  private static String omitPrefix(final String theURI, final String thePrefix) {
+
+    String result = theURI;
+
+    if (theURI != null && theURI.startsWith(thePrefix + ":")) {
+      result = theURI.replaceFirst(thePrefix + ":", "");
+    }
+
+    return result;
+  }
+
   // **
   // GETTERS & SETTERS
   // **
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
index a0ee3a71bbbf990c819dad6d7100ea4257855bb6..98b5717171e69e198fe46ad66d3cc757b98ee3ab 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -101,9 +101,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
       String[] includes = this.workFields;
       String[] excludes = Strings.EMPTY_ARRAY;
       FetchSourceContext fetchSourceContext = new FetchSourceContext(true, includes, excludes);
-      GetRequest getRequest =
-          new GetRequest(this.oaiEsClient.getEsIndex(), this.oaiEsClient.getEsType(), identifier)
-              .fetchSourceContext(fetchSourceContext);
+      GetRequest getRequest = new GetRequest(this.oaiEsClient.getEsIndex(), identifier)
+          .fetchSourceContext(fetchSourceContext);
 
       GetResponse responseWorkValues = null;
       try {
@@ -195,7 +194,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
 
     scrollID = scrollResp.getScrollId();
 
-    long completeListSize = scrollResp.getHits().totalHits;
+    long completeListSize = scrollResp.getHits().getTotalHits().value;
     setResultSize(completeListSize);
 
     if (completeListSize > 0) {
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java
index 0e66a0b695a6f351465fa1597923871647f4d27d..ccb89496d230c64d60b230aa8bcc8e4334cccc15 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDatacite.java
@@ -175,31 +175,27 @@ public class RecordListDelivererDatacite extends RecordListDelivererAbstract {
     searchSourceBuilder.size(this.searchResponseSize);
     searchRequest.source(searchSourceBuilder);
 
-    SearchResponse scrollResp = new SearchResponse();
-
-    if (resumptionToken != null) {
-      SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
-      scrollRequest.scroll(TimeValue.timeValueHours(24L));
-
-      try {
+    SearchResponse scrollResp = null;
+    // SearchResponse scrollResp = new SearchResponse(null);
+    try {
+      if (resumptionToken != null) {
+        SearchScrollRequest scrollRequest = new SearchScrollRequest(resumptionToken);
+        scrollRequest.scroll(TimeValue.timeValueHours(24L));
         scrollResp = this.oaiEsClient.getEsClient().scroll(scrollRequest, RequestOptions.DEFAULT);
-      } catch (IOException e) {
-        // TODO Auto-generated catch block
-        e.printStackTrace();
-      }
-    } else {
-      searchRequest.source(searchSourceBuilder);
-      searchRequest.scroll(TimeValue.timeValueHours(24L));
-      try {
+      } else {
+        searchRequest.source(searchSourceBuilder);
+        searchRequest.scroll(TimeValue.timeValueHours(24L));
         scrollResp = this.oaiEsClient.getEsClient().search(searchRequest, RequestOptions.DEFAULT);
-      } catch (IOException e) {
-        // TODO Auto-generated catch block
-        e.printStackTrace();
       }
+    } catch (IOException e) {
+      // TODO Auto-generated catch block
+      e.printStackTrace();
     }
 
+    // TODO Check if scrollResp == null and what to do then!
+
     String scrollID = scrollResp.getScrollId();
-    long completeListSize = scrollResp.getHits().totalHits;
+    long completeListSize = scrollResp.getHits().getTotalHits().value;
     setResultSize(completeListSize);
 
     if (completeListSize > 0) {
@@ -223,6 +219,7 @@ public class RecordListDelivererDatacite extends RecordListDelivererAbstract {
           } else {
             id2add = hit.getId();
           }
+
           uriList.add(id2add);
         }
       }
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java
index 87a9f872409bdff85edf9c8fdfee5bda860563e3..9c492810c6543cd7e435cc29330155394e1637ce 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererIdiom.java
@@ -135,7 +135,7 @@ public class RecordListDelivererIdiom extends RecordListDelivererAbstract {
 
     String scrollID = scrollResp.getScrollId();
 
-    long completeListSize = scrollResp.getHits().totalHits;
+    long completeListSize = scrollResp.getHits().getTotalHits().value;
 
     log.fine("total hits: " + completeListSize);
 
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java
index fa8f5a8af7bfbd8a2053dd25b7542231127d5168..914e687052abd20c94b60c73c3e45da0ad9ac07c 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestDHOaipmhLocally.java
@@ -133,7 +133,6 @@ public class TestDHOaipmhLocally {
     int[] ports = new int[] {9202};
     oaiEsClient = new OaipmhElasticSearchClient("localhost", ports, 100);
     oaiEsClient.setEsIndex("dariah-public");
-    oaiEsClient.setEsType("metadata");
 
     record = new RecordDelivererDC(false, true);
     record.setOaiEsClient(oaiEsClient);
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java
index bb826ba8ba24d1318b844cdbf2b317af221e97c2..932c83aacc299fe28819c96f0cf5fcf92c63e3f5 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/test/TestTGOaipmhLocally.java
@@ -161,7 +161,6 @@ public class TestTGOaipmhLocally {
     int[] ports = new int[] {9202};
     oaiEsClient = new OaipmhElasticSearchClient("localhost", ports, 100);
     oaiEsClient.setEsIndex("textgrid-public");
-    oaiEsClient.setEsType("metadata");
 
     record = new RecordDelivererDC(true, false);
     record.setOaiEsClient(oaiEsClient);
diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
index 416f17ca91253daba6f8a187efefb30ce9ceb342..84711a9f85c22bc7b5e303a2b697e0a999eda91b 100644
--- a/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
+++ b/oaipmh-webapp/src/main/webapp/WEB-INF/beans.xml
@@ -41,7 +41,6 @@
 		<constructor-arg index="2"
 			value="${elasticSearch.itemLimit}" />
 		<property name="esIndex" value="${elasticSearch.index}" />
-		<property name="esType" value="${elasticSearch.type}" />
 	</bean>
 
 	<bean id="NonpublicElasticSearchClient"
@@ -54,7 +53,6 @@
 			value="${elasticSearch.itemLimit}" />
 		<property name="esIndex"
 			value="${elasticSearch.nonpublicIndex}" />
-		<property name="esType" value="${elasticSearch.type}" />
 	</bean>
 
 	<!-- Main class bean -->
diff --git a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties
index 3a4d2e79fa5c752167dcfa76b053433189dfdd82..28c6ebe5011da9c72361fbe5fd35767ff69550fe 100644
--- a/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties
+++ b/oaipmh-webapp/src/main/webapp/WEB-INF/oaipmh.textgrid.properties
@@ -11,7 +11,6 @@ RS_ENDPOINT = https://dev.textgridlab.org/1.0/tgoaipmh
 elasticSearch.url = searchindex-main
 elasticSearch.ports = 9200
 elasticSearch.index = ***
-elasticSearch.type = metadata
 elasticSearch.itemLimit = 100
 # NONPUBLIC index only TextGrid IDIOM queries!
 elasticSearch.nonpublicIndex = ***
diff --git a/pom.xml b/pom.xml
index 47e33b9eafc36a29d2561b886161d74a0b46edb8..2baabc77b14437f18eaf9928c3555bb93325d014 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,10 +13,10 @@
 		<jdk.version>1.8</jdk.version>
 		<antlr-maven-plugin.version>3.2</antlr-maven-plugin.version>
 		<antlr-runtime.version>3.2</antlr-runtime.version>
-		<common.version>4.4.1</common.version>
+		<common.version>5.0.0</common.version>
 		<cxf.version>3.3.13</cxf.version>
 		<cyclonedx-maven-plugin.version>2.7.0</cyclonedx-maven-plugin.version>
-		<elasticsearch.version>6.5.4</elasticsearch.version>
+		<elasticsearch.version>7.9.3</elasticsearch.version>
 		<jaxb2-namespace-prefix.version>1.3</jaxb2-namespace-prefix.version>
 		<jetty-maven-plugin.version>9.4.12.v20180830</jetty-maven-plugin.version>
 		<junit.version>4.13.1</junit.version>
@@ -26,7 +26,7 @@
 		<maven-deploy-plugin.version>2.8.2</maven-deploy-plugin.version>
 		<maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
 		<maven-jaxb2-plugin.version>0.15.2</maven-jaxb2-plugin.version>
-		<mets-mods-mapping.version>2.4.1</mets-mods-mapping.version>
+		<mets-mods-mapping.version>2.4.2</mets-mods-mapping.version>
 		<package-info-maven-plugin.version>1.4.5</package-info-maven-plugin.version>
 		<properties-maven-plugin.version>1.0-alpha-2</properties-maven-plugin.version>
 		<rdf4j-repository-api.version>3.0.2</rdf4j-repository-api.version>