diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
index 8875c571b97a9537eab6a29b379a9e822d6dc61b..7aca8e5bf74a12262fe836c4b905d1f9e7f40f07 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -1,6 +1,5 @@
 package unipotsdam.gf.core.management;
 
-import sun.misc.IOUtils;
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
 import unipotsdam.gf.core.management.group.Group;
@@ -10,13 +9,12 @@ import unipotsdam.gf.core.management.project.ProjectConfigurationDAO;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 import javax.annotation.ManagedBean;
 import javax.annotation.Resource;
 import javax.inject.Singleton;
-import java.io.File;
 import java.io.FileInputStream;
 import java.sql.Blob;
 import java.sql.Timestamp;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
index 5f22f04d171fd5ea57e82985d5517760beb1cd48..a9f8cae5c49aad332febf4bce32f0458125eb4a8 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
@@ -10,7 +10,7 @@ import unipotsdam.gf.core.management.project.ProjectConfigurationDAO;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 import javax.annotation.ManagedBean;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
index c4a98679e1b5417894290ce38e45a5f88a774352..d517c79ebb58ca45a7df73d4430fe546c3e91722 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
@@ -1,7 +1,7 @@
 package unipotsdam.gf.core.management.pageAppearance;
 
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspWriter;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
index a6538bcaaf90f3441de5581c0c2feedab6ccb2a9..22c4f0446dd9a34a7fbd2a9d8cbe22e3dd6a7ec8 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
@@ -2,7 +2,7 @@ package unipotsdam.gf.core.management.pageAppearance;
 
 import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspWriter;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
index 14871803ee64aba859de3f5702790905ebc1eb4e..a7d72442f6b46e6a333ac50c17c9e340c9dad2b3 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
@@ -1,6 +1,6 @@
 package unipotsdam.gf.core.management.project;
 
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import javax.xml.bind.annotation.XmlRootElement;
 import java.sql.Timestamp;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
index cc66f5634f1f05f969fcd423c24ce9134d21a653..1324034548c14f1cb9948d56d6d86b0481eed353 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
@@ -1,6 +1,6 @@
 package unipotsdam.gf.core.management.project;
 
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.AssessmentMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.peer2peerfeedback.Category;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
index 6a9f147857cc89528fa38a08e85c878b8d474cf3..ee57c4b4e0fd90df768c4093c1c7911f0e2de90f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
@@ -2,13 +2,11 @@ package unipotsdam.gf.core.management.project;
 
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
-import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.AssessmentMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.peer2peerfeedback.Category;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 
 public class ProjectConfigurationDAO {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
index 94bf3ef8713222df3c70a160a4cd0bc17922e220..5df13ac921258e35e664cda7c8d12d37101a8e68 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
@@ -1,8 +1,6 @@
 package unipotsdam.gf.core.management.user;
 
-import org.glassfish.grizzly.streams.BufferedInput;
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.states.ProjectPhase;
 import unipotsdam.gf.interfaces.ICommunication;
 import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
 
@@ -11,8 +9,6 @@ import javax.inject.Inject;
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.awt.image.BufferedImage;
-import java.awt.image.BufferedImageOp;
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URI;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
index bdbac9ae7b6b1171b82063e4d34f320fadf242fd..7c60869c4da95d680d35d780eefbc71d63e32550 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
@@ -2,7 +2,7 @@ package unipotsdam.gf.core.session;
 
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.Quiz;
 import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
index ed289b311cfa75b30f22102953bd3ea80d17b49e..685e6018bd27b08078e15765b3f52c1d92dac648 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
@@ -2,13 +2,19 @@ package unipotsdam.gf.core.states;
 
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.interfaces.*;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback;
 import unipotsdam.gf.view.Messages;
 
 import javax.annotation.ManagedBean;
-import javax.annotation.Resource;
 import javax.inject.Inject;
-import javax.inject.Singleton;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Created by dehne on 31.05.2018.
@@ -19,11 +25,11 @@ import javax.inject.Singleton;
 @ManagedBean
 public class PhasesImpl implements IPhases {
 
-    private IPeerAssessment iPeerAssessment;
+    private IPeerAssessment iPeerAssessment = new PeerAssessmentDummy();
 
-    private Feedback feedback;
+    private Feedback feedback = new DummyFeedback();
 
-    private ICommunication iCommunication;
+    private ICommunication iCommunication = new CommunicationDummyService();
 
     private IJournal iJournal;
 
@@ -45,8 +51,31 @@ public class PhasesImpl implements IPhases {
         this.iJournal = iJournal;
     }
 
+    /*Optionen für die Constraints:
+    Gesucht ist ein Objekt, welches man an den Dozenten übergibt, in dem die fehlenden Abgaben codiert sind
+
+    Als Map<StudentIdentifier, class Constraints>
+        + Immer wenn etwas nicht erfüllt wurde, speichert man es hier ab
+        - Jedes Interface bräuchte eine Funktion, die diese Datenstruktur bedient
+        - einige nutzlose Daten müssten mitgeschliffen werden
+        - Die variable wird immer wieder neu erzeugt und so sollte alles in der DB gespeichert sein!?
+    Constraints als Enum
+        + Die Funktionen der Interfaces checken ob dieser Constraint überall gilt
+        - Jedes Interface muss eine Funktion schreiben, die jeden Studenten untersucht.
+            Sinnvoller wäre nur die Studenten zurück zu geben, die die Constraint nicht erfüllen
+        - Enums können glaube keine Werte als Default tragen
+    Map<StudentIdentifier, String>
+        + Wenn Map keine Elemente trägt, ist alles erfüllt.
+        + zurück zu geben vom Interface wäre die Kennung (StudentIdentifier) und was fehlt (Constraint)
+        - Keine Default Werte
+
+
+    */
+
     @Override
-    public void endPhase(ProjectPhase changeToPhase, Project project) {
+    public void endPhase(ProjectPhase currentPhase, Project project) {
+        ProjectPhase changeToPhase = getNextPhase(currentPhase);
+        Map<StudentIdentifier, Constraints> tasks = new HashMap<>();
         switch (changeToPhase) {
             case CourseCreation:
                 // saving the state
@@ -59,6 +88,7 @@ public class PhasesImpl implements IPhases {
                 break;
             case DossierFeedback:
                 // check if everybody has uploaded a dossier
+
                 Boolean feedbacksGiven = feedback.checkFeedbackConstraints(project);
                 if (!feedbacksGiven) {
                     feedback.assigningMissingFeedbackTasks(project);
@@ -70,7 +100,8 @@ public class PhasesImpl implements IPhases {
                 break;
             case Execution:
                 // check if the portfolios have been prepared for evaluation (relevant entries selected)
-                Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project);
+                // todo: Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project);
+                Boolean portfoliosReady = true;
                 if (portfoliosReady) {
                     // inform users about the end of the phase
                     iCommunication.sendMessageToUsers(project, Messages.AssessmentPhaseStarted(project));
@@ -80,6 +111,15 @@ public class PhasesImpl implements IPhases {
                 }
                 break;
             case Assessment:
+                Boolean allAssessmentsDone = iPeerAssessment.allAssessmentsDone(project.getId());
+                if(allAssessmentsDone){
+                    iCommunication.sendMessageToUsers(project, Messages.CourseEnds(project));
+                    saveState(project, changeToPhase);
+                }else{
+                    iPeerAssessment.assignMissingAssessmentTasks(project);
+                }
+                break;
+            case Projectfinished:
                 closeProject();
                 break;
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
index c0d45a7532c298206bfd8a3ef371cfd5ae4381a0..49a65404c45db5aab532b94f98eb1e7ef9f427f2 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
@@ -2,16 +2,15 @@ package unipotsdam.gf.core.states;
 
 import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.interfaces.IPhases;
 
-import javax.inject.Inject;
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 
 /**
  * REST API for switching phases
- * In order to look up the possible phases @see unipotsdam.gf.core.states.ProjectPhase
+ * In order to look up the possible phases @see unipotsdam.gf.core.states.model.ProjectPhase
  */
 @Path("/phases")
 public class PhasesService  {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java
deleted file mode 100644
index b988f6f75f45b5bc04929a0cfe2d93b2fabd85a1..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package unipotsdam.gf.core.states;
-
-public class configPhaseShift {
-    Boolean DossierWritten;
-    Integer FeedbackCount =1;
-    Integer QuizCount =10;
-    Integer JournalCount=5;
-    Boolean DossierFinalized;
-    Boolean JournalFinalized;
-    Boolean AssessmentDone;
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
new file mode 100644
index 0000000000000000000000000000000000000000..ac413e63a173d5a8dbbbffbebb90267c06bc984f
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
@@ -0,0 +1,34 @@
+package unipotsdam.gf.core.states.model;
+
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+
+public class Constraints {
+
+    public static String DossierWritten(StudentIdentifier student){
+        return student.getStudentId()+" hat noch kein Dossier hochgeladen.";
+    }
+
+    public static String FeedbackCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben.";
+    }
+
+    public static String QuizCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch kein Quiz erstellt.";
+    }
+
+    public static String JournalCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst.";
+    }
+
+    public static String DossierFinalized(StudentIdentifier student){
+        return student.getStudentId()+" hat sein Dossier noch nicht finalisiert.";
+    }
+
+    public static String JournalFinalized(StudentIdentifier student){
+        return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert";
+    }
+
+    public static String AssessmentDone(StudentIdentifier student){
+        return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen.";
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
similarity index 75%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
index ba8bffad7c29716ddfd9bbb5f049e3f19b0241c4..433ef0c96077d32bea6c4194a41fd32f765ce8f8 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
@@ -1,4 +1,4 @@
-package unipotsdam.gf.core.states;
+package unipotsdam.gf.core.states.model;
 
 public enum ProjectPhase {
     CourseCreation, GroupFormation, DossierFeedback, Execution, Assessment,
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
index b07b990870b655615e72a1447eb09df9df642e98..1892ec3961260ec76a97bf0fa2aa0362fdad5070 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.interfaces;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -42,6 +43,7 @@ public interface IPeerAssessment {
      * @param totalPerformance @return
      */
     Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array
+    Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method);
 
 
     /**
@@ -95,5 +97,8 @@ public interface IPeerAssessment {
     void deleteQuiz(String quizId);
 
     String whatToRate(StudentIdentifier student);
-    Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method);
+
+    Boolean allAssessmentsDone(String projectId);
+
+    void assignMissingAssessmentTasks(Project project);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
index 976d67d13cdbb82a565b704b9213a8ac6677495e..5a11474e0842860a5063e06f2dcb13a7645d6f77 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
@@ -1,7 +1,7 @@
 package unipotsdam.gf.interfaces;
 
 import unipotsdam.gf.core.management.project.Project;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 public interface IPhases {
     /**
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
index 8283f9a231c6c558032e108968a4386d379d9b8c..866d46be26992a8be17bd44f4b2cb6823ca60d37 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -84,6 +85,16 @@ public class FBAssessement extends AssessmentDAO {
         return null;
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method) {
         return null;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
index d65c047ccced3756dd13292542eac5f58f09f901..871b3c94af79f47dc054d632240a8648ee0992af 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -59,6 +60,16 @@ public class PeerAssessment implements IPeerAssessment {
         return "done";
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) {
         Map<StudentIdentifier, Double> quizMean = new HashMap<>(quizGrade(totalPerformance));
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
index c00f67d163ef745d9f5e4b1ffcd8debb86ecf376..a5cb9fae5bdddcc98bf3b438665e17860e50a969 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
@@ -2,6 +2,7 @@ package unipotsdam.gf.modules.assessment.controller.service;
 
 import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -88,6 +89,16 @@ public class PeerAssessmentDummy implements IPeerAssessment {
         return null;
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return true;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method) {
         return null;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java
index 0ea368909eb9cdb4679bf36b77d51ea11dc490e6..a0561e81639ef40ef3d2394980c90c618680c381 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImpl.java
@@ -26,7 +26,7 @@ public class JournalDAOImpl implements JournalDAO {
         connection.connect();
 
         // build and execute request
-        String request = "INSERT INTO journals (`id`, `author`, `project`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?);";
+        String request = "INSERT INTO journals (`id`, `studentId`, `projectId`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?);";
         connection.issueInsertOrDeleteStatement(request, uuid, journal.getStudentIdentifier().getStudentId(),
                 journal.getStudentIdentifier().getProjectId(), journal.getEntryMD(), journal.getVisibility(), journal.getCategory(), true);
 
@@ -105,7 +105,7 @@ public class JournalDAOImpl implements JournalDAO {
         connection.connect();
 
         // build and execute request
-        String request = "SELECT * FROM journals WHERE project= ? AND (author = ? OR visibility = \"ALL\" or visibility = \"GROUP\");";
+        String request = "SELECT * FROM journals WHERE projectId= ? AND (studentId = ? OR visibility = \"ALL\" or visibility = \"GROUP\");";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, project, student);
 
         while (rs.next()) {
@@ -128,7 +128,7 @@ public class JournalDAOImpl implements JournalDAO {
         connection.connect();
 
         // build and execute request
-        String request = "SELECT * FROM journals WHERE author= ?;";
+        String request = "SELECT * FROM journals WHERE studentId= ?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, student);
 
         while (rs.next()) {
@@ -175,7 +175,7 @@ public class JournalDAOImpl implements JournalDAO {
         connection.connect();
 
         // build and execute request
-        String request = "SELECT * FROM journals WHERE project = ? AND open = ?;";
+        String request = "SELECT * FROM journals WHERE projectId = ? AND open = ?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, project.getId(), true);
 
         while (rs.next()) {
@@ -199,8 +199,8 @@ public class JournalDAOImpl implements JournalDAO {
 
         String id = rs.getString("id");
         long timestamp = rs.getTimestamp(2).getTime();
-        String student = rs.getString("author");
-        String project = rs.getString("project");
+        String student = rs.getString("studentId");
+        String project = rs.getString("projectId");
         String text = rs.getString("text");
         String visibility = rs.getString("visibility");
         String category = rs.getString("category");
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java
index c0b07344e684abc9a2912d02f8be0b2486e12d06..6bd193c998db83cb1cf0a8d18d5c0703e5a24f51 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionDAOImpl.java
@@ -1,7 +1,5 @@
 package unipotsdam.gf.modules.journal.model.dao;
 
-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.project.Project;
@@ -28,7 +26,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
         connection.connect();
 
         // build and execute request
-        String request = "INSERT INTO projectdescription(`id`, `author`, `project`, `text`, `open`) VALUES (?,?,?,?,?);";
+        String request = "INSERT INTO projectdescription(`id`, `studentId`, `projectId`, `text`, `open`) VALUES (?,?,?,?,?);";
         connection.issueInsertOrDeleteStatement(request, uuid, projectDescription.getStudent().getStudentId(),projectDescription.getStudent().getProjectId(),projectDescription.getDescriptionMD(),true);
 
         //close connection
@@ -57,7 +55,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
         connection.connect();
 
         // build and execute request
-        String request = "SELECT * FROM projectdescription WHERE author = ? AND project = ?;";
+        String request = "SELECT * FROM projectdescription WHERE studentId = ? AND projectId = ?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, studentIdentifier.getStudentId(),studentIdentifier.getProjectId());
 
         if (rs != null && rs.next()) {
@@ -113,7 +111,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
         connection.connect();
 
         // build and execute request
-        String request = "DELETE FROM projectdescription WHERE author = ? AND project = ?;";
+        String request = "DELETE FROM projectdescription WHERE studentId = ? AND projectId = ?;";
         connection.issueInsertOrDeleteStatement(request, studentIdentifier.getStudentId(),studentIdentifier.getProjectId());
 
         // close connection
@@ -145,7 +143,7 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
         connection.connect();
 
         // build and execute request
-        String request = "SELECT * FROM projectdescription WHERE project = ? AND open = ?;";
+        String request = "SELECT * FROM projectdescription WHERE projectId = ? AND open = ?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, project.getId(), true);
 
         while (rs.next()) {
@@ -161,8 +159,8 @@ public class ProjectDescriptionDAOImpl implements ProjectDescriptionDAO {
     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 author = rs.getString("studentId");
+        String project = rs.getString("projectId");
         String text = rs.getString("text");
         boolean open = rs.getBoolean("open");
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
index 443ce212400945a30640d7b3213233a3ed4e6e1f..0bf9d071c9cdeed87676e3570771afc632324aca 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
@@ -16,11 +16,12 @@ import java.util.ArrayList;
 public class DummyFeedback implements Feedback {
 
     /**
-     * Utility to creaty dummy data for students
+     * Utility to create dummy data for students
      */
     PodamFactory factory = new PodamFactoryImpl();
 
     private static Boolean missingTaskAssigned = false;
+    private Boolean constraintsFulfilled = false;
 
 
     public DummyFeedback() {
@@ -52,10 +53,11 @@ public class DummyFeedback implements Feedback {
 
     @Override
     public Boolean checkFeedbackConstraints(Project project) {
-        // TODO implement cornstaints
+        // TODO implement constraints
         NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "check Feedback constraints",
                 "checking feedback constraints ");
-        return missingTaskAssigned;
+        constraintsFulfilled = true;
+        return constraintsFulfilled;
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
index 986c7d741e87d479673663e4afccd5d685bc2249..cffc1eae0018d01365f794eef5bc54ac21c69831 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
@@ -17,4 +17,9 @@ public class Messages {
         // TODO add link to site + markup
         return "Die Bewertungsphase hat begonnen. Bitte geht auf ... und macht ....";
     }
+
+    public static String CourseEnds(Project project) {
+        // TODO add link to site + markup
+        return "Die Bewertung ist abgeschlossen. Sie erhalten ihre Bewertung in Kürze.";
+    }
 }
diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js b/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js
index b356093d5bbd45e5e3fadf6d79b2426fee019556..54470a0048359ab9324f489e4311aef213b834df 100644
--- a/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js
+++ b/gemeinsamforschen/src/main/webapp/annotation/js/annotationScript.js
@@ -68,14 +68,14 @@ $(document).ready(function() {
      * continue button
      */
     $('#btnContinue').click(function () {
-        location.href="give-feedback.jsp?token=" + getUserTokenFromUrl();
+        location.href="../feedback/give-feedback.jsp?token=" + getUserTokenFromUrl();
     });
 
     /**
      * back button
      */
     $('#btnBack').click(function () {
-        location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
+        location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
     });
 
     /**
diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js
index 21e4a47aae77b6fd0203fcdb1c36e0f48ae3b23c..a8ab85a55c8050287ac9228165ec1b0538659db7 100644
--- a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js
+++ b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredAnnotation.js
@@ -285,7 +285,7 @@ function saveButtonHandler() {
 
         $.when.apply($, promises).then(function () {
             // redirect user to project page after saving
-            location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
+            location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
         });
 
         // redirect user to project page after saving
diff --git a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js
index 9a2aa3d411d58df36cfa95201268d5ebc36e2211..2148e5cb04d95a8280dc4af60579aa8f6bdfa2e8 100644
--- a/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js
+++ b/gemeinsamforschen/src/main/webapp/annotation/js/unstructuredUpload.js
@@ -37,15 +37,15 @@ $(document).ready(function() {
                 $('#upload-textarea').val("");
 
                 // jump to previous page
-                window.history.back();
-                //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
+                //window.history.back();
+                location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
             }
         }
         // nothing to check
         else {
             // jump to previous page
-            window.history.back();
-            //location.href="project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getProjectIdFromUrl();
+            //window.history.back();
+            location.href="../project-student.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
         }
     });
 
diff --git a/gemeinsamforschen/src/main/webapp/core/footer.js b/gemeinsamforschen/src/main/webapp/core/footer.js
index 9407ef60d1a1c1af5d8bce6c5dc1e9c1835645bc..6875866f0675741797ba62d75e5e2538556dfe19 100644
--- a/gemeinsamforschen/src/main/webapp/core/footer.js
+++ b/gemeinsamforschen/src/main/webapp/core/footer.js
@@ -1,3 +1,6 @@
 $(document).ready(function(){
+    $('#btnUnstructuredUpload').click(function () {
+        location.href="annotation/upload-unstructured-annotation.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
+    });
 
 });
diff --git a/gemeinsamforschen/src/main/webapp/core/project-student.js b/gemeinsamforschen/src/main/webapp/core/project-student.js
index 85b50ac80137b537eed4c87b5ba5702c32e9dba6..8c7642ebeff55680cc523f7e27005087a29082a6 100644
--- a/gemeinsamforschen/src/main/webapp/core/project-student.js
+++ b/gemeinsamforschen/src/main/webapp/core/project-student.js
@@ -11,7 +11,7 @@ $(document).ready(function(){
         $('.annotationview').click(function () {
             let fullSubmissionId = $(this).closest("li").data("fullSubmissionId");
             let category = $(this).closest("li").data("category");
-            location.href="annotation-document.jsp?token=" + getUserTokenFromUrl() +
+            location.href="annotation/annotation-document.jsp?token=" + getUserTokenFromUrl() +
                 "&projectId=" + getQueryVariable("projectId") +
                 "&fullSubmissionId=" + fullSubmissionId +
                 "&category=" + category;
@@ -30,20 +30,16 @@ $(document).ready(function(){
     });
     */
     $('.givefeedback').click(function () {
-        location.href="givefeedback.jsp?token="+getUserTokenFromUrl();
+        location.href="feedback/give-feedback.jsp?token="+getUserTokenFromUrl();
     });
     $('.viewfeedback').click(function () {
-        location.href="viewfeedback.jsp?token="+getUserTokenFromUrl();
+        location.href="feedback/view-feedback.jsp?token="+getUserTokenFromUrl();
     });
 
     $('.annotationview').click(function () {
-        location.href="annotation-document.jsp?token="+getUserTokenFromUrl();
+        location.href="annotation/annotation-document.jsp?token="+getUserTokenFromUrl();
     });
 
-    $('#btnUnstructuredUpload').click(function () {
-        location.href="unstructured-upload.jsp?token="+getUserTokenFromUrl() + "&projectId=" + getQueryVariable("projectId");
-    })
-
     $('.viewprojectstudent').click(function () {
         location.href="project-student.jsp?token="+getUserTokenFromUrl();
     })
diff --git a/gemeinsamforschen/src/main/webapp/core/utility.js b/gemeinsamforschen/src/main/webapp/core/utility.js
index 0c674ce7e11611a7c2674a5220fc7f3dd263697a..334fdd7dbe9cace9e66a922b3e05773135a192d6 100644
--- a/gemeinsamforschen/src/main/webapp/core/utility.js
+++ b/gemeinsamforschen/src/main/webapp/core/utility.js
@@ -1,9 +1,3 @@
-function changeLocationTo(target) {
-    let level = $('#hierarchyLevel').html().trim();
-    let link = calculateHierachy(level) + target;
-    return link;
-}
-
 $(document).ready(function(){
     $('#headLineProject').html($('#projectId').html());
     $('#logout').click(function(){
@@ -20,6 +14,13 @@ $(document).ready(function(){
     });
 });
 
+function changeLocationTo(target) {
+    let level = $('#hierarchyLevel').html().trim();
+    let link = calculateHierachy(level) + target;
+    return link;
+}
+
+
 function goBack() {
     window.history.back();
 }
diff --git a/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp b/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp
index 26e9ed28d1e024b2f8f3523c0b90fb67020043c8..365f23b121e96b5df7443a4a4d105ef9e85cff92 100644
--- a/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp
+++ b/gemeinsamforschen/src/main/webapp/feedback/give-feedback.jsp
@@ -2,6 +2,7 @@
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %>
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %>
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %>
+<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="footer" %>
 
 <!DOCTYPE html>
 <html>
@@ -135,12 +136,8 @@
 </table>
 </div>
 </div>
+    <footer:footer/>
 </div>
-
-<script src="js/jquery.min.js"></script>
-<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
-<script src="js/Sidebar-Menu.js"></script>
-<script src="js/createJournal.js"></script>
 </body>
 
 </html>
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp b/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp
index 4673f4eb514b316bb8cd96f95ad277127f228c9c..b50e9f8921415b4e5fa7a16715c054c34045166e 100644
--- a/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp
+++ b/gemeinsamforschen/src/main/webapp/feedback/view-feedback.jsp
@@ -2,6 +2,7 @@
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="menu" %>
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="headLine" %>
 <%@ taglib uri="../core/gemeinsamForschen.tld" prefix="omniDependencies" %>
+<%@ taglib uri="../core/gemeinsamForschen.tld" prefix="footer" %>
 
 <!DOCTYPE html>
 <html>
@@ -113,7 +114,7 @@
                                             <div></div>
                                             <div class="media-body">
                                                 <div class="media" style="overflow:visible;">
-                                                    <div><img src="../assets/img/1.jpg" class="mr-3"
+                                                    <div><img src="../libs/img/1.jpg" class="mr-3"
                                                               style="width: 25px; height:25px;"></div>
                                                     <div class="media-body" style="overflow:visible;">
                                                         <div class="row">
@@ -135,7 +136,7 @@
                                             <div></div>
                                             <div class="media-body">
                                                 <div class="media" style="overflow:visible;">
-                                                    <div><img src="../assets/img/2.jpg" class="mr-3"
+                                                    <div><img src="../libs/img/2.jpg" class="mr-3"
                                                               style="width: 25px; height:25px;"></div>
                                                     <div class="media-body" style="overflow:visible;">
                                                         <div class="row">
@@ -163,11 +164,8 @@
             </table>
         </div>
     </div>
+    <footer:footer/>
 </div>
-
-<script src="js/jquery.min.js"></script>
-<script src="../assets/bootstrap/js/bootstrap.min.js"></script>
-<script src="js/Sidebar-Menu.js"></script>
 </body>
 
 </html>
diff --git a/gemeinsamforschen/src/main/webapp/project-student.jsp b/gemeinsamforschen/src/main/webapp/project-student.jsp
index ccf60351f37ae9761a2e58426b12f97e1c7a222f..63562e8b66fa2b753455eb8d8b703094a1687d89 100644
--- a/gemeinsamforschen/src/main/webapp/project-student.jsp
+++ b/gemeinsamforschen/src/main/webapp/project-student.jsp
@@ -102,8 +102,6 @@
 
                             </tr>
                         </table>
-
-                        <button onclick="goBack()" class="btn btn-secondary">Zur&uuml;ck</button>
                     </td>
                 </tr>
             </table>
diff --git a/gemeinsamforschen/src/scripts/dbschema/createDummyCourses.sql b/gemeinsamforschen/src/scripts/dbschema/createDummyCourses.sql
new file mode 100644
index 0000000000000000000000000000000000000000..873c6a89affc378b88bb7c2bf2bbbb438ac0f770
--- /dev/null
+++ b/gemeinsamforschen/src/scripts/dbschema/createDummyCourses.sql
@@ -0,0 +1,4 @@
+INSERT INTO `projects` (`id`, `password`, `active`, `timecreated`, `author`, `adminPassword`, `token`, `phase`) VALUES
+('Kaleo', 'password', 1, '2018-09-07 12:13:21', 'axel', '1234', '4pingsfelmf4', 'CourseCreation'),
+('gemeinsamForschen', 'password', 1, '2018-09-13 08:55:02', 'axel', '1234', '32ptng45g9', 'Execution');
+COMMIT;
\ No newline at end of file
diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
index 7334c920b9272500d574d74d2ccf29d339f0570e..062476e03983706cdbc49fa9fd997c1f5a6534bf 100644
--- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
@@ -9,16 +9,44 @@ SET time_zone = "+00:00";
 /*!40101 SET NAMES utf8mb4 */;
 
 
-CREATE TABLE `annotations` (
+CREATE TABLE if not exists `annotations` (
   `id` varchar(120) NOT NULL,
   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `userId` int(11) DEFAULT NULL,
-  `targetId` int(11) DEFAULT NULL,
-  `body` varchar(280) DEFAULT NULL,
+  `userToken` varchar(120) DEFAULT NULL,
+  `targetId` varchar(120) DEFAULT NULL,
+  `targetCategory` VARCHAR(30) NOT NULL,
+  `title` varchar(120) DEFAULT NULL,
+  `comment` varchar(400) DEFAULT NULL,
   `startCharacter` int(11) DEFAULT NULL,
-  `endCharacter` int(11) DEFAULT NULL
+  `endCharacter` int(11) DEFAULT NULL,
+  PRIMARY KEY (`id`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+CREATE TABLE if not exists `fullsubmissions` (
+  `id` VARCHAR(120) NOT NULL,
+  `timestamp` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `user` VARCHAR(120) NOT NULL,
+  `text` MEDIUMTEXT NOT NULL,
+  `projectId` VARCHAR(120) NOT NULL,
+  PRIMARY KEY (`id`)
+) ENGINE = InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE if not exists `submissionparts` (
+  `timestamp` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `userId` VARCHAR(120) NOT NULL,
+  `fullSubmissionId` VARCHAR(120) NOT NULL,
+  `category` VARCHAR(30) NOT NULL,
+  PRIMARY KEY (`fullSubmissionId`, `category`)
+) ENGINE = InnoDB DEFAULT CHARSET=utf8;
+
+CREATE TABLE if not exists `submissionpartbodyelements` (
+  `fullSubmissionId` VARCHAR(120) NOT NULL,
+  `category` VARCHAR(30) NOT NULL,
+  `startCharacter` int(11) NOT NULL,
+  `endCharacter` int(11) NOT NULL,
+  PRIMARY KEY (`fullSubmissionId`, `category`, `startCharacter`, `endCharacter`)
+) ENGINE = InnoDB DEFAULT CHARSET=utf8;
+
 CREATE TABLE `answeredquiz` (
   `projectId` varchar(400) NOT NULL,
   `studentId` varchar(400) NOT NULL,
@@ -96,7 +124,6 @@ CREATE TABLE `users` (
   `rocketChatId` varchar(400) NOT NULL,
   `rocketChatAuthToken` varchar(800) NOT NULL,
   `isStudent` tinyint(1) DEFAULT '1'
-  ON UPDATE CURRENT_TIMESTAMP,
 )
   ENGINE = InnoDB
   DEFAULT CHARSET = utf8;
@@ -112,9 +139,6 @@ CREATE TABLE `workrating` (
   `autonomous` int(11) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
 
-ALTER TABLE `annotations`
-  ADD PRIMARY KEY (`id`);
-
 ALTER TABLE `groups`
   ADD PRIMARY KEY (`id`);
 
diff --git a/gemeinsamforschen/src/scripts/dbschema/journal.sql b/gemeinsamforschen/src/scripts/dbschema/journal.sql
index 16f050b3c5bba8230a1e136ffa4c86876c9f935d..e8e9ed5f3ab675341ce60e875c9611546c83f3a5 100644
--- a/gemeinsamforschen/src/scripts/dbschema/journal.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/journal.sql
@@ -4,8 +4,8 @@ CREATE TABLE if not exists `journals` (
   `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,
+  `studentId`     varchar(400) NOT NULL,
+  `projectId`    varchar(400) NOT NULL,
   `text`       text,
   `visibility` varchar(50),
   `category`   varchar(50),
@@ -18,8 +18,8 @@ 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,
+  `studentId`     varchar(400) NOT NULL,
+  `projectId`    varchar(400) NOT NULL,
   `text`       text,
   `open`       TINYINT(1)
 )
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index 2022098901c1d33133d46ffa6ebe1268e8b960d9..284258c144cf54efabc89250533c0573edcd4e43 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -17,7 +17,7 @@ import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.project.ProjectConfiguration;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupfindingCriteria;
 import unipotsdam.gf.modules.journal.model.Journal;
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
index ff755d0a0e1b9a024730a3dad073dff9d1f7ed6b..8c7d831fc74d19deb2ebccfccd92624b2e0e57ce 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
@@ -12,7 +12,7 @@ import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import javax.inject.Inject;
 
 public class PhaseTest {
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
index 008ec65f6695807383dfcf4290acc293ef65e41a..d7d201f69c8a72f99538b3ba56cf9a3c32947891 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
@@ -31,8 +31,7 @@ public class JournalDAOImplTest {
     public void createJournal() {
 
         // Create Journal
-        Journal createJournal = testJournal;
-        journalDAO.createJournal(createJournal);
+        journalDAO.createJournal(testJournal);
 
         connection.connect();
 
@@ -108,13 +107,12 @@ public class JournalDAOImplTest {
 
     @Test
     public void deleteJournal() {
-        Journal deleteJournal = testJournal;
 
         //createJournal
         connection.connect();
 
         // build and execute request
-        create(deleteJournal);
+        create(testJournal);
 
         //check if Journal was added
         ArrayList<Journal> resultJournals = getJournals();
@@ -138,14 +136,13 @@ public class JournalDAOImplTest {
     @Test
     public void getJournal() {
 
-        //create Journal
-        Journal getJournal = testJournal;
+
         //createJournal
 
         connection.connect();
 
         // build and execute request
-        create(getJournal);
+        create(testJournal);
 
         //get that Journal
         Journal resultJournal = journalDAO.getJournal(testId);
@@ -224,8 +221,7 @@ public class JournalDAOImplTest {
         connection.connect();
 
         //create Journal
-        Journal closeJournal = testJournal;
-        create(closeJournal);
+        create(testJournal);
 
         Journal resultJournal = getJournals().get(0);
 
@@ -277,7 +273,7 @@ public class JournalDAOImplTest {
     //utility
 
     private ArrayList<Journal> getJournals() {
-        String request = "SELECT * FROM journals WHERE project= ?;";
+        String request = "SELECT * FROM journals WHERE projectId= ?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, testProject);
 
         ArrayList<Journal> resultJournals = new ArrayList<>();
@@ -288,7 +284,7 @@ public class JournalDAOImplTest {
     }
 
     private void create(Journal getJournal) {
-        String createRequest = "INSERT INTO journals (`id`, `author`, `project`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?);";
+        String createRequest = "INSERT INTO journals (`id`, `studentId`, `projectId`, `text`, `visibility`,`category`, `open` ) VALUES (?,?,?,?,?,?,?);";
         connection.issueInsertOrDeleteStatement(createRequest, getJournal.getId(), getJournal.getStudentIdentifier().getStudentId(),
                 getJournal.getStudentIdentifier().getProjectId(), getJournal.getEntryMD(), getJournal.getVisibility(), getJournal.getCategory(), getJournal.isOpen());
     }
@@ -304,8 +300,8 @@ public class JournalDAOImplTest {
 
         String id = rs.getString("id");
         long timestamp = rs.getTimestamp(2).getTime();
-        String student = rs.getString("author");
-        String project = rs.getString("project");
+        String student = rs.getString("studentId");
+        String project = rs.getString("projectId");
         String text = rs.getString("text");
         String visibility = rs.getString("visibility");
         String category = rs.getString("category");
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImplTest.java
index 82b1b95d2e5711e2df937329a858027e26e3e982..151b6e7945671bcbb45c8d036a0b55cda4723915 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImplTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/LinkDAOImplTest.java
@@ -12,14 +12,14 @@ import static org.junit.Assert.assertFalse;
 
 public class LinkDAOImplTest {
 
-    MysqlConnect connection = new MysqlConnect();
-    LinkDAO linkDAO = new LinkDAOImpl();
-
-    String testId = "-1";
-    String testProjectDescription = "testproject";
-    String testName = "testname";
-    String testLink = "https://www.test.de";
-    Link testLinkObj = new Link(testId, testProjectDescription, testName, testLink);
+    private final MysqlConnect connection = new MysqlConnect();
+    private final LinkDAO linkDAO = new LinkDAOImpl();
+
+    private final String testId = "-1";
+    private final String testProjectDescription = "testproject";
+    private final String testName = "testname";
+    private final String testLink = "https://www.test.de";
+    private final Link testLinkObj = new Link(testId, testProjectDescription, testName, testLink);
 
     @Test
     public void addLink() {
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
index c63a1b8d70c2fd9251cab2852516f55a11966741..bcc98003103ad7c5d13e95336266e32b67657595 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
@@ -9,21 +9,19 @@ import unipotsdam.gf.modules.journal.model.ProjectDescription;
 
 import java.util.ArrayList;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 public class ProjectDescriptionImplDAOTest {
 
     private final ProjectDescriptionDAO descriptionDAO = new ProjectDescriptionDAOImpl();
     private final MysqlConnect connection = new MysqlConnect();
 
-    private String testId = "-1";
-    private String testStudent = "testStudent";
-    private String testDescription = "testDescription";
-    private String testProjekt = "testProjekt";
+    private final String testId = "-1";
+    private final String testStudent = "testStudent";
+    private final String testDescription = "testDescription";
+    private final String testProjekt = "testProjekt";
 
-    private ProjectDescription testProjectDescription = new ProjectDescription(testId, testStudent, testDescription, testProjekt, null /*Links are added in Service*/);
+    private final ProjectDescription testProjectDescription = new ProjectDescription(testId, testStudent, testDescription, testProjekt, null /*Links are added in Service*/);
 
     @Test
     public void createDescription() {
@@ -82,9 +80,7 @@ public class ProjectDescriptionImplDAOTest {
     public void getDescriptionSI() {
         connection.connect();
 
-        ProjectDescription getDescription = testProjectDescription;
-
-        create(getDescription);
+        create(testProjectDescription);
 
         ProjectDescription result = descriptionDAO.getDescription(new StudentIdentifier(testProjekt, testStudent));
 
@@ -101,9 +97,7 @@ public class ProjectDescriptionImplDAOTest {
     public void getDescriptionID() {
         connection.connect();
 
-        ProjectDescription getDescription = testProjectDescription;
-
-        create(getDescription);
+        create(testProjectDescription);
 
         ProjectDescription result = descriptionDAO.getDescription(testId);
 
@@ -120,9 +114,7 @@ public class ProjectDescriptionImplDAOTest {
     public void deleteDescription() {
         connection.connect();
 
-        ProjectDescription deleteDescription = testProjectDescription;
-
-        create(deleteDescription);
+        create(testProjectDescription);
 
         ArrayList<ProjectDescription> resultDescriptions = getProjectDescription();
 
@@ -143,9 +135,7 @@ public class ProjectDescriptionImplDAOTest {
     public void closeDescription() {
         connection.connect();
 
-        ProjectDescription closeDescription = testProjectDescription;
-
-        create(closeDescription);
+        create(testProjectDescription);
 
         ArrayList<ProjectDescription> resultDescriptions = getProjectDescription();
 
@@ -189,7 +179,7 @@ public class ProjectDescriptionImplDAOTest {
 
     //Utility
     private ArrayList<ProjectDescription> getProjectDescription() {
-        String request = "SELECT * FROM projectdescription WHERE project=?;";
+        String request = "SELECT * FROM projectdescription WHERE projectId=?;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, testProjekt);
 
         ArrayList<ProjectDescription> resultDescriptions = new ArrayList<>();
@@ -200,7 +190,7 @@ public class ProjectDescriptionImplDAOTest {
     }
 
     private void create(ProjectDescription projectDescription) {
-        String request = "INSERT INTO projectdescription(`id`, `author`, `project`, `text`, `open`) VALUES (?,?,?,?,?);";
+        String request = "INSERT INTO projectdescription(`id`, `studentId`, `projectId`, `text`, `open`) VALUES (?,?,?,?,?);";
         connection.issueInsertOrDeleteStatement(request, projectDescription.getId(), projectDescription.getStudent().getStudentId(), projectDescription.getStudent().getProjectId(), projectDescription.getDescriptionMD(), projectDescription.isOpen());
     }
 
@@ -214,8 +204,8 @@ public class ProjectDescriptionImplDAOTest {
     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 author = rs.getString("studentId");
+        String project = rs.getString("projectId");
         String text = rs.getString("text");
         boolean open = rs.getBoolean("open");