diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
index 7d7ea0732a21fd43e012444bed0e4f503fa70f9f..f111ec061235a352089eb1d01159b0bcb7973801 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/DublinCoreFieldLoader.java
@@ -409,7 +409,11 @@ public class DublinCoreFieldLoader {
 		          Map<String, Object> nestedMap2 = null;
 		          for(int i=0; i<requestedField.length; i++) {
 		            if(i<requestedField.length-1 && nestedMap!=null && nestedMap.get(requestedField[i])!=null) {
-		              nestedMap2 = (Map<String, Object>)nestedMap.get(requestedField[i]);
+		            	try {
+		            		nestedMap2 = (Map<String, Object>)nestedMap.get(requestedField[i]);	
+		            	}catch(ClassCastException cce) {
+		            		
+		            	}		              
 		            }            
 		            if(i==requestedField.length-1 &&  
 		            		nestedMap2!=null && nestedMap2.get(requestedField[i])!=null ) {
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
index ff9e3f73714c3179ef000e3e302c8601d7367e3c..4d9e021b390d0b0c527f88bf60a75f163d3544db 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/OAIPMHImpl.java
@@ -15,6 +15,8 @@ import info.textgrid.middleware.oaipmh.ListMetadataFormatsType;
 import info.textgrid.middleware.oaipmh.ListRecordsType;
 import info.textgrid.middleware.oaipmh.ListSetsType;
 import info.textgrid.middleware.oaipmh.OAIPMHType;
+import info.textgrid.middleware.oaipmh.OAIPMHerrorType;
+import info.textgrid.middleware.oaipmh.OAIPMHerrorcodeType;
 import info.textgrid.middleware.oaipmh.ObjectFactory;
 import info.textgrid.middleware.oaipmh.RequestType;
 import info.textgrid.middleware.oaipmh.VerbType;
@@ -312,7 +314,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
    */
   public JAXBElement<OAIPMHType> listSetsRequest(ObjectFactory obf, OAIPMHType oai,
       RequestType request) {
-    System.out.println(this.textgrid);
+
     ListSetsType sl = new ListSetsType();
     JAXBElement<OAIPMHType> oaipmhRoot = obf.createOAIPMH(oai);
     sl = this.setList.setListBuilder();
@@ -400,6 +402,7 @@ public class OAIPMHImpl implements OAIPMHProducer {
       if (request.getMetadataPrefix() != null) {
         if (request.getMetadataPrefix().equals(TGConstants.METADATA_DC_PREFIX)) {
           recListDeliv = this.recordListDC;
+
         } else {
           recListDeliv = this.recordListIDIOM;
         }
@@ -422,7 +425,12 @@ public class OAIPMHImpl implements OAIPMHProducer {
       ListRecordsType listRecords = recListDeliv.getRecords(request.getFrom(), request.getUntil(),
           request.getSet(), request.getResumptionToken());
 
-      if (listRecords != null) {
+      if (listRecords != null ) {
+          if(recordListDC.getResultSize()==0) {
+        	  System.out.println(recordListDC.isFoundItems());
+        	  requestErrors.setError("RecordMatchError", "The combination of the values of the from, until, set and metadataPrefix arguments results in an empty list.");
+        	  oai.getError().add(requestErrors.getError());
+          }
         oai.setListRecords(listRecords);
       }
     }
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 5d0d70636d909b7a77ccfb875d69943f9660282a..e93754a6db6dab4a687a070db7ba3b2a9b4f26b1 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordDelivererDC.java
@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.text.ParseException;
 import java.util.Map;
 
+import javax.swing.plaf.synth.SynthSpinnerUI;
 import javax.xml.datatype.DatatypeConfigurationException;
 import org.apache.commons.logging.LogFactory;
 import org.elasticsearch.action.get.GetRequest;
@@ -145,7 +146,7 @@ public class RecordDelivererDC extends RecordDelivererAbstract {
       }
 
       if (this.textgrid == true && esResultObject.getSourceAsMap().get(this.formatField).equals(this.formatToFilter)) {
-
+    	
     	String[] requestedField = relationToFurtherMetadataObject.split("\\.");
     	
     	Map<String, Object> nestedMap = esResultObject.getSourceAsMap();
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
index a62afe19609d2a17f75bac188d051f98d7913555..fb4d819c276dd22a3903e1f64258ffc3c4ce49c4 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererAbstract.java
@@ -50,7 +50,12 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
             + request.getResumptionToken() + " argument is invalid or expired.");
       }
     }
-
+    
+    // Check if query to ElastisSearch responses with more then zero results
+    if(true) {
+    	
+    }
+    
     // Check params in general.
     List<String> errorValues = new ArrayList<String>();
 
@@ -68,6 +73,8 @@ public abstract class RecordListDelivererAbstract implements RecordListDeliverer
           + "or is missing required arguments: " + errorValues);
     }
 
+    
+
     return result;
   }
 
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 14c1d90f4510e31959f33efb3c2f937c2049fe60..488b04420be440536085c3d8fe375a4c59cbffe5 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/RecordListDelivererDC.java
@@ -6,15 +6,15 @@ import java.net.URLDecoder;
 import java.text.ParseException;
 import java.util.Hashtable;
 import java.util.Map;
+
 import javax.xml.datatype.DatatypeConfigurationException;
+
 import org.apache.commons.logging.LogFactory;
 import org.elasticsearch.action.get.GetRequest;
-import org.elasticsearch.action.get.GetRequestBuilder;
 import org.elasticsearch.action.get.GetResponse;
 import org.elasticsearch.action.search.SearchRequest;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.action.search.SearchScrollRequest;
-import org.elasticsearch.client.Client;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.common.Strings;
@@ -81,7 +81,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
   private String[] typeList;
   private String modifiedValue;
   private static final int lifeTimeResToken = 600;
-
+  private long resultSize;
+  
   static Map<String, Integer> cursorCollector = new Hashtable<String, Integer>();
 
   private int searchResponseSize;
@@ -149,6 +150,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
     SearchResponse scrollResp;
     QueryBuilder recordFilter;
     DublinCoreBuilder dublinCoreBuilder = new DublinCoreBuilder();
+    
     if (this.dariah == true) {
       recordFilter = query;
     } else {
@@ -194,6 +196,8 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
     scrollID = scrollResp.getScrollId();
 
     long completeListSize = scrollResp.getHits().totalHits;
+    setResultSize(completeListSize);
+
     if (completeListSize > 0) {
       setFoundItems(true);
 
@@ -201,11 +205,10 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
 
       for (SearchHit hit : scrollResp.getHits().getHits()) {
         i++;
-
+        
         if (hit != null && hit.getFields() != null) {
           try {
             if (hit.getSourceAsMap().get(this.dateOfObjectCreation) != null) {
-
               String datestamp =
                   hit.getSourceAsMap().get(this.dateOfObjectCreation).toString();
               datestamp = OAIPMHUtillities.convertDateFormat(datestamp).toXMLFormat();
@@ -299,7 +302,7 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
       GetResponse responseWorkValues) {
 
     DublinCoreBuilder result = new DublinCoreBuilder();
-    
+
     result.setContributor(DublinCoreFieldLoader.setContributor(hit, this.contributorList));
     result.setCoverage(DublinCoreFieldLoader.setCoverage(hit, this.coverageList));
     result.setCreator(DublinCoreFieldLoader.setCreator(hit, this.creatorList));
@@ -716,4 +719,12 @@ public class RecordListDelivererDC extends RecordListDelivererAbstract {
     this.oaiEsClient = oaiEsClient;
   }
 
+	public long getResultSize() {
+		return this.resultSize;
+	}
+	
+	public void setResultSize(long resultSize) {	
+		this.resultSize = resultSize;
+	}
+
 }
diff --git a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java
index b74ee6307833f6cfdb5f7fee79f7b491681b8673..7db564dbc6e0434e910a7194287676c28f49dd7b 100644
--- a/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java
+++ b/oaipmh-core/src/main/java/info/textgrid/middleware/SetDeliverer.java
@@ -1,24 +1,17 @@
 package info.textgrid.middleware;
 
-import info.textgrid.middleware.oaipmh.ListSetsType;
-import info.textgrid.middleware.oaipmh.SetType;
-import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes;
-
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.util.Hashtable;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import org.elasticsearch.action.get.GetRequest;
-import org.elasticsearch.action.get.GetRequestBuilder;
 import org.elasticsearch.action.get.GetResponse;
 import org.elasticsearch.action.search.SearchRequest;
-import org.elasticsearch.action.search.SearchRequestBuilder;
 import org.elasticsearch.action.search.SearchResponse;
 import org.elasticsearch.client.RequestOptions;
 import org.elasticsearch.common.Strings;
@@ -30,6 +23,10 @@ import org.elasticsearch.search.aggregations.AggregationBuilders;
 import org.elasticsearch.search.builder.SearchSourceBuilder;
 import org.elasticsearch.search.fetch.subphase.FetchSourceContext;
 
+import info.textgrid.middleware.oaipmh.ListSetsType;
+import info.textgrid.middleware.oaipmh.SetType;
+import info.textgrid.namespaces.middleware.tgcrud.common.TextGridMimetypes;
+
 /**
  *
  */
@@ -52,7 +49,7 @@ public class SetDeliverer {
    * @param textgrid
    * @param dariah
    */
-  public SetDeliverer(boolean textgrid, boolean dariah) {
+  public SetDeliverer(boolean textgrid, boolean dariah) { 
     this.textgrid = textgrid;
     this.dariah = dariah;
   }
@@ -64,40 +61,27 @@ public class SetDeliverer {
 
     ListSetsType setList = new ListSetsType();
     QueryBuilder aggQuery;
-    if (!this.textgrid) {
-    	System.out.println("TEST");
-      aggQuery = QueryBuilders.matchPhraseQuery("format", TextGridMimetypes.EDITION);
+    
+    SearchRequest request = new SearchRequest(OAI_ESClient.getEsIndex());
+    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
+    AggregationBuilder agg = null;
+    if (this.textgrid) {    	
+        agg = AggregationBuilders
+                .terms("project.value.untouched")
+                .field("project.value.untouched")            
+                .size(10000);
     } else {
       aggQuery = QueryBuilders.matchPhraseQuery("descriptiveMetadata.dc:format",
           TextGridMimetypes.DARIAH_COLLECTION);
     }
-    
-    SearchRequest request = new SearchRequest(OAI_ESClient.getEsIndex());
-    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
-    //searchSourceBuilder.query(aggQuery);
-    
-    AggregationBuilder agg = AggregationBuilders
-            .terms("project.value.untouched")
-            .field("project.value.untouched")            
-            .size(10000);
+  
+
     searchSourceBuilder.aggregation(agg);
-    
-    request.source(searchSourceBuilder);
-    
-	/*searchSourceBuilder.storedField(this.formatField);
-    searchSourceBuilder.storedField(this.identifierField);
-    searchSourceBuilder.storedField("project.value");
-    searchSourceBuilder.storedField("project.id");*/
     searchSourceBuilder.size(10000);
+    request.source(searchSourceBuilder);
+    SearchResponse getRecordListItems=null;
     
-    /*SearchRequestBuilder request = OAI_ESClient.getEsClient()
-        .prepareSearch(OAI_ESClient.getEsIndex()).setTypes(OAI_ESClient.getEsType())
-        .setQuery(aggQuery).addField(this.formatField).addField(this.identifierField)
-        .addField("project.value").addField("project.id").setSize(100000);*/
-
-     SearchResponse getRecordListItems=null;
 	try {
-
 		getRecordListItems = OAI_ESClient.getEsClient().search(request, RequestOptions.DEFAULT);
 	} catch (IOException e1) {
 		// TODO Auto-generated catch block
@@ -105,27 +89,28 @@ public class SetDeliverer {
 	}
 
     for (SearchHit hit : getRecordListItems.getHits().getHits()) {
-      
+     
       if (this.dariah == false && hit.getSourceAsMap().get(this.identifierField)
           .toString().startsWith("hdl:")) {
+    	  
         String pid = hit.getFields().get(this.identifierField).getValues().get(0).toString();
         this.identifier.add(pid);
 
       }
       
-      if (this.textgrid == false) {
+      if (this.textgrid == true) {
     	
     	String[] projectFields = new String[] {"project.value", "project.id"};
         String projectName = DublinCoreFieldLoader.fillList(hit, projectFields).get(0);
         String projectID = DublinCoreFieldLoader.fillList(hit, projectFields).get(1);
-        String projectSetSpec = projectName.concat(":").concat(projectID);
-        System.out.println(projectName + ": " + projectSetSpec);
+        //String projectSetSpec = projectName.concat(":").concat(projectID);
         SetDeliverer.setSet.put(projectID, projectName);
       }
     }
-    System.out.println("MAP SIZE: " + setSet.size());
-    if (this.textgrid == false) {
-      Iterator it = setSet.entrySet().iterator();
+    
+    if (this.textgrid == true) {    	
+  	
+      Iterator<?> it = setSet.entrySet().iterator();
       while (it.hasNext()) {
         Map.Entry pair = (Map.Entry) it.next();
         SetType set = new SetType();
@@ -135,7 +120,7 @@ public class SetDeliverer {
       }
     }
 
-    if (this.dariah == false) {
+    if (this.dariah == true) {
       for (String identifierSetSpec : this.identifier) {
         String id = identifierSetSpec;
         try {
diff --git a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
index 5433ddb6832b7b63da43f4e74b383a240125ee7b..e0cbfa6498acaf025e0a906626a287f9bd047959 100644
--- a/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
+++ b/oaipmh-core/src/test/java/info/textgrid/middleware/OaiPmhTest.java
@@ -38,13 +38,13 @@ public class OaiPmhTest {
   private static IdentifierListDelivererDC identifierList = new IdentifierListDelivererDC(true, false);
   private static IdentifierListDelivererIDIOM identifierListIDIOM = new IdentifierListDelivererIDIOM(true, false);
   private MetadataFormatListDeliverer metadataFormatList = new MetadataFormatListDeliverer();
-  private SetDeliverer setListDARIAH = new SetDeliverer(false, true);
+ // private SetDeliverer setListDARIAH = new SetDeliverer(false, true);
   private static SetDeliverer setListTextGrid;
   
   private OAIPMHImpl request = new OAIPMHImpl(
 		  this.rep, OaiPmhTest.record, OaiPmhTest.recordIDIOM, OaiPmhTest.recordList,
 		  OaiPmhTest.recordListIDIOM, this.metadataFormatList,
-		  this.setListDARIAH, OaiPmhTest.identifierList, OaiPmhTest.identifierListIDIOM);
+		  this.setListTextGrid, OaiPmhTest.identifierList, OaiPmhTest.identifierListIDIOM);
 
   /**
    * @throws Exception
@@ -249,7 +249,7 @@ public class OaiPmhTest {
     OaiPmhTest.identifierList.setSearchResponseSize("100");
     System.out.println("Test for the verb \"ListIdentifiers\" with succesfull response");
     JAXBElement<OAIPMHType> p = this.request.getRequest("ListIdentifiers", "", "oai_dc",
-        "", "", "", "");
+        "project:TGPR-ed7c757e-1ead-69d4-7c17-554a3581925c", "", "", "");
     JAXB.marshal(p, System.out);
     System.out.println("-----------------------------------\n");
   }
@@ -355,7 +355,7 @@ public class OaiPmhTest {
    
     System.out.println("Test for the verb \"ListRecords\" with sets with succesfull response");
     JAXBElement<OAIPMHType> p =
-        this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", "");
+        this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-bbac3e50-440c-e763-4749-5540cc8bb6aa", "", "", "");
     JAXB.marshal(p, System.out);
     
     /*String resToken ="";
@@ -447,7 +447,7 @@ public class OaiPmhTest {
     OaiPmhTest.recordList.setSearchResponseSize("100");
 
     JAXBElement<OAIPMHType> r =
-        this.request.getRequest("ListRecords", "", "oai_dc", "", "", "", "");
+        this.request.getRequest("ListRecords", "", "oai_dc", "project:TGPR-ed7c757e-1ead-69d4-7c17-554a3581925c", "", "", "");
     JAXB.marshal(r, System.out);
     System.out.println("-----------------------------------\n");
   }
@@ -483,12 +483,12 @@ public class OaiPmhTest {
    */
   @Test
   @Ignore
-  public void testListSets() throws ParseException {
+  public void testListSets() throws ParseException {	  
 	  
-	  OaiPmhTest.setListTextGrid.setFormatField("format");
-	  OaiPmhTest.setListTextGrid.setFormatToFilter(TextGridMimetypes.EDITION);
-	  OaiPmhTest.setListTextGrid.setIdentifierField("textgridUri");
-	  OaiPmhTest.setListTextGrid.setRepositoryObjectURIPrefix("textgrid:");
+	OaiPmhTest.setListTextGrid.setFormatField("format");
+	OaiPmhTest.setListTextGrid.setFormatToFilter(TextGridMimetypes.EDITION);
+	OaiPmhTest.setListTextGrid.setIdentifierField("textgridUri");
+	OaiPmhTest.setListTextGrid.setRepositoryObjectURIPrefix("textgrid:");
     JAXBElement<OAIPMHType> r = this.request.getRequest("ListSets", "", "", "", "", "", "");
 
     JAXB.marshal(r, System.out);