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 ef688acfd700a53bd671f26a9c39d3f830908f04..b588e7dd75fab751d58697ed81688ed72ef611f9 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/IdentifierListDelivererAbstract.java
@@ -210,39 +210,76 @@ public abstract class IdentifierListDelivererAbstract implements IdentifierListD
    */
   public QueryBuilder setOrNot(String set, String from, String until) {
 
+    QueryBuilder query;
     QueryBuilder rangeQuery = QueryBuilders.rangeQuery(this.rangeField).from(from).to(until);
+    // TODO Make format configurable in OAI-PMH config!
     QueryBuilder formatQuery = QueryBuilders.matchPhrasePrefixQuery("format", this.formatToFilter);
-    QueryBuilder query;
+    QueryBuilder setQuery = null;
 
     if (set != null) {
       String queryField = "";
       String valueField = "";
 
-      if (this.dariah == true) {
-        queryField = "descriptiveMetadata.dc:relation";
+      // **
+      // DARIAH
+      // **
+
+      if (this.dariah) {
+        // TODO Make format configurable in OAI-PMH config (add relationField as in
+        // SetListDeliverer class?)!
+        queryField = "administrativeMetadata.dcterms:relation";
         valueField = set;
+
+        // Add record with set metadata in it (to also find root collection metadata in Repository
+        // Search!)
+        // FIXME Put query field into config!
+        if (!set.isEmpty()) {
+          setQuery = QueryBuilders.matchQuery("administrativeMetadata.dcterms:identifier",
+              this.specFieldPrefix + set);
+
+          log.fine("set query: " + setQuery.getName() + " -> " + setQuery.toString());
+        }
       }
 
-      if (this.textgrid == true) {
+      // **
+      // TEXTGRID
+      // **
+
+      else if (this.textgrid) {
         String[] setParts = set.split(":");
         if (setParts[0].equals("project")) {
+          // FIXME Put query field into config!
           queryField = "project.id";
           valueField = setParts[1];
         }
       }
 
       QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery(queryField, valueField);
+
       if (this.dariah) {
         query = matchQuery;
+
+        // "should" means OR here, "must" means AND! So we get: setQuery OR ( rangeQuery AND
+        // matchQuery )! The order of should's do matter here!
+        if (setQuery != null) {
+          QueryBuilder boolQuery = QueryBuilders.boolQuery().must(rangeQuery).must(matchQuery);
+          query = QueryBuilders.boolQuery().should(setQuery).should(boolQuery);
+
+          log.fine("query: " + boolQuery.getName() + " -> " + boolQuery.toString());
+        }
       } else {
         query = QueryBuilders.boolQuery().must(matchQuery).must(formatQuery).must(rangeQuery);
       }
 
-    } else {
-      if (this.dariah == true)
+    }
+
+    // Set == null!
+    else {
+      if (this.dariah) {
         query = rangeQuery;
-      else
+      } else {
         query = QueryBuilders.boolQuery().must(rangeQuery).must(formatQuery);
+      }
     }
 
     return query;
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 3467e0d7a83162d8c8184d824a52c31a7e51a482..c513a91e59c0f9cd1b893d3eb2930c9efac2e444 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
@@ -609,7 +609,7 @@ public class OAIPMHUtilities {
     result.setIdentifier(identifier);
     result.setDatestamp(dateOfCreation);
 
-    log.info(
+    log.finer(
         "Header (DoC / ID / setSpec): " + dateOfCreation + " / " + identifier + " / " + setSpec);
 
     if (setSpec != null && !setSpec.isEmpty()) {
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 2c0793b4b47d3fc66078e6733db9df4c5fdca071..6b0e149b865213836734a1f7884f10edb2063e24 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -275,8 +275,6 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
 
       recordList.setResumptionToken(resTokenForResponse);
 
-      // }
-
     } else
 
     {
@@ -297,6 +295,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
     ListRecordsType recordList = new ListRecordsType();
     QueryBuilder query;
     QueryBuilder rangeQuery = QueryBuilders.rangeQuery(this.rangeField).from(from).to(to);
+    QueryBuilder setQuery = null;
 
     if (set != null) {
       String queryField = "";
@@ -306,29 +305,27 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
       // DARIAH
       // **
 
-      if (this.dariah == true) {
+      if (this.dariah) {
         // FIXME Put query field into config!
         queryField = "administrativeMetadata.dcterms:relation";
         valueField = set;
 
-        // Add record with set metadata in it (to also find collection metadata in Repository
+        // Add record with set metadata in it (to also find root collection metadata in Repository
         // Search!)
-        // FIXME Must be done WITH THE QUERY. We must add it here, since it results in 101 records
-        // if we do add it below!
-
         // FIXME Put query field into config!
-        // if (!set.isEmpty()) {
-        // QueryBuilder setQuery = QueryBuilders
-        // .matchQuery("administrativeMetadata.dcterms:identifier", this.specFieldPrefix + set);
-        // fetchFields(QueryBuilders.boolQuery().must(setQuery), recordList, resumptionToken, set);
-        // }
+        if (!set.isEmpty()) {
+          setQuery = QueryBuilders.matchQuery("administrativeMetadata.dcterms:identifier",
+              this.specFieldPrefix + set);
+
+          log.fine("set query: " + setQuery.getName() + " -> " + setQuery.toString());
+        }
       }
 
       // **
       // TEXTGRID
       // **
 
-      if (this.textgrid == true) {
+      else if (this.textgrid) {
         String[] setParts = set.split(":");
         if (setParts[0].equals("project")) {
           // FIXME Put query field into config!
@@ -339,9 +336,17 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
 
       QueryBuilder matchQuery = QueryBuilders.matchPhraseQuery(queryField, valueField);
       QueryBuilder boolQuery = QueryBuilders.boolQuery().must(rangeQuery).must(matchQuery);
+      // "should" means OR here, "must" means AND! So we get: setQuery OR ( rangeQuery AND
+      // matchQuery )! The order of should's do matter here!
+      if (setQuery != null) {
+        boolQuery = QueryBuilders.boolQuery().should(setQuery).should(boolQuery);
+
+        log.fine("bool query: " + boolQuery.getName() + " -> " + boolQuery.toString());
+      }
 
       query = boolQuery;
     }
+
     // Set == null!
     else {
       query = rangeQuery;