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());
+	}
 }
