diff --git a/ChangeLog b/ChangeLog
index 87ef4b7..0153d19 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,8 @@
 1.0.8-SNAPSHOT
 
 - handle resource pid and resolve resources (virtual corpora) using map (#62)
+- handle empty description.
+
 
 1.0.7-SNAPSHOT
 
diff --git a/src/main/java/de/ids_mannheim/korap/sru/KorapEndpointDescription.java b/src/main/java/de/ids_mannheim/korap/sru/KorapEndpointDescription.java
index d1c5fb6..c79d9d2 100644
--- a/src/main/java/de/ids_mannheim/korap/sru/KorapEndpointDescription.java
+++ b/src/main/java/de/ids_mannheim/korap/sru/KorapEndpointDescription.java
@@ -118,8 +118,6 @@
 
         List<ResourceInfo> resourceList = new ArrayList<ResourceInfo>();
 
-        Map<String, String> description;
-
         KorapResource[] resources;
         try {
             resources = KorapSRU.korapClient.retrieveResources();
@@ -130,8 +128,12 @@
         }
 
         for (KorapResource r : resources) {
-            description = new HashMap<String, String>();
-            description.put("en", r.getDescription());
+        	Map<String, String> description = null;
+        	String rDesc = r.getDescription();
+			if (rDesc != null && !rDesc.isEmpty()) {
+				description = new HashMap<String, String>();
+				description.put("en", r.getDescription());
+			}
 
 			ResourceInfo ri = new ResourceInfo(r.getResourceId(), r.getTitles(),
 					description, null, r.getLandingPage(),
diff --git a/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java b/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
index d04b0f2..91b1a0c 100644
--- a/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
+++ b/src/test/java/de/ids_mannheim/korap/test/KorapSRUTest.java
@@ -373,7 +373,7 @@
                 .getNamedItem("qualifier").getNodeValue());
 
         nodelist = doc.getElementsByTagName("ed:Resource");
-        assertEquals(3, nodelist.getLength());
+        assertEquals(5, nodelist.getLength());
         children = nodelist.item(0).getChildNodes();
         assertEquals(7, children.getLength());
         assertEquals("ed:Title", children.item(0).getNodeName());
@@ -382,6 +382,11 @@
         assertEquals("ed:Languages", children.item(4).getNodeName());
         assertEquals("ed:AvailableDataViews", children.item(5).getNodeName());
         assertEquals("ed:AvailableLayers", children.item(6).getNodeName());
+        
+        // no description
+        children = nodelist.item(3).getChildNodes();
+        assertEquals(6, children.getLength());
+        assertEquals("ed:LandingPageURI", children.item(2).getNodeName());
     }
 
 }
diff --git a/src/test/resources/korap-api-responses/resources.json b/src/test/resources/korap-api-responses/resources.json
index 929572a..72662d5 100644
--- a/src/test/resources/korap-api-responses/resources.json
+++ b/src/test/resources/korap-api-responses/resources.json
@@ -1,65 +1,100 @@
 [
-  {
-    "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
-    "titles": {
-      "de": "Deutsche Wikipedia Artikel 2017",
-      "en": "German Wikipedia Articles 2017"
+    {
+        "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
+        "titles": {
+            "de": "Deutsche Wikipedia Artikel 2017",
+            "en": "German Wikipedia Articles 2017"
+        },
+        "description": "A collection of articles of German Wikipedia from July 1st, 2017.",
+        "languages": ["deu"],
+        "layers": {
+            "1": "opennlp/p",
+            "29": "corenlp/p",
+            "30": "tt/l",
+            "14": "marmot/m",
+            "15": "marmot/p",
+            "31": "tt/p"
+        },
+        "institution": "IDS Mannheim",
+        "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle%3DWPD17",
+        "requiredAccess": "FREE"
     },
-    "description": "A collection of articles of German Wikipedia from July 1st, 2017.",
-    "languages": [
-      "deu"
-    ],
-    "layers": {
-      "1": "opennlp/p",
-      "14": "marmot/m",
-      "15": "marmot/p",
-      "29": "corenlp/p",
-      "30": "tt/l",
-      "31": "tt/p"
+    {
+        "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
+        "titles": {
+            "de": "Deutsche Wikipedia-Diskussionskorpus 2017",
+            "en": "German Wikipedia talk corpus 2017"
+        },
+        "description": "A collection of talk pages of German Wikipedia from July 1st, 2017.",
+        "languages": ["deu"],
+        "layers": {
+            "1": "opennlp/p",
+            "29": "corenlp/p",
+            "30": "tt/l",
+            "14": "marmot/m",
+            "15": "marmot/p",
+            "31": "tt/p"
+        },
+        "institution": "IDS Mannheim",
+        "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle%3DWDD17",
+        "requiredAccess": "FREE"
     },
-    "institution": "IDS Mannheim",
-    "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle=WPD17"
-  },
-  {
-    "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
-    "titles": {
-      "de": "Deutsche Wikipedia-Diskussionskorpus 2017",
-      "en": "German Wikipedia talk corpus 2017"
+    {
+        "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-6EF0-6401-F",
+        "titles": {
+            "de": "Deutsche Wikipedia-Benutzerdiskussionskorpus 2017",
+            "en": "German Wikipedia user talk corpus 2017"
+        },
+        "description": "A collection of user talk pages of German Wikipedia from July 1st, 2017.",
+        "languages": ["deu"],
+        "layers": {
+            "1": "opennlp/p",
+            "29": "corenlp/p",
+            "30": "tt/l",
+            "14": "marmot/m",
+            "15": "marmot/p",
+            "31": "tt/p"
+        },
+        "institution": "IDS Mannheim",
+        "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle%3DWUD17",
+        "requiredAccess": "FREE"
     },
-    "description": "A collection of talk pages of German Wikipedia from July 1st, 2017.",
-    "languages": [
-      "deu"
-    ],
-    "layers": {
-      "1": "opennlp/p",
-      "14": "marmot/m",
-      "15": "marmot/p",
-      "29": "corenlp/p",
-      "30": "tt/l",
-      "31": "tt/p"
+    {
+        "resourceId": "Romane",
+        "titles": {
+            "de": "Romane",
+            "en": "Roman"
+        },
+        "languages": ["deu"],
+        "layers": {
+            "1": "opennlp/p",
+            "29": "corenlp/p",
+            "30": "tt/l",
+            "14": "marmot/m",
+            "15": "marmot/p",
+            "31": "tt/p"
+        },
+        "institution": "IDS Mannheim",
+        "landingPage": "https://korap.ids-mannheim.de?cq=textType+%3D+%2F.*%5BRr%5Doman%2F",
+        "requiredAccess": "ALL"
     },
-    "institution": "IDS Mannheim",
-    "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle=WDD17"
-  },
-  {
-    "resourceId": "http://hdl.handle.net/10932/00-03B6-558F-6EF0-6401-F",
-    "titles": {
-      "de": "Deutsche Wikipedia-Benutzerdiskussionskorpus 2017",
-      "en": "German Wikipedia user talk corpus 2017"
-    },
-    "description": "A collection of user talk pages of German Wikipedia from July 1st, 2017.",
-    "languages": [
-      "deu"
-    ],
-    "layers": {
-      "1": "opennlp/p",
-      "14": "marmot/m",
-      "15": "marmot/p",
-      "29": "corenlp/p",
-      "30": "tt/l",
-      "31": "tt/p"
-    },
-    "institution": "IDS Mannheim",
-    "landingPage": "https://korap.ids-mannheim.de?cq=corpusSigle=WUD17"
-  }
-]
\ No newline at end of file
+    {
+        "resourceId": "Literatur",
+        "titles": {
+            "de": "Literatur",
+            "en": "Literature"
+        },
+        "languages": ["deu"],
+        "layers": {
+            "1": "opennlp/p",
+            "29": "corenlp/p",
+            "30": "tt/l",
+            "14": "marmot/m",
+            "15": "marmot/p",
+            "31": "tt/p"
+        },
+        "institution": "IDS Mannheim",
+        "landingPage": "https://korap.ids-mannheim.de?cq=textType+%3D+%2F%28.*%5BRr%5Doman%7C%5BBb%5Diographie%7C%5BDd%5Drama%7C%5BSs%5Dschauspiel%29%2F",
+        "requiredAccess": "ALL"
+    }
+]
