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 bd817165647b2ca6fb9d40be432637c2d13e0c9f..9534300ced39e5014a1536e499568c8f3d9e3fff 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHUtilities.java
@@ -596,14 +596,17 @@ public class OAIPMHUtilities {
    * @param setSpec
    * @return
    */
-  public static HeaderType computeTheF______Header(String dateOfCreation, String identifier,
-      String setSpec) {
+  public static HeaderType computeTheF______Header(final String dateOfCreation,
+      final String identifier, final String setSpec) {
 
     HeaderType result = new HeaderType();
 
     result.setIdentifier(identifier);
     result.setDatestamp(dateOfCreation);
 
+    log.debug(
+        "Header (DoC / ID / setSpec): " + dateOfCreation + " / " + identifier + " / " + setSpec);
+
     if (setSpec != null && !setSpec.isEmpty()) {
       result.getSetSpec().add(setSpec);
     }
@@ -611,6 +614,33 @@ public class OAIPMHUtilities {
     return result;
   }
 
+  /**
+   * <p>
+   * Get the setSpec, if given, check for prefix, if not given, use prefix and given ID.
+   * </p>
+   * 
+   * @param theSetSpec
+   * @param theSpecPrefix
+   * @param theID
+   * @return A valid setSpec value for the set.
+   */
+  protected static String getSetSpec(String theSetSpec, String theSpecPrefix, String theID) {
+
+    String result = theSetSpec;
+
+    // Check given setSpec value, add ID if empty.
+    if (result == null || result.isEmpty() || result.equals(theSpecPrefix)) {
+      result = theID;
+    }
+
+    // Then check for prefix, add prefix, if necessary.
+    if (!result.startsWith(theSpecPrefix)) {
+      result = theSpecPrefix + result;
+    }
+
+    return result;
+  }
+
   // **
   // GETTERS & SETTERS
   // **
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 6667b920c479d91489cfad5a50b3ac7a1d8b26cb..7b0a94aad214cd3d1278c1a92b1544efdb60ee59 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDATACITE.java
@@ -138,16 +138,12 @@ public class RecordDelivererDATACITE extends RecordDelivererAbstract {
     log.debug("specField: " + this.specField);
 
     String setSpec = OAIPMHUtilities.fieldLoader(this.jsonObj, this.specField);
-    if (setSpec.isEmpty()) {
-      setSpec = identifier;
-    }
-    if (!setSpec.startsWith(this.specFieldPrefix)) {
-      setSpec = this.specFieldPrefix + setSpec;
-    }
+    String setSpecValue = OAIPMHUtilities.getSetSpec(setSpec, this.specFieldPrefix, identifier);
 
     log.debug("setSpec: " + setSpec);
 
-    HeaderType header = OAIPMHUtilities.computeTheF______Header(datestamp, identifier, setSpec);
+    HeaderType header =
+        OAIPMHUtilities.computeTheF______Header(datestamp, identifier, setSpecValue);
     getRecordType = OAIPMHUtilities.getRecordType(this.setOpenAireRecord(), header);
 
     return getRecordType;
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
index 7d0e55102cf7e8a81718ddaab180bdd92714c78a..ec828f669e986faba5f33e3bf57ca152fd80cd72 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
@@ -93,12 +93,10 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
         }
 
         String setSpec = OAIPMHUtilities.fieldLoader(json, this.specField);
-        if (!setSpec.startsWith(this.specFieldPrefix)) {
-          setSpec += this.specFieldPrefix + setSpec;
-        }
+        String setSpecValue = OAIPMHUtilities.getSetSpec(setSpec, this.specFieldPrefix, identifier);
 
         record.setHeader(
-            OAIPMHUtilities.computeTheF______Header(dateOfCreation, identifier, setSpec));
+            OAIPMHUtilities.computeTheF______Header(dateOfCreation, identifier, setSpecValue));
         record.setMetadata(dublinCoreBuilder.getDC());
       }
 
@@ -120,15 +118,13 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
         String dateOfCreation =
             esResultObject.getSourceAsMap().get(this.dateOfObjectCreation).toString();
 
-        String setSpec =
-            DublinCoreFieldLoader
-                .fillListFromTGWorkValues(esResultObject, TGConstants.RELATIONS_LIST).get(0);
-        if (!setSpec.startsWith(this.specFieldPrefix)) {
-          setSpec += this.specFieldPrefix + setSpec;
-        }
+        String setSpec = DublinCoreFieldLoader
+            .fillListFromTGWorkValues(esResultObject, TGConstants.RELATIONS_LIST).get(0);
+        String setSpecValue = OAIPMHUtilities.getSetSpec(setSpec, this.specFieldPrefix, identifier);
 
         record.setHeader(OAIPMHUtilities.computeTheF______Header(
-            OAIPMHUtilities.convertDateFormat(dateOfCreation).toString(), identifier, setSpec));
+            OAIPMHUtilities.convertDateFormat(dateOfCreation).toString(), identifier,
+            setSpecValue));
         record.setMetadata(dublinCoreBuilder.getDC());
       }
 
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 1ab2a8687cbb540f9e3b43cae81d20fcf641b096..0530c9e489079b7778042e0b7dd49277b2ceeaf1 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -22,7 +22,6 @@ import org.elasticsearch.search.SearchHit;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
 import org.json.JSONObject;
-import info.textgrid.middleware.oaipmh.GetRecordType;
 import info.textgrid.middleware.oaipmh.HeaderType;
 import info.textgrid.middleware.oaipmh.ListRecordsType;
 import info.textgrid.middleware.oaipmh.MetadataType;
@@ -249,19 +248,10 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
 
             // Get identifier and setSpec field, add setSpec prefix if not already set.
             String identifier = OAIPMHUtilities.fieldLoader(json, this.identifierField);
-            String setSpec = set;
-            if (setSpec == null || setSpec.isEmpty()) {
-              setSpec = OAIPMHUtilities.fieldLoader(json, this.specField);
-              if (setSpec.isEmpty()) {
-                setSpec = identifier;
-              }
-            }
-            if (!setSpec.startsWith(this.specFieldPrefix)) {
-              setSpec = this.specFieldPrefix + setSpec;
-            }
+            String setSpec = OAIPMHUtilities.getSetSpec(set, this.specFieldPrefix, identifier);
 
             log.debug("identifier (dhrep): " + identifier);
-            log.debug("setSpec: " + setSpec);
+            log.debug("setSpec: " + set);
 
             try {
               dublinCoreBuilder = putContentIntoDCFieldListsDH(hit);
@@ -364,20 +354,6 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
         fetchFields(QueryBuilders.boolQuery().must(setQuery), recordList, resumptionToken, set);
       }
 
-      // String[] includes = this.fields;
-      // String[] excludes = Strings.EMPTY_ARRAY;
-      // GetResponse gr =
-      // OAIPMHUtilities.getRcordByIDFromElasticSearch(OAI_ESClient.getEsIndex(), set,
-      // includes, excludes);
-
-      // RecordDelivererDC urgl = new RecordDelivererDC(false, true);
-      // try {
-      // recordList.getRecord().add(urgl.getRecordById(set).getRecord());
-      // } catch (DatatypeConfigurationException e) {
-      // // TODO Auto-generated catch block
-      // e.printStackTrace();
-      // }
-
     } catch (UnsupportedEncodingException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java b/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java
index 7188e84e57130f330b0a92622ef043a5a571fd0e..56cb8ef77b9bc3e3302899455d99a56e8651d876 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/TestOAIPMHUtilities.java
@@ -60,4 +60,45 @@ public class TestOAIPMHUtilities {
     }
   }
 
+  /**
+   * 
+   */
+  @Test
+  public void testGetSetSpec() {
+
+    String id = "hdl:21.T11991/0000-001B-4C00-E";
+
+    // Set is empty.
+    String set = "";
+    String exp = "hdl:21.T11991/0000-001B-4C00-E";
+    String setSpec = OAIPMHUtilities.getSetSpec(set, "hdl:", id);
+
+    if (!setSpec.equals(exp)) {
+      System.out.println(setSpec + " != " + exp);
+      assertTrue(false);
+    }
+
+    // Set is prefix only.
+    set = "hdl:";
+    exp = "hdl:21.T11991/0000-001B-4C00-E";
+    setSpec = OAIPMHUtilities.getSetSpec(set, "hdl:", id);
+
+    if (!setSpec.equals(exp)) {
+      System.out.println(setSpec + " != " + exp);
+      assertTrue(false);
+    }
+
+    // Set is NOT empty.
+    set = "project:53281-3452-34-5";
+    exp = "project:53281-3452-34-5";
+    setSpec = OAIPMHUtilities.getSetSpec(set, "project:", id);
+
+    if (!setSpec.equals(exp)) {
+      System.out.println(setSpec + " != " + exp);
+      assertTrue(false);
+    }
+
+
+  }
+
 }