diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/JournalDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/JournalDAOImpl.java
index 4d4d340c0ad82ae6e1c2be98543a82ad19b0cc3f..37a897debce25e528c736736d3e40bed0fb8c4aa 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/JournalDAOImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/JournalDAOImpl.java
@@ -14,7 +14,7 @@ public class JournalDAOImpl implements JournalDAO {
     public void createJournal(Journal journal) {
         // create a new id if we found no id.
         String uuid = UUID.randomUUID().toString();
-        while (existsJournalId(uuid)) {
+        while (JournalUtils.existsId(uuid,"journals")) {
             uuid = UUID.randomUUID().toString();
         }
 
@@ -163,42 +163,6 @@ public class JournalDAOImpl implements JournalDAO {
         connection.close();
     }
 
-    /**
-     * Checks if uuid ist used
-     *
-     * @param journalId uuid
-     * @return true if free
-     */
-    public boolean existsJournalId(String journalId) {
-
-        // establish connection
-        MysqlConnect connection = new MysqlConnect();
-        connection.connect();
-
-        // build and execute request
-        String request = "SELECT COUNT(*) > 0 AS `exists` FROM journals WHERE id = ?;";
-        VereinfachtesResultSet rs = connection.issueSelectStatement(request, journalId);
-
-        if (rs.next()) {
-            // save the response
-            int count = rs.getInt("exists");
-
-            // close connection
-            connection.close();
-
-            // return true if we found the id
-            if (count < 1) {
-                return false;
-            } else {
-                return true;
-            }
-        }
-
-        // something happened
-        return true;
-
-    }
-
     /**
      * extracts a journal from VereinfachtesResultSet
      *
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Link.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Link.java
new file mode 100644
index 0000000000000000000000000000000000000000..2a4b7e63cb02c70f5f58bfe78f519e5d4b2298da
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/Link.java
@@ -0,0 +1,61 @@
+package unipotsdam.gf.modules.journal.model;
+
+public class Link {
+
+    String id;
+    String projectDescription;
+    String name;
+    String link;
+
+    public Link() {
+    }
+
+    public Link(String id, String projectDescription, String name, String link) {
+        this.id = id;
+        this.projectDescription = projectDescription;
+        this.name = name;
+        this.link = link;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getProjectDescription() {
+        return projectDescription;
+    }
+
+    public void setProjectDescription(String projectDescription) {
+        this.projectDescription = projectDescription;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getLink() {
+        return link;
+    }
+
+    public void setLink(String link) {
+        this.link = link;
+    }
+
+    @Override
+    public String toString() {
+        return "Link{" +
+                "id='" + id + '\'' +
+                ", projectDescription='" + projectDescription + '\'' +
+                ", name='" + name + '\'' +
+                ", link='" + link + '\'' +
+                '}';
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..eef4eeccb3f2799539bbf105138304d60b2fafff
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAO.java
@@ -0,0 +1,12 @@
+package unipotsdam.gf.modules.journal.model;
+
+import java.util.ArrayList;
+
+public interface LinkDAO {
+
+    void addLink(Link link);
+    void deleteLink(String linkId);
+    Link getLink(String linkId);
+    ArrayList<Link> getAllLinks(String descriptionID);
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAOImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..189607a873ddf7a3c7266811ae9ce7b73113871d
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/LinkDAOImpl.java
@@ -0,0 +1,108 @@
+package unipotsdam.gf.modules.journal.model;
+
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.modules.journal.util.JournalUtils;
+
+import java.util.ArrayList;
+import java.util.UUID;
+
+public class LinkDAOImpl implements LinkDAO{
+
+    @Override
+    public void addLink(Link link) {
+        // create a new id
+        String uuid = UUID.randomUUID().toString();
+        while (JournalUtils.existsId(uuid,"links")) {
+            uuid = UUID.randomUUID().toString();
+        }
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "INSERT INTO links (`id`, `projecdesription`, `name`, `link`) VALUES (?,?,?,?);";
+        connection.issueInsertOrDeleteStatement(request, uuid, link.getProjectDescription(),link.getName(),link.getLink());
+
+        //close connection
+        connection.close();
+    }
+
+    @Override
+    public void deleteLink(String linkId) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "DELETE FROM links WHERE id = ?;";
+        connection.issueInsertOrDeleteStatement(request, linkId);
+
+        // close connection
+        connection.close();
+
+    }
+
+    @Override
+    public Link getLink(String linkId) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT * FROM links WHERE id = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, linkId);
+
+        if (rs.next()) {
+
+            // save journal
+            Link link = getLinkFromResultSet(rs);
+
+            // close connection
+            connection.close();
+
+            return link;
+        } else {
+
+            // close connection
+            connection.close();
+
+            return null;
+        }
+
+    }
+
+    @Override
+    public ArrayList<Link> getAllLinks(String descriptionID) {
+        ArrayList<Link> links = new ArrayList<>();
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT * FROM links WHERE projecdesription= ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, descriptionID);
+
+        while (rs.next()) {
+            links.add(getLinkFromResultSet(rs));
+        }
+
+        // close connection
+        connection.close();
+
+        return links;
+
+    }
+
+    private Link getLinkFromResultSet(VereinfachtesResultSet rs) {
+
+        String id = rs.getString("id");
+        String project = rs.getString("projecdesription");
+        String name = rs.getString("name");
+        String link = rs.getString("link");
+        return new Link(id,project,name,link);
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
index 7c73443a81d372bfe5bdc2cbc43a67a241e95c43..cfcb4f5a66175c2c1efb54af75a5eb9a8bcabbac 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescription.java
@@ -1,6 +1,7 @@
 package unipotsdam.gf.modules.journal.model;
 
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 import java.util.ArrayList;
 import java.util.Map;
@@ -13,25 +14,23 @@ import static unipotsdam.gf.core.management.utils.MarkdownUtils.convertMarkdownT
 
 public class ProjectDescription {
 
-    private long id;
-    private String name;
+    private String id;
+    private StudentIdentifier student;
     private String descriptionHTML;
     private String descriptionMD;
     private boolean open;
-    private Project project;
-    private Map<String,String> links;
+    private ArrayList<Link> links;
     private ArrayList<String> group;
     private long timestamp;
 
     public ProjectDescription() {
     }
 
-    public ProjectDescription(long id, String name, String description, Project project, Map<String, String> links, ArrayList<String> group, long timestamp) {
+    public ProjectDescription(String id, String name, String description, String project, ArrayList<Link> links, ArrayList<String> group, long timestamp) {
         this.id = id;
-        this.name = name;
+        this.student = new StudentIdentifier(project,name);
         this.descriptionHTML = convertMarkdownToHtml(description);
         this.descriptionMD =description;
-        this.project = project;
         this.links = links;
         this.group = group;
         this.timestamp = timestamp;
@@ -43,20 +42,20 @@ public class ProjectDescription {
         this.descriptionHTML = convertMarkdownToHtml(description);
     }
 
-    public long getId() {
+    public String getId() {
         return id;
     }
 
-    public void setId(long id) {
+    public void setId(String id) {
         this.id = id;
     }
 
-    public String getName() {
-        return name;
+    public StudentIdentifier getStudent() {
+        return student;
     }
 
-    public void setName(String name) {
-        this.name = name;
+    public void setStudent(StudentIdentifier student) {
+        this.student = student;
     }
 
     public String getDescriptionHTML() {
@@ -67,19 +66,27 @@ public class ProjectDescription {
         this.descriptionHTML = descriptionHTML;
     }
 
-    public Project getProject() {
-        return project;
+    public String getDescriptionMD() {
+        return descriptionMD;
+    }
+
+    public void setDescriptionMD(String descriptionMD) {
+        this.descriptionMD = descriptionMD;
     }
 
-    public void setProject(Project project) {
-        this.project = project;
+    public boolean isOpen() {
+        return open;
     }
 
-    public Map<String, String> getLinks() {
+    public void setOpen(boolean open) {
+        this.open = open;
+    }
+
+    public ArrayList<Link> getLinks() {
         return links;
     }
 
-    public void setLinks(Map<String, String> links) {
+    public void setLinks(ArrayList<Link> links) {
         this.links = links;
     }
 
@@ -99,32 +106,14 @@ public class ProjectDescription {
         this.timestamp = timestamp;
     }
 
-    public boolean isOpen() {
-        return open;
-    }
-
-    public void setOpen(boolean open) {
-        this.open = open;
-    }
-
-    public String getDescriptionMD() {
-        return descriptionMD;
-    }
-
-    public void setDescriptionMD(String descriptionMD) {
-        this.descriptionMD = descriptionMD;
-    }
-
-
     @Override
     public String toString() {
         return "ProjectDescription{" +
-                "id=" + id +
-                ", name='" + name + '\'' +
+                "id='" + id + '\'' +
+                ", student=" + student +
                 ", descriptionHTML='" + descriptionHTML + '\'' +
                 ", descriptionMD='" + descriptionMD + '\'' +
                 ", open=" + open +
-                ", project=" + project +
                 ", links=" + links +
                 ", group=" + group +
                 ", timestamp=" + timestamp +
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..b0d5959864f404ae80e5cc06741dcd3201fe775b
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAO.java
@@ -0,0 +1,10 @@
+package unipotsdam.gf.modules.journal.model;
+
+public interface ProjectDescriptionDAO {
+
+    void createDescription(ProjectDescription projectDescription);
+    void updateDescription(ProjectDescription projectDescription);
+    ProjectDescription getDescription(String projectDescription);
+    void deleteDescription(String projectDescription);
+    void closeDescription(String projectDescription);
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAOImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..6cda5c0e44d190ff598d9448c8b6f09f5fbe9362
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/ProjectDescriptionDAOImpl.java
@@ -0,0 +1,114 @@
+package unipotsdam.gf.modules.journal.model;
+
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.modules.journal.util.JournalUtils;
+
+import java.util.UUID;
+
+public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
+    @Override
+    public void createDescription(ProjectDescription projectDescription) {
+        // create a new id
+        String uuid = UUID.randomUUID().toString();
+        while (JournalUtils.existsId(uuid,"projectdescription")) {
+            uuid = UUID.randomUUID().toString();
+        }
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "INSERT INTO projectdescription(`id`, `author`, `project`, `text`, `open`) VALUES (?,?,?,?,?);";
+        connection.issueInsertOrDeleteStatement(request, uuid, projectDescription.getStudent().getStudentId(),projectDescription.getStudent().getProjectId(),projectDescription.getDescriptionMD(),true);
+
+        //close connection
+        connection.close();
+
+    }
+
+    @Override
+    public void updateDescription(ProjectDescription projectDescription) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "UPDATE projectdescription SET text=? WHERE id = ?";
+        connection.issueUpdateStatement(request, projectDescription.getDescriptionMD(), projectDescription.getId());
+
+        //close connection
+        connection.close();
+    }
+
+    @Override
+    public ProjectDescription getDescription(String projectDescription) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT * FROM projectdescription WHERE id = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request, projectDescription);
+
+        if (rs.next()) {
+
+            // save journal
+            ProjectDescription description = getDescriptionFromResultSet(rs);
+
+            // close connection
+            connection.close();
+
+            return description;
+        } else {
+
+            // close connection
+            connection.close();
+
+            return null;
+        }
+    }
+
+    @Override
+    public void deleteDescription(String projectDescription) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "DELETE FROM projectdescription WHERE id = ?;";
+        connection.issueInsertOrDeleteStatement(request, projectDescription);
+
+        // close connection
+        connection.close();
+
+
+    }
+
+    @Override
+    public void closeDescription(String projectDescription) {
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "UPDATE projectdescription SET open=? WHERE id = ?";
+        connection.issueUpdateStatement(request, false, projectDescription);
+
+        //close connection
+        connection.close();
+    }
+
+    private ProjectDescription getDescriptionFromResultSet(VereinfachtesResultSet rs) {
+        String id = rs.getString("id");
+        long timestamp = rs.getTimestamp(2).getTime();
+        String author = rs.getString("author");
+        String project = rs.getString("project");
+        String text = rs.getString("text");
+        String open = rs.getString("open");
+
+        return null;
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
index 83d23f00d26a72cadeaecbd95f3b68d9d6d83704..7fc9a5d8f7faefe6439234df581a6607984c7ae3 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/DummyProjectDescription.java
@@ -1,8 +1,10 @@
 package unipotsdam.gf.modules.journal.service;
 
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.modules.journal.model.Link;
 import unipotsdam.gf.modules.journal.model.ProjectDescription;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -13,9 +15,9 @@ public class DummyProjectDescription implements ProjectDescriptionService {
 
     public DummyProjectDescription(){
 
-        HashMap<String,String> link = new HashMap<>();
-        link.put("Test", "www.test.de");
-        link.put("Google", "www.google.de");
+        ArrayList<Link> links = new ArrayList<>();
+        links.add(new Link("0","0","Test", "www.test.de"));
+        links.add(new Link("0","0","Google", "www.google.de"));
 
         ArrayList<String> group = new ArrayList<>();
         group.add("Test Person");
@@ -31,7 +33,7 @@ public class DummyProjectDescription implements ProjectDescriptionService {
                 "\n" +
                 "Nam liber tempor cum soluta nobis eleifend option congue nihil imperdiet doming id quod mazim placerat facer possim assum. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. ";
 
-        testProject = new ProjectDescription(0,"Eine kreative Ãœberschrift",desc, new Project(), link, group, new Date().getTime());
+        testProject = new ProjectDescription("0","Eine kreative Ãœberschrift",desc, "asd", links, group, new Date().getTime());
     }
 
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java
index 322cef1b3e4714ff8ead0f6d63f41279aead47b9..474bfbc156480536e8d36a762a48c7ee4ac75292 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/util/JournalUtils.java
@@ -2,6 +2,8 @@ package unipotsdam.gf.modules.journal.util;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
 import unipotsdam.gf.core.management.utils.Category;
 import unipotsdam.gf.modules.journal.model.Visibility;
 
@@ -51,4 +53,40 @@ public class JournalUtils {
         }
         return v;
     }
+
+    /**
+     * Checks if uuid ist used
+     *
+     * @param id uuid
+     * @return true if free
+     */
+    public static boolean existsId(String id, String table) {
+
+        // establish connection
+        MysqlConnect connection = new MysqlConnect();
+        connection.connect();
+
+        // build and execute request
+        String request = "SELECT COUNT(*) > 0 AS `exists` FROM ? WHERE id = ?;";
+        VereinfachtesResultSet rs = connection.issueSelectStatement(request,table, id);
+
+        if (rs.next()) {
+            // save the response
+            int count = rs.getInt("exists");
+
+            // close connection
+            connection.close();
+
+            // return true if we found the id
+            if (count < 1) {
+                return false;
+            } else {
+                return true;
+            }
+        }
+
+        // something happened
+        return true;
+
+    }
 }
diff --git a/gemeinsamforschen/src/scripts/dbschema/journal.sql b/gemeinsamforschen/src/scripts/dbschema/journal.sql
index ce8ac8ec7f773253c664ee8f4c22e78d9b9e62ce..16f050b3c5bba8230a1e136ffa4c86876c9f935d 100644
--- a/gemeinsamforschen/src/scripts/dbschema/journal.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/journal.sql
@@ -10,8 +10,27 @@ CREATE TABLE if not exists `journals` (
   `visibility` varchar(50),
   `category`   varchar(50),
   `open`       TINYINT(1)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
+CREATE TABLE if not exists `projectDescription` (
+  `id`         varchar(400) NOT NULL,
+  `timestamp`  timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+  ON UPDATE CURRENT_TIMESTAMP,
+  `author`     varchar(400) NOT NULL,
+  `project`    varchar(400) NOT NULL,
+  `text`       text,
+  `open`       TINYINT(1)
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
+CREATE TABLE if not exists `links` (
+  `id`         varchar(400) NOT NULL,
+  `projecdesription`     varchar(400) NOT NULL,
+  `name`       varchar(50) NOT NULL,
+  `link`       varchar(50) NOT NULL
 )
   ENGINE = InnoDB
   DEFAULT CHARSET = utf8;