diff --git a/Changes b/Changes
index 76170f3..10dc286 100644
--- a/Changes
+++ b/Changes
@@ -18,7 +18,10 @@
   - Added statisticsRewriteHandler and queryContextRewrite, 
   - changed file locations to the data folder, 
   - removed unused beans (cacheManager, sqliteDataSource)
-- Fix landingPage in the free resource web-service.  
+- Fix landingPage in the free resource web-service (#799) 
+- Add pid for resource and use it as resourceId when available #798
+- Changed institution to IDS Mannheim.
+
 
 # version 0.76
 
diff --git a/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java b/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
index 777f511..17b4546 100644
--- a/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
+++ b/src/main/java/de/ids_mannheim/korap/annotation/FreeResourceParser.java
@@ -60,6 +60,7 @@
                 Resource r = resourceDao.retrieveResource(resourceId);
                 if (r == null) {
                     resourceDao.createResource(resource.at("/id").asText(),
+                    		resource.at("/pid").asText(),
                             resource.at("/de_title").asText(),
                             resource.at("/en_title").asText(),
                             resource.at("/en_description").asText(), 
@@ -68,7 +69,8 @@
                             resource.at("/corpus_query").asText());
                 }
                 else {
-                	resourceDao.updateResource(resource.at("/id").asText(),
+                	resourceDao.updateResource(r,
+                			resource.at("/pid").asText(),
                             resource.at("/de_title").asText(),
                             resource.at("/en_title").asText(),
                             resource.at("/en_description").asText(), 
diff --git a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
index 5655980..94dd5b2 100644
--- a/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
+++ b/src/main/java/de/ids_mannheim/korap/dao/ResourceDao.java
@@ -67,7 +67,7 @@
     }
 
     @Transactional
-    public void createResource (String id, String germanTitle,
+    public void createResource (String id, String pid, String germanTitle,
             String englishTitle, String englishDescription,
             Set<AnnotationLayer> layers, String institution, 
             String corpusQuery) throws KustvaktException {
@@ -75,23 +75,29 @@
         ParameterChecker.checkStringValue(englishTitle, "en_title");
         ParameterChecker.checkStringValue(germanTitle, "de_title");
 
-        Resource r = new Resource(id, germanTitle, englishTitle,
+        Resource r = new Resource(id, pid, germanTitle, englishTitle,
                 englishDescription, layers, institution, corpusQuery);
         entityManager.persist(r);
 
     }
     
     @Transactional
-    public void updateResource (String id, String germanTitle,
+    public void updateResource (Resource r, String pid, String germanTitle,
             String englishTitle, String englishDescription,
             Set<AnnotationLayer> layers, String institution, 
             String corpusQuery) throws KustvaktException {
-        ParameterChecker.checkStringValue(id, "id");
+        ParameterChecker.checkObjectValue(layers, "layers");
         ParameterChecker.checkStringValue(englishTitle, "en_title");
         ParameterChecker.checkStringValue(germanTitle, "de_title");
 
-        Resource r = new Resource(id, germanTitle, englishTitle,
-                englishDescription, layers, institution, corpusQuery);
+        r.setCorpusQuery(corpusQuery);
+        r.setEnglishDescription(englishDescription);
+        r.setEnglishTitle(englishTitle);
+        r.setGermanTitle(germanTitle);
+        r.setInstitution(institution);
+        r.setLayers(layers);
+        r.setPid(pid);
+        
         entityManager.merge(r);
 
     }
diff --git a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
index c1a207f..efbc619 100644
--- a/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
+++ b/src/main/java/de/ids_mannheim/korap/dto/converter/ResourceConverter.java
@@ -31,7 +31,14 @@
         for (Resource r : resources) {
             dto = new ResourceDto();
             dto.setDescription(r.getEnglishDescription());
-            dto.setResourceId(r.getId());
+            
+            String pid = r.getPid();
+            if (pid !=null && !pid.isEmpty()) {
+            	dto.setResourceId(pid);
+            }
+            else {
+            	dto.setResourceId(r.getId());
+            }
             dto.setLanguages(new String[] { "deu" });
 
             titles = new HashMap<String, String>();
diff --git a/src/main/java/de/ids_mannheim/korap/entity/Resource.java b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
index 4e9906b..98c7fa5 100644
--- a/src/main/java/de/ids_mannheim/korap/entity/Resource.java
+++ b/src/main/java/de/ids_mannheim/korap/entity/Resource.java
@@ -27,9 +27,13 @@
 @Table(name = "resource")
 public class Resource {
 
+	// required
     @Id
     private String id;
+    
+    private String pid;
 
+    // one title is required
     @Column(name = "de_title")
     private String germanTitle;
 
@@ -39,21 +43,25 @@
     @Column(name = "en_description")
     private String englishDescription;
     
+    // required
     @Column(name = "corpus_query")
     private String corpusQuery;
     
     private String institution;
-
-    @ManyToMany(fetch = FetchType.EAGER)
-    @JoinTable(name = "resource_layer", joinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "layer_id", referencedColumnName = "id"))
+    
+    // required
+	@ManyToMany(fetch = FetchType.EAGER)
+	@JoinTable(name = "resource_layer", joinColumns = @JoinColumn(name = "resource_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "layer_id", referencedColumnName = "id"))
     private Set<AnnotationLayer> layers;
 
     public Resource () {}
 
-    public Resource (String id, String germanTitle, String englishTitle,
-                     String englishDescription, Set<AnnotationLayer> layers,
-                     String institution, String corpusQuery) {
+	public Resource (String id, String pid, String germanTitle,
+					 String englishTitle, String englishDescription,
+					 Set<AnnotationLayer> layers, String institution,
+					 String corpusQuery) {
         this.id = id;
+        this.pid = pid;
         this.germanTitle = germanTitle;
         this.englishTitle = englishTitle;
         this.englishDescription = englishDescription;
@@ -62,12 +70,12 @@
         this.institution=institution;
     }
 
-    @Override
-    public String toString () {
-        return "id=" + id + ", germanTitle=" + germanTitle + ", englishTitle="
-                + englishTitle + ", description=" + englishDescription
-                + ", layers= " + layers + ", institution=" + institution
-                + ", corpusQuery=" + corpusQuery;
-    }
+	@Override
+	public String toString () {
+		return "id=" + id + "pid=" + pid + ", germanTitle=" + germanTitle
+				+ ", englishTitle=" + englishTitle + ", description="
+				+ englishDescription + ", layers= " + layers + ", institution="
+				+ institution + ", corpusQuery=" + corpusQuery;
+	}
 
 }
diff --git a/src/main/resources/db/sqlite/V4.1__resource_alteration.sql b/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
index 20a9aa3..64844bf 100644
--- a/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
+++ b/src/main/resources/db/sqlite/V4.1__resource_alteration.sql
@@ -2,4 +2,7 @@
 ADD COLUMN institution VARCHAR(100) DEFAULT NULL;
 
 ALTER TABLE resource 
-ADD COLUMN corpus_query VARCHAR(500) DEFAULT NULL;
\ No newline at end of file
+ADD COLUMN corpus_query VARCHAR(500) DEFAULT NULL;
+
+ALTER TABLE resource 
+ADD COLUMN pid VARCHAR(500) DEFAULT NULL;
\ No newline at end of file
diff --git a/src/main/resources/json/free-resources.json b/src/main/resources/json/free-resources.json
index 95ee585..10320f2 100644
--- a/src/main/resources/json/free-resources.json
+++ b/src/main/resources/json/free-resources.json
@@ -1,5 +1,6 @@
 [{
     "id": "WPD17",
+    "pid": "http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
     "de_title" : "Deutsche Wikipedia Artikel 2017",
     "en_title" : "German Wikipedia Articles 2017",
     "en_description" : "A collection of articles of German Wikipedia from July 1st, 2017.",
@@ -12,10 +13,11 @@
         "tt/p"
     ],
     "corpus_query":"corpusSigle=WPD17",
-    "institution" : "Wikimedia Foundation"
+    "institution" : "IDS Mannheim"
 },
 {
     "id": "WDD17",
+    "pid" : "http://hdl.handle.net/10932/00-03B6-558F-5EA0-6301-B",
     "de_title" : "Deutsche Wikipedia-Diskussionskorpus 2017",
     "en_title" : "German Wikipedia talk corpus 2017",
     "en_description" : "A collection of talk pages of German Wikipedia from July 1st, 2017.",
@@ -28,10 +30,11 @@
         "tt/p"
     ],
     "corpus_query":"corpusSigle=WDD17",
-    "institution" : "Wikimedia Foundation"
+    "institution" : "IDS Mannheim"
 },
 {
     "id": "WUD17",
+    "pid": "http://hdl.handle.net/10932/00-03B6-558F-6EF0-6401-F",
     "de_title" : "Deutsche Wikipedia-Benutzerdiskussionskorpus 2017",
     "en_title" : "German Wikipedia user talk corpus 2017",
     "en_description" : "A collection of user talk pages of German Wikipedia from July 1st, 2017.",
@@ -44,6 +47,6 @@
         "tt/p"
     ],
     "corpus_query":"corpusSigle=WUD17",
-    "institution" : "Wikimedia Foundation"
+    "institution" : "IDS Mannheim"
 }
 ]
\ No newline at end of file
diff --git a/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java b/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
index 99296a1..719a96c 100644
--- a/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
+++ b/src/test/java/de/ids_mannheim/korap/web/controller/FreeResourceControllerTest.java
@@ -14,24 +14,25 @@
 @ContextConfiguration("classpath:test-resource-config.xml")
 public class FreeResourceControllerTest extends SpringJerseyTest {
 
-    @Test
-    public void testResource () throws KustvaktException {
-        Response response = target().path(API_VERSION).path("resource")
-                .request().get();
-        String entity = response.readEntity(String.class);
-        JsonNode n = JsonUtils.readTree(entity);
-        assertEquals(3, n.size());
+	@Test
+	public void testResource () throws KustvaktException {
+		Response response = target().path(API_VERSION).path("resource")
+				.request().get();
+		String entity = response.readEntity(String.class);
+		JsonNode n = JsonUtils.readTree(entity);
+		assertEquals(3, n.size());
 
-        n = n.get(0);
-        assertEquals(n.at("/resourceId").asText(), "WPD17");
-        assertEquals(n.at("/titles/de").asText(), 
-                "Deutsche Wikipedia Artikel 2017");
-        assertEquals(n.at("/titles/en").asText(), 
-                "German Wikipedia Articles 2017");
-        assertEquals(1, n.at("/languages").size());
-        assertEquals(6, n.at("/layers").size());
-        assertEquals("Wikimedia Foundation", n.at("/institution").asText());
-        assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17", 
-                n.at("/landingPage").asText());
-    }
+		n = n.get(0);
+		assertEquals("http://hdl.handle.net/10932/00-03B6-558F-4E10-6201-1",
+				n.at("/resourceId").asText());
+		assertEquals(n.at("/titles/de").asText(),
+				"Deutsche Wikipedia Artikel 2017");
+		assertEquals(n.at("/titles/en").asText(),
+				"German Wikipedia Articles 2017");
+		assertEquals(1, n.at("/languages").size());
+		assertEquals(6, n.at("/layers").size());
+		assertEquals("IDS Mannheim", n.at("/institution").asText());
+		assertEquals("https://korap.ids-mannheim.de?cq=corpusSigle=WPD17",
+				n.at("/landingPage").asText());
+	}
 }
