diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
index 90f40f37048d031e694e86033a8a717efa7a09ea..4590125022ff3ba67b1a59bfb83fbaefe4cc5b0a 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
@@ -56,7 +56,7 @@ import unipotsdam.gf.process.SurveyProcess;
 import unipotsdam.gf.process.constraints.ConstraintsImpl;
 import unipotsdam.gf.process.phases.PhasesImpl;
 import unipotsdam.gf.process.tasks.TaskDAO;
-import unipotsdam.gf.process.tasks.TaskMapping;
+import unipotsdam.gf.process.tasks.TaskMapper;
 import unipotsdam.gf.session.GFContext;
 import unipotsdam.gf.session.GFContexts;
 
@@ -117,7 +117,7 @@ public class GFApplicationBinder extends AbstractBinder {
         bind(FileManagementDAO.class).to(FileManagementDAO.class);
         bind(AssessmentDAO.class).to(AssessmentDAO.class);
         bind(ReflexionProcess.class).to(ReflexionProcess.class);
-        bind(TaskMapping.class).to(TaskMapping.class);
+        bind(TaskMapper.class).to(TaskMapper.class);
 
         /*
          * TODO: @Martin comment in for your development
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java
index 432d5c0e4d343e351fbf75e1f2a20f9ae43b9e9c..909bff040f98c47250209902a16a8986eb11a5dd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/AnnotationController.java
@@ -108,10 +108,10 @@ public class AnnotationController implements IAnnotation {
                 "AND gu.groupId=? WHERE projectname = ? AND finalized=1;";
         VereinfachtesResultSet rs = connection.issueSelectStatement(request, groupId, project.getName());
 
-        if (rs.next()) {
+        if (rs!= null && rs.next()) {
             return rs.getString("text");
         }else{
-            return null;
+            return "random shit";
         }
     }
 
@@ -202,6 +202,15 @@ public class AnnotationController implements IAnnotation {
         AnnotationBody body = new AnnotationBody(title, comment, startCharacter, endCharacter);
 
         return new Annotation(id, timestamp, userEmail, targetId, targetCategory, body);
+    }
 
+    public void setAnnotationCategories(Project project) {
+        connection.connect();
+        for (String category : project.getCategories()) {
+            String query = "INSERT INTO `categoriesselected`(`projectName`, `categorySelected`) VALUES (?,?)";
+            connection.issueUpdateStatement(
+                    query, project.getName(), category);
+        }
+        connection.close();
     }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/FeedbackImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/FeedbackImpl.java
index cd66cf4ce3bc73a9ed2f1fe1321d3aa3af34d4c4..46deed75c7ea3dc4d89fdec15b252fdfa6ea0b2c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/FeedbackImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/controller/FeedbackImpl.java
@@ -8,7 +8,7 @@ import unipotsdam.gf.modules.user.User;
 import unipotsdam.gf.mysql.MysqlConnect;
 import unipotsdam.gf.mysql.VereinfachtesResultSet;
 import unipotsdam.gf.process.tasks.Task;
-import unipotsdam.gf.process.tasks.TaskMapping;
+import unipotsdam.gf.process.tasks.TaskMapper;
 
 import javax.inject.Inject;
 import java.util.List;
@@ -22,7 +22,7 @@ public class FeedbackImpl implements Feedback {
     GroupDAO groupDAO;
 
     @Inject
-    TaskMapping taskMapping;
+    TaskMapper taskMapper;
 
     @Override
     public void assigningMissingFeedbackTasks(Project project) {
@@ -32,7 +32,7 @@ public class FeedbackImpl implements Feedback {
     @Override
     public void specifyFeedbackTasks(List<Task> tasks) {
         for (Task task : tasks) {
-            List<Integer> groupToFeedback = taskMapping.groupToFeedback(tasks, task, 1);
+            List<Integer> groupToFeedback = taskMapper.groupToFeedback(tasks, task, 1);
             for (Integer groupId : groupToFeedback) {
                 connection.connect();
                 String request = "UPDATE `fullsubmissions` SET `feedbackGroup`=? WHERE groupId=? AND projectName=?";
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java
index 045986bdf8fbd7ccb6a4dadbe1142ade3c3ff9ae..f1b2660573e431fa050795b8c524de15578d5f69 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/annotation/model/AnnotationResponse.java
@@ -7,7 +7,7 @@ package unipotsdam.gf.modules.annotation.model;
 public class AnnotationResponse {
 
     // variables
-    String message;
+    private String message;
 
     // constructors
     public AnnotationResponse(String message) {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
index f9c54a71c9d211abd1bbde739819b4c347690061..b933dd80f92c37e2fe2411532079c1b0b8722316 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentDAO.java
@@ -1,11 +1,19 @@
 package unipotsdam.gf.modules.assessment;
 
-import uk.co.jemos.podam.api.PodamFactory;
 import uk.co.jemos.podam.api.PodamFactoryImpl;
+import unipotsdam.gf.modules.fileManagement.FileRole;
+import unipotsdam.gf.modules.group.Group;
+import unipotsdam.gf.modules.group.GroupDAO;
+import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.modules.user.User;
 import unipotsdam.gf.modules.user.UserDAO;
 import unipotsdam.gf.mysql.MysqlConnect;
+import unipotsdam.gf.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.process.tasks.TaskMapping;
+import unipotsdam.gf.process.tasks.TaskName;
 
 import javax.inject.Inject;
+import java.util.List;
 
 public class AssessmentDAO {
 
@@ -14,12 +22,108 @@ public class AssessmentDAO {
     @Inject
     private MysqlConnect connect;
 
+    @Inject
+    private GroupDAO groupDAO;
+
     @Inject
     private UserDAO userDAO;
 
-    public AssessmentProgress getProgress() {
-       AssessmentProgress assessmentProgress =  podamFactory.manufacturePojo(AssessmentProgress.class);
-       //assessmentProgress.setNumberOfGroupsWithoutPresentation(3);
-       return assessmentProgress;
+    /**
+     * get the progress for the docent so he can assess if he wants to proceed to grading
+     *
+     * @param project
+     * @return
+     */
+    public AssessmentProgress getProgress(Project project) {
+        AssessmentProgress assessmentProgress = new AssessmentProgress();
+        //assessmentProgress.setNumberOfGroupsWithoutPresentation(3);
+
+        int numberOfGroups = groupDAO.getGroupsByProjectName(project.getName()).size();
+
+        // get number of submitted Presentation Files
+        String fileRole = FileRole.PRESENTATION.name();
+        int presentationCount = getNumberOfSubmittedFiles(project, fileRole);
+        assessmentProgress.setNumberOfGroupsWithoutPresentation(numberOfGroups - presentationCount);
+
+        // get number of submitted final reports
+        String fileRole2 = FileRole.FINAL_REPORT.name();
+        int reportCount = getNumberOfSubmittedFiles(project, fileRole2);
+        assessmentProgress.setNumberOfGroupReportsMissing(numberOfGroups - reportCount);
+
+        //
+        assessmentProgress.setNumberOfGroupsWithoutExternalAssessment(numberOfGroups);
+        // Todo IMPLEMENT
+
+        assessmentProgress
+                .setNumberOfStudentsWithoutInternalAsssessment(userDAO.getUsersByProjectName(project.getName()).size());
+        // TODO IMPLEMENT
+
+        return assessmentProgress;
     }
+
+    public int getNumberOfSubmittedFiles(Project project, String fileRole) {
+        int presentationCount;
+        connect.connect();
+        String query = "SELECT COUNT(*) from largefilestorage where projectName = ? and fileRole = '" + fileRole + "'";
+        VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(query, project.getName());
+        if (vereinfachtesResultSet == null) {
+            return 0;
+        }
+        vereinfachtesResultSet.next();
+        presentationCount = vereinfachtesResultSet.getInt("COUNT(*)");
+        connect.close();
+        return presentationCount;
+    }
+
+    /**
+     * TODO implement
+     *
+     * @param mappedTask
+     */
+    public void persistMapping(TaskMapping mappedTask) {
+
+        connect.connect();
+        String query =
+                "INSERT INTO mappedtasks (subjectEmail, groupObjectId, objectEmail, taskname, projectName) "
+                        + "values (?,?,?,?,?)";
+
+        Object groupValue = null;
+        if (mappedTask.getObjectGroup() != null) {
+            groupValue = mappedTask.getObjectGroup().getId();
+        }
+        String objectUser = null;
+        if (mappedTask.getObjectUser() != null) {
+            objectUser = mappedTask.getObjectUser().getEmail();
+        }
+
+        connect.issueInsertOrDeleteStatement(query, mappedTask.getSubject().getEmail(), groupValue, objectUser,
+                mappedTask.getTaskName().name(), mappedTask.getProject().getName());
+
+        connect.close();
+    }
+
+    public TaskMapping getTargetGroupForAssessment(User subject) {
+        TaskMapping result;
+        connect.connect();
+
+        String query = "SELECT * from mappedtasks where subjectEmail = ? and taskname = ?";
+        VereinfachtesResultSet vereinfachtesResultSet =
+                connect.issueSelectStatement(query, subject.getEmail(), TaskName.GIVE_EXTERNAL_ASSESSMENT.name());
+        if (vereinfachtesResultSet != null) {
+            boolean next = vereinfachtesResultSet.next();
+            int groupObjectId = vereinfachtesResultSet.getInt("groupObjectId");
+            String subjectEmail = vereinfachtesResultSet.getString("subjectEmail");
+            String objectEmail = vereinfachtesResultSet.getString("objectEmail");
+            String taskName = vereinfachtesResultSet.getString("taskname");
+            String projectName = vereinfachtesResultSet.getString("projectName");
+            result = new TaskMapping(new User(subjectEmail), new Group(groupObjectId), new User(objectEmail),
+                    TaskName.valueOf(taskName), new Project(projectName));
+        } else {
+            return null;
+        }
+        connect.close();
+        return result;
+    }
+
+
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentProgress.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentProgress.java
index 564ee3ffc7acf1165beb8ff46f76a3bf3db9f448..2a1cc184889a27ec3413a1dcae057f4cb4a15424 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentProgress.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentProgress.java
@@ -7,7 +7,7 @@ public class AssessmentProgress {
 
     private int numberOfGroups;
     private int numberOfGroupPresentions;
-    private int numberOfGroupReports;
+    private int numberOfGroupReportsMissing;
     private int numberOfGroupsWithoutExternalAssessment;
     private int numberOfStudentsWithoutInternalAsssessment;
     private int numberOfGroupsWithoutPresentation;
@@ -18,7 +18,7 @@ public class AssessmentProgress {
             int numberOfGroupsWithoutExternalAssessment, int numberOfStudentsWithoutInternalAsssessment) {
         this.numberOfGroups = numberOfGroups;
         this.numberOfGroupPresentions = numberOfGroupPresentions;
-        this.numberOfGroupReports = numberOfGroupReports;
+        this.numberOfGroupReportsMissing = numberOfGroupReports;
         this.numberOfGroupsWithoutExternalAssessment = numberOfGroupsWithoutExternalAssessment;
         this.numberOfStudentsWithoutInternalAsssessment = numberOfStudentsWithoutInternalAsssessment;
     }
@@ -39,12 +39,12 @@ public class AssessmentProgress {
         this.numberOfGroupPresentions = numberOfGroupPresentions;
     }
 
-    public int getNumberOfGroupReports() {
-        return numberOfGroupReports;
+    public int getNumberOfGroupReportsMissing() {
+        return numberOfGroupReportsMissing;
     }
 
-    public void setNumberOfGroupReports(int numberOfGroupReports) {
-        this.numberOfGroupReports = numberOfGroupReports;
+    public void setNumberOfGroupReportsMissing(int numberOfGroupReportsMissing) {
+        this.numberOfGroupReportsMissing = numberOfGroupReportsMissing;
     }
 
     public int getNumberOfGroupsWithoutExternalAssessment() {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentView.java
new file mode 100644
index 0000000000000000000000000000000000000000..7087347c8651e5cce601a64cf551bed8c47bccf8
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/AssessmentView.java
@@ -0,0 +1,22 @@
+package unipotsdam.gf.modules.assessment;
+
+import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.process.PeerAssessmentProcess;
+
+import javax.inject.Inject;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+
+@Path("/assessment")
+public class AssessmentView {
+
+    @Inject
+    private PeerAssessmentProcess peerAssessmentProcess;
+
+    @POST
+    @Path("/grading/start/projects/{projectName}")
+    public void startGrading(@PathParam("projectName") String projectName){
+        peerAssessmentProcess.startGrading(new Project(projectName));
+    }
+}
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 6bb2fae971ef699f5c6f22ca0b5518fa41154562..68cb6302f6aa5c58407ccb5c3eb754af1ff632d0 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
@@ -17,7 +17,7 @@ import unipotsdam.gf.modules.project.Management;
 import unipotsdam.gf.modules.project.Project;
 import unipotsdam.gf.modules.user.User;
 import unipotsdam.gf.process.constraints.ConstraintsMessages;
-import unipotsdam.gf.process.tasks.TaskMapping;
+import unipotsdam.gf.process.tasks.TaskMapper;
 
 import javax.inject.Inject;
 import java.util.*;
@@ -34,7 +34,7 @@ public class PeerAssessment implements IPeerAssessment {
     private GroupDAO groupDAO;
 
     @Inject
-    private TaskMapping taskMapping;
+    private TaskMapper taskMapper;
 
     @Inject
     private AnnotationController annotationController;
@@ -124,7 +124,7 @@ public class PeerAssessment implements IPeerAssessment {
         if (answers == null) {
             return "quiz";
         }
-        Integer groupToRate = taskMapping.getWhichGroupToRate(project, user);
+        Integer groupToRate = taskMapper.getWhichGroupToRate(project, user);
         if (!assessmentDBCommunication.getContributionRating(groupToRate, user.getEmail())) {
             return "contributionRating";
         }
@@ -354,7 +354,7 @@ public class PeerAssessment implements IPeerAssessment {
 
     @Override
     public Integer whichGroupToRate(Project project, User user) {
-        return taskMapping.getWhichGroupToRate(project, user);
+        return taskMapper.getWhichGroupToRate(project, user);
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/Group.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/Group.java
index b217d775ef68c2301da5265e655445e2a1bf8342..9099f8b40812a48fa6bca6853c331979f204f669 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/Group.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/Group.java
@@ -17,6 +17,10 @@ public class Group {
         members = new ArrayList<>();
     }
 
+    public Group(int id) {
+        this.id = id;
+        members = new ArrayList<>();
+    }
 
     public String getProjectName() {
         return projectName;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
index 5e62cddd398b09900c113573f026c2b3e2d420a2..e9dfc5ab1622bd1ffe646f0210b31fd809ad38b7 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
@@ -734,8 +734,12 @@ public class SubmissionController implements ISubmission, HasProgress {
     }
 
     public GroupFeedbackTaskData getMyFeedback(User user, Project project) {
-        connection.connect();
         Integer groupId = groupDAO.getGroupByStudent(project, user);
+        return getMyFeedback(groupId, project);
+    }
+
+    public GroupFeedbackTaskData getMyFeedback(Integer groupId, Project project) {
+        connection.connect();
         String query = "SELECT * from fullsubmissions where groupId = ? and projectName = ?";
         VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, groupId,
                 project.getName());
@@ -877,4 +881,18 @@ public class SubmissionController implements ISubmission, HasProgress {
         connection.close();
         return feedbackedGroup;
     }
+
+    public List<String> getAnnotationCategories(Project project) {
+        List<String> result = new ArrayList<>();
+        connection.connect();
+        String query = "select * from categoriesselected where projectName = ?";
+        VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query,
+                project.getName());
+        while (vereinfachtesResultSet.next()) {
+
+            result.add(vereinfachtesResultSet.getString("categorySelected"));
+        }
+        connection.close();
+        return result;
+    }
 }
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
index 3776f2a5899ac50ac4f36b7ed8cb8e61b15f3c82..28ca82334a08caaf2368370af15dd8f164ea9fb8 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/view/SubmissionService.java
@@ -230,8 +230,11 @@ public class SubmissionService {
     @GET
     @Path("categories/project/{projectName}")
     public List<String> getAnnotationCategories(@PathParam("projectName") String projectName) {
-        //todo: for every project categories should be selectable
-        return Categories.standardAnnotationCategories;
+        List<String> result = submissionController.getAnnotationCategories(new Project(projectName));
+        if (result.size() == 0) {
+            return Categories.standardAnnotationCategories;
+        }
+        return result;
     }
 
     @GET
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/PeerAssessmentProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/PeerAssessmentProcess.java
index 63309a2640484dca937aff5cc7b50f1ea6b9ee59..987ea9eb7379d614a1fafbe5478ab9604ae75f9b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/PeerAssessmentProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/PeerAssessmentProcess.java
@@ -10,6 +10,8 @@ import unipotsdam.gf.process.tasks.*;
 
 import javax.inject.Inject;
 
+import java.util.List;
+
 import static unipotsdam.gf.process.tasks.TaskName.UPLOAD_PRESENTATION;
 
 public class PeerAssessmentProcess {
@@ -23,6 +25,9 @@ public class PeerAssessmentProcess {
     @Inject
     private GroupDAO groupDAO;
 
+    @Inject
+    private TaskMapper taskMapper;
+
     /**
      * this function is only used to show the peer assessment phase before previous phases are ready
      *
@@ -33,7 +38,6 @@ public class PeerAssessmentProcess {
         taskDAO.persistTaskForAllGroups(project, UPLOAD_PRESENTATION, Phase.Assessment);
         // distribute teacher tasks
         taskDAO.persistTeacherTask(project, TaskName.WAIT_FOR_UPLOAD, Phase.Assessment);
-
     }
 
     public void fileHasBeenUploaded(
@@ -67,12 +71,30 @@ public class PeerAssessmentProcess {
                 new GroupTask(TaskName.UPLOAD_FINAL_REPORT, groupByStudent, Progress.FINISHED, project));
         // set new tasks
 
-        // check if all the groups have finished uploads and stuff TODO
 
-        // set assessment tasks for group
-        taskDAO.persistTaskForAllGroups(project, TaskName.GIVE_ASSESSMENT, Phase.Assessment);
+    }
+
+    /**
+     *
+     * @param project
+     */
+    public void startGrading(Project project) {
+        // TODO implement
+        //System.out.println("grading tihs project now:" + project);
+
+        // set assessment tasks for students
+        taskDAO.persistMemberTask(project, TaskName.GIVE_EXTERNAL_ASSESSMENT, Phase.Assessment);
+        taskDAO.persistMemberTask(project, TaskName.GIVE_INTERNAL_ASSESSMENT, Phase.Assessment);
+
         // set assessment tasks for docent TODO
 
+        // set assessment tasks for students
+        List<User> usersByProjectName = userDAO.getUsersByProjectName(project.getName());
+        for (User user : usersByProjectName) {
+            taskMapper.persistTaskMapping(project, user, TaskName.GIVE_EXTERNAL_ASSESSMENT);
+        }
+
+        // set final grading tasks
     }
 
     /**
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
index c1642728fd4dc2eaba95239f5a4fc41aeb9f1742..949b7440117693f0723b39ab1ed9e7d83bf35ac6 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
@@ -5,6 +5,7 @@ import unipotsdam.gf.exceptions.UserDoesNotExistInRocketChatException;
 import unipotsdam.gf.exceptions.UserExistsInMysqlException;
 import unipotsdam.gf.exceptions.UserExistsInRocketChatException;
 import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.annotation.controller.AnnotationController;
 import unipotsdam.gf.modules.communication.model.RocketChatUser;
 import unipotsdam.gf.modules.group.GroupDAO;
 import unipotsdam.gf.modules.group.preferences.database.ProfileDAO;
@@ -46,6 +47,9 @@ public class ProjectCreationProcess {
     @Inject
     private GFContexts gfContexts;
 
+    @Inject
+    private AnnotationController annotationController;
+
     /**
      * STEP 1
      *
@@ -60,6 +64,7 @@ public class ProjectCreationProcess {
         } catch (Exception e) {
             throw new WebApplicationException("Project already exists");
         }
+        annotationController.setAnnotationCategories(project);
         profileDAO.createNewSurveyProject(project);
         taskDao.createTaskWaitForParticipants(project, author);
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
index b68d35f7d7359e53ad32319baa6f891d409fa628..338dec6b26728a5590cb8da29154c06934048bfd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
@@ -149,7 +149,15 @@ public class TaskDAO {
         return groupsTask;
     }
 
-    public Task createUserDefault(Project project, User target, TaskName taskName, Phase phase) {
+    /**
+     * TODO  refactor reduce overloading by introducing
+     * @param project
+     * @param target
+     * @param taskName
+     * @param phase
+     * @return
+     */
+    private Task createUserDefault(Project project, User target, TaskName taskName, Phase phase) {
         return createUserDefault(project, target, taskName, phase, Importance.MEDIUM);
     }
 
@@ -157,11 +165,12 @@ public class TaskDAO {
         return createUserDefault(project, target, taskName, phase, Importance.MEDIUM, progress);
     }
 
-    public Task createUserDefault(Project project, User target, TaskName taskName, Phase phase, Importance importance) {
+    private Task createUserDefault(Project project, User target, TaskName taskName, Phase phase, Importance importance) {
         return createUserDefault(project, target, taskName, phase, importance, Progress.JUSTSTARTED);
     }
 
-    public Task createUserDefault(Project project, User target, TaskName taskName, Phase phase, Importance importance, Progress progress) {
+    private Task createUserDefault(
+            Project project, User target, TaskName taskName, Phase phase, Importance importance, Progress progress) {
         Task task = new Task();
         task.setTaskName(taskName);
         task.setEventCreated(System.currentTimeMillis());
@@ -303,7 +312,10 @@ public class TaskDAO {
             }
             case REEDIT_DOSSIER: {
                 result = getGeneralTask(vereinfachtesResultSet);
-
+                GroupFeedbackTaskData groupFeedbackTaskData = submissionController.getMyFeedback(groupId, project);
+                if (groupFeedbackTaskData == null) {
+                    break;
+                }
                 Map<String, String> taskData = new HashMap<>();
                 taskData.put("fullSubmissionId", submissionController.getFullSubmissionId(groupId, project, FileRole.DOSSIER, 1));
                 result.setTaskData(taskData);
@@ -357,7 +369,13 @@ public class TaskDAO {
                 Task task = getGeneralTask(vereinfachtesResultSet);
                 task.setHasRenderModel(true);
                 // get Progress from peer assessment
-                task.setTaskData(assessmentDAO.getProgress());
+                task.setTaskData(assessmentDAO.getProgress(new Project(task.getProjectName())));
+                result = task;
+                break;
+            }
+            case GIVE_EXTERNAL_ASSESSMENT: {
+                Task task = getGeneralTask(vereinfachtesResultSet);
+                task.setTaskData(assessmentDAO.getTargetGroupForAssessment(new User(task.getUserEmail())));
                 result = task;
                 break;
             }
@@ -430,14 +448,13 @@ public class TaskDAO {
         persist(task);
     }
 
-    public Task createWaitingForGroupFormationTask(Project project, User target) {
+    public void createWaitingForGroupFormationTask(Project project, User target) {
         Task task = createUserDefault(project, target, WAITING_FOR_GROUP, Phase.GroupFormation);
         task.setTaskType(TaskType.INFO);
         task.setImportance(Importance.MEDIUM);
         task.setProgress(Progress.JUSTSTARTED);
 
         persist(task);
-        return task;
     }
 
     public void updateForUser(Task task) {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java
new file mode 100644
index 0000000000000000000000000000000000000000..c97b4df5c3570c5600cfba3cdf6a0e886d8b551b
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapper.java
@@ -0,0 +1,103 @@
+package unipotsdam.gf.process.tasks;
+
+import unipotsdam.gf.modules.assessment.AssessmentDAO;
+import unipotsdam.gf.modules.group.Group;
+import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.modules.user.User;
+import unipotsdam.gf.mysql.MysqlConnect;
+import unipotsdam.gf.mysql.VereinfachtesResultSet;
+
+import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
+
+public class TaskMapper {
+
+    @Inject
+    private MysqlConnect connect;
+
+    @Inject
+    private AssessmentDAO assessmentDAO;
+
+    /**
+     *
+     * @param tasks
+     * @param task
+     * @param howMany
+     * @return
+     */
+    public List<Integer> groupToFeedback(List<Task> tasks, Task task, int howMany) {
+        List<Integer> result = new ArrayList<>();
+        int position = tasks.indexOf(task);
+        for (int i = 1; i <= howMany; i++) {
+            result.add(tasks.get((i + position) % tasks.size()).getGroupTask());  //modulo builds a circle in users
+        }
+        return result;
+    }
+
+    /**
+     * WARNING. CALLING THIS METHOD SEQUENTIALLY
+     * ASSUMES THAT SQL WILL ALWAYS RETURN THE DATA IN THE SAME ORDER
+     * THIS IS NOT DEFINED FOR A STREAM
+     * @param project
+     * @param user
+     * @return the id of the group that is rated
+     */
+    @Deprecated
+    public Integer getWhichGroupToRate(Project project, User user) {
+        Integer result;
+        List<Integer> groups = new ArrayList<>();
+        Integer groupId = buildGroupIndexes(project, user, groups);
+        // every user gets the next group in the cycle
+        if (groups.indexOf(groupId) + 1 == groups.size()) {
+            result = groups.get(0);
+        } else {
+            result = groups.get(groups.indexOf(groupId) + 1);
+        }
+        return result;
+    }
+
+    /**
+     * returns the groupId the user is in and a list of groupIds of the project is filled
+     * @param project
+     * @param user
+     * @param groups
+     * @return
+     */
+    private Integer buildGroupIndexes(Project project, User user, List<Integer> groups) {
+        connect.connect();
+        String mysqlRequest1 = "SELECT groupId FROM `groupuser` gu JOIN groups g on " +
+                "gu.groupid=g.id AND g.projectName=? WHERE `userEmail`=?";
+        VereinfachtesResultSet vereinfachtesResultSet1 =
+                connect.issueSelectStatement(mysqlRequest1, project.getName(), user.getEmail());
+        vereinfachtesResultSet1.next();
+        Integer groupId = vereinfachtesResultSet1.getInt("groupId");
+
+        String mysqlRequest2 = "SELECT DISTINCT id FROM `groups` WHERE `projectName`=? ORDER BY id ASC";
+        VereinfachtesResultSet vereinfachtesResultSet2 =
+                connect.issueSelectStatement(mysqlRequest2, project.getName());
+        boolean next = vereinfachtesResultSet2.next();
+        while (next) {
+            groups.add(vereinfachtesResultSet2.getInt("id"));
+            next = vereinfachtesResultSet2.next();
+        }
+        connect.close();
+        return groupId;
+    }
+
+    public void persistTaskMapping(Project project, User user, TaskName taskName) {
+        Integer groupResult;
+        List<Integer> groups = new ArrayList<>();
+        Integer groupId = buildGroupIndexes(project, user, groups);
+        // every user gets the next group in the cycle
+        if (groups.indexOf(groupId) + 1 == groups.size()) {
+            groupResult = groups.get(0);
+        } else {
+            groupResult = groups.get(groups.indexOf(groupId) + 1);
+        }
+        Group group = new Group(project.getName());
+        group.setId(groupResult);
+
+        assessmentDAO.persistMapping(new TaskMapping(user, group, null, taskName, project));
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapping.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapping.java
index 4f319786beba24b787b90f15e05a3de6f5bced09..01ec28690d6b4222174050b25cfee34055faaab3 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapping.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskMapping.java
@@ -1,53 +1,63 @@
 package unipotsdam.gf.process.tasks;
 
+import unipotsdam.gf.modules.group.Group;
 import unipotsdam.gf.modules.project.Project;
 import unipotsdam.gf.modules.user.User;
-import unipotsdam.gf.mysql.MysqlConnect;
-import unipotsdam.gf.mysql.VereinfachtesResultSet;
-
-import javax.inject.Inject;
-import java.util.ArrayList;
-import java.util.List;
 
 public class TaskMapping {
+    private User subject;
+    // object is either a group or a user
+    private Group objectGroup;
+    private User objectUser;
+    private TaskName taskName;
+    private Project project;
+
+    public TaskMapping(
+            User subject, Group objectGroup, User objectUser, TaskName taskName, Project project) {
+        this.subject = subject;
+        this.objectGroup = objectGroup;
+        this.objectUser = objectUser;
+        this.taskName = taskName;
+        this.project = project;
+    }
+
+    public User getSubject() {
+        return subject;
+    }
+
+    public void setSubject(User subject) {
+        this.subject = subject;
+    }
+
+    public Group getObjectGroup() {
+        return objectGroup;
+    }
+
+    public void setObjectGroup(Group objectGroup) {
+        this.objectGroup = objectGroup;
+    }
+
+    public User getObjectUser() {
+        return objectUser;
+    }
+
+    public void setObjectUser(User objectUser) {
+        this.objectUser = objectUser;
+    }
+
+    public TaskName getTaskName() {
+        return taskName;
+    }
+
+    public void setTaskName(TaskName taskName) {
+        this.taskName = taskName;
+    }
+
+    public Project getProject() {
+        return project;
+    }
 
-    @Inject
-    private MysqlConnect connect;
-
-    public List<Integer> groupToFeedback(List<Task> tasks, Task task, int howMany) {
-        List<Integer> result = new ArrayList<>();
-        int position = tasks.indexOf(task);
-        for (int i = 1; i <= howMany; i++) {
-            result.add(tasks.get((i + position) % tasks.size()).getGroupTask());  //modulo builds a circle in users
-        }
-        return result;
-    }
-
-    public Integer getWhichGroupToRate(Project project, User user) {
-        Integer result;
-        List<Integer> groups = new ArrayList<>();
-        connect.connect();
-        String mysqlRequest1 = "SELECT groupId FROM `groupuser` gu JOIN groups g on " +
-                "gu.groupid=g.id AND g.projectName=? WHERE `userEmail`=?";
-        VereinfachtesResultSet vereinfachtesResultSet1 =
-                connect.issueSelectStatement(mysqlRequest1, project.getName(), user.getEmail());
-        vereinfachtesResultSet1.next();
-        Integer groupId = vereinfachtesResultSet1.getInt("groupId");
-
-        String mysqlRequest2 = "SELECT DISTINCT id FROM `groups` WHERE `projectName`=? ";
-        VereinfachtesResultSet vereinfachtesResultSet2 =
-                connect.issueSelectStatement(mysqlRequest2, project.getName());
-        boolean next = vereinfachtesResultSet2.next();
-        while (next) {
-            groups.add(vereinfachtesResultSet2.getInt("id"));
-            next = vereinfachtesResultSet2.next();
-        }
-        if (groups.indexOf(groupId) + 1 == groups.size()) {
-            result = groups.get(0);
-        } else {
-            result = groups.get(groups.indexOf(groupId) + 1);
-        }
-        connect.close();
-        return result;
+    public void setProject(Project project) {
+        this.project = project;
     }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java
index b69a718d69566fe619d375e3a04fb32823a7a045..4c3c984bcb23bd0fd90884bffbdeca5e0fe3209c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java
@@ -20,14 +20,33 @@ public enum TaskName {
     OPTIONAL_PORTFOLIO_ENTRY, REFLECT_DOSSIER_CREATION, ANSWER_REFLEXION_QUESTIONS,
 
     // assessment tasks
-    UPLOAD_PRESENTATION, UPLOAD_FINAL_REPORT,
+
+    // students have to upload their presentation
+    UPLOAD_PRESENTATION,
+    // students have to upload their final report
+    UPLOAD_FINAL_REPORT,
+    // the docent waits for students to upload presentation
     WAIT_FOR_UPLOAD,
-    GIVE_ASSESSMENT, SEE_ASSESSMENT,
+
+
+    // student gives assessment to other group
+    GIVE_EXTERNAL_ASSESSMENT,
+
+    // student rates his own group
+    GIVE_INTERNAL_ASSESSMENT,
+
+
+    // DOCENT gives assessments
+    GIVE_ASSESSMENT,
+
+    SEE_ASSESSMENT,
 
     // shared tasks
     // execution phase
     CHOOSE_FITTING_COMPETENCES, CHOOSE_REFLEXION_QUESTIONS,
 
 
+    // the docent waits for students to grade their peers
+    WAIT_FOR_GRADING,
     END
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskOrder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskOrder.java
index e723b6ee4591dc63a7f38858a0b3276eeb4fffe9..7a4b90bedd81361a3115c17f0ad317fe56aa8624 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskOrder.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskOrder.java
@@ -27,6 +27,8 @@ public class TaskOrder {
         result.add(TaskName.WAIT_FOR_REFLECTION);
         result.add(TaskName.CLOSE_EXECUTION_PHASE);
         result.add(TaskName.UPLOAD_PRESENTATION);
+        result.add(TaskName.UPLOAD_FINAL_REPORT);
+        result.add(TaskName.GIVE_EXTERNAL_ASSESSMENT);
         result.add(TaskName.COLLECT_RESULTS_FOR_ASSESSMENT);
         result.add(TaskName.WAIT_FOR_PEER_ASSESSMENTS);
         result.add(TaskName.GIVE_ASSESSMENT);
diff --git a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
index 4c566263d0b35611e4a54c48be5e0570cc78a62b..1946eba3e86f6d6a1c199b9fb94ff2ba1bd0da5d 100644
--- a/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
+++ b/gemeinsamforschen/src/main/webapp/WEB-INF/web.xml
@@ -61,6 +61,7 @@
         <url-pattern>/journal/*</url-pattern> <!-- either url-pattern or servlet-name is mandatory -->
         <url-pattern>/profile/*</url-pattern> <!-- either url-pattern or servlet-name is mandatory -->
         <url-pattern>/researchReport/*</url-pattern> <!-- either url-pattern or servlet-name is mandatory -->
+        <url-pattern>/assessment/*</url-pattern> <!-- either url-pattern or servlet-name is mandatory -->
         <dispatcher>REQUEST</dispatcher>
     </filter-mapping>
 
diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/assessmentService.js b/gemeinsamforschen/src/main/webapp/assessment/js/assessmentService.js
index 7c03e3dc5c8fd8d7e798900cb76370feedb1ae4b..a2221e5e98c841852a3927f5b3997d2db8a7cb36 100644
--- a/gemeinsamforschen/src/main/webapp/assessment/js/assessmentService.js
+++ b/gemeinsamforschen/src/main/webapp/assessment/js/assessmentService.js
@@ -1,5 +1,13 @@
+// assert that utility is included
+
 function startGrading(project) {
     window.console.log("starting assessment for project: "+ project);
-    // TODO: send request to backend to start grading
-    alert("helloo");
+    let requestObj = new RequestObj(1, "/assessment", "/grading/start/projects/?",[project],[], "")
+    serverSide(requestObj, 'POST', function (response) {
+        // yeah it worked
+    });
+}
+
+function startDocentGrading(project) {
+    // TODO implement
 }
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js b/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js
index fe052b3caf00edaa97388fe2c6458c1c2d3444a9..a1357c15816d742e3507d522d8426360c9ce68cd 100644
--- a/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js
+++ b/gemeinsamforschen/src/main/webapp/assessment/js/rateContribution.js
@@ -3,17 +3,17 @@ $(document).ready(function () {
     $('#done').hide();
 
 
-    whichGroupToRate(prepareContributionRating);
+    $('#groupId').html(getQueryVariable(groupId));
+    prepareContributionRating();
 
     //editor.style = "min-height: 100px";
 
-
     $('#submit').on('click', function () {
         safeContributionRating();
     });
 });
 
-function whichGroupToRate(callback) {
+/*function whichGroupToRate(callback) {
     let projectName = $('#projectName').html().trim();
     $.ajax({
         url: '../rest/assessments/groupRate/project/' + projectName,
@@ -30,7 +30,7 @@ function whichGroupToRate(callback) {
 
         }
     })
-}
+}*/
 
 function safeContributionRating() {
     let contributions = $('.contributionRating');
@@ -70,7 +70,7 @@ function safeContributionRating() {
 
 function prepareContributionRating() {
     $.ajax({
-        url: '../rest/assessments/contributions/project/' + $('#projectName').html().trim(),
+        url: '../rest/assessments/contributions/project/' + getProjectName(),
         headers: {
             "Content-Type": "application/json",
             "Cache-Control": "no-cache"
diff --git a/gemeinsamforschen/src/main/webapp/project/js/create-project.js b/gemeinsamforschen/src/main/webapp/project/js/create-project.js
index 55a3931b7f70a9b5df9349bc6a38833b7a811908..05f186b26feb70f800e36159fb43322582770d3e 100644
--- a/gemeinsamforschen/src/main/webapp/project/js/create-project.js
+++ b/gemeinsamforschen/src/main/webapp/project/js/create-project.js
@@ -137,9 +137,12 @@ function getProjectValues() {
     }
     let time = new Date().getTime();
     let selectedCategories = [];
-    $(".category input:checked").each(function () {
+    $("input:checked[class*='category']").each(function () {
         selectedCategories.push($(this).val());
     });
+    if (selectedCategories.length === 0) {
+        stop();
+    }
 
     return {
         "name": projectName,
diff --git a/gemeinsamforschen/src/main/webapp/project/js/tasks.js b/gemeinsamforschen/src/main/webapp/project/js/tasks.js
index 8c72541dd4daf581eb85de8a27de3e10e7c17d42..5ff1ecd50da97d38fc933178da5dc6eeb085df77 100644
--- a/gemeinsamforschen/src/main/webapp/project/js/tasks.js
+++ b/gemeinsamforschen/src/main/webapp/project/js/tasks.js
@@ -11,11 +11,6 @@ $(document).ready(function () {
     groupViewLink.on('click', function () {
         location.href = "../groupfinding/view-groups.jsp?projectName=" + projectName;
     });
-    /**
-     * TODO refactor remove all the inline js and group it like this leading
-     *
-     */
-
 });
 
 function fillTasks(projectName, userEmail) {
@@ -308,7 +303,6 @@ function handleLinkedTasks(object, result) {
                     "projectName=" + object.projectName+"\')";
 
                 break;
-
             case "OPTIONAL_PORTFOLIO_ENTRY":
                 result.solveTaskWith = "Erstelle einen Portfolio-Eintrag (optional)";
                 result.solveTaskWithLink = "redirect(\'../annotation/upload-unstructured-dossier.jsp?" + $.param({
@@ -316,6 +310,20 @@ function handleLinkedTasks(object, result) {
                     fileRole: "Portfolio",
                     personal: "true"
                 }) + "\')";
+                break;
+           /* case "GIVE_ASSESSMENT":
+                result.solveTaskWith = "Bewerten";
+                result.solveTaskWithLink = "redirect(\'../annotation/upload-unstructured-dossier.jsp?" + $.param({
+                    projectName: object.projectName,
+                    contributionCategory: "Portfolio",
+                    personal: "true"
+                }) + "\')";
+                break;*/
+            case "GIVE_EXTERNAL_ASSESSMENT":
+                result.solveTaskWith = "Bewerten Sie die Ergebnisse ihrer Kommilitonen!";
+                result.solveTaskWithLink = "redirect(\'../assessment/rate-contribution.jsp?" +
+                    "projectName=" + object.projectName+"&groupId="+result.taskData.objectGroup.id+"\')";
+
                 break;
             default:
                 result.solveTaskWith = null;
diff --git a/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp b/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp
index ce3a8e73f47121cc6a81d90da1391f74a0ae024c..107f2a1f720ac881b56be7209b7a9f8654b0fe89 100644
--- a/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp
+++ b/gemeinsamforschen/src/main/webapp/project/tasks-docent.jsp
@@ -59,15 +59,26 @@
                                 {{if inCardSolver=="WAIT_FOR_UPLOAD"}}
                                     <div class="inCardSolver">
                                        {{if taskData.numberOfGroupsWithoutPresentation > 0 }}
-                                        Es haben noch ${taskData.numberOfGroupsWithoutPresentation} Gruppen keine Präsentation hochgeladen.
+                                        Anzahl an Gruppen ohne hochgeladene Präsentation:
+                                        ${taskData.numberOfGroupsWithoutPresentation}.
                                        {{/if}}
+                                        {{if taskData.numberOfGroupReportsMissing > 0 }}
+                                        Anzahl an Gruppen ohne hochgeladene Abgabe ${taskData.numberOfGroupReportsMissing}.
+                                       {{/if}}
+                                        <button id='startGradingButton' onClick="startGrading(getProjectName());">Bewertung abschließen</button>
+                                    </div>
+                                {{/if}}
+                                 {{if inCardSolver=="WAIT_FOR_GRADING"}}
+                                    <div class="inCardSolver">
                                         {{if taskData.numberOfGroupsWithoutExternalAssessment > 0 }}
-                                        ${taskData.numberOfGroupsWithoutExternalAssessment} Gruppen haben keine Bewertung durch Peers bekommen.
+                                        Anzahl an Gruppen ohne Bewertung durch Peers
+                                        bekommen: ${taskData.numberOfGroupsWithoutExternalAssessment} .
                                         {{/if}}
                                         {{if taskData.numberOfStudentsWithoutInternalAsssessment > 0 }}
-                                        ${taskData.numberOfStudentsWithoutInternalAsssessment} Studierende haben noch keine Bewertung der Gruppe bekommen.
+                                        Anzahl an Studierenden ohne Bewertung durch die Gruppe.
+                                        ${taskData.numberOfStudentsWithoutInternalAsssessment} .
                                         {{/if}}
-                                        <button id='startGradingButton' onClick="startGrading(getProjectName());">Bewertung abschließen</button>
+                                        <button id='startGradingButton' onClick="startDocentGrading(getProjectName());">Bewertung abschließen</button>
                                     </div>
                                 {{/if}}
                            {{/if}}
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index 1126545d4166a88d78baf8992026a95556803564..24c315ce8b0fe2748bd3e144ba1d1cdf5dffdca1 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -40,14 +40,14 @@ import static org.junit.Assert.assertTrue;
 
 @RunWith(MockitoJUnitRunner.class)
 public class ActivityFlowTest {
-
-    private final ArrayList<User> students = new ArrayList<>();
-    @Rule
-    public MockitoRule mockitoRule = MockitoJUnit.rule();
     /**
      * Utility to creaty dummy data for students
      */
+
+    @Rule
+    public MockitoRule mockitoRule = MockitoJUnit.rule();
     PodamFactory factory = new PodamFactoryImpl();
+    private final ArrayList<User> students = new ArrayList<>();
     private final Project project = factory.manufacturePojo(Project.class);
     private final User teacher = factory.manufacturePojo(User.class);
     @Inject
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
index 0cdbb30925880329b543917ba0fe6e0aa6b4d274..e1c55eee1762cb81f28c54e9d545f57b93f0f7a8 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/assessment/TestAddAssessment.java
@@ -181,12 +181,13 @@ public class TestAddAssessment {
     @Test
     public void quickstartAssessmentPhase() {
 
-
         Project project = new Project("assessmenttest2");
         List<Group> groups = groupFinding.getGroups(project);
         assertFalse(groups.isEmpty());
 
-        peerAssessmentProcess.startPeerAssessmentPhase(project);
+        //peerAssessmentProcess.startPeerAssessmentPhase(project);
+
+        peerAssessmentProcess.startGrading(project);
 
 
     }
diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql
index b1475a69ad5c243532fab16fa7a777bee647eae1..c7364bf6e46a6588babb537a1a60e39377d09af6 100644
--- a/gemeinsamforschen/src/test/resources/database/fltrail.sql
+++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql
@@ -535,6 +535,25 @@ CREATE TABLE `workrating`
 ) ENGINE = InnoDB
   DEFAULT CHARSET = utf8 COMMENT ='@Axel plz comment';
 
+
+create table mappedtasks
+(
+  id            int auto_increment
+    primary key,
+  subjectEmail  varchar(200) null,
+  groupObjectId int          null,
+  objectEmail   varchar(200) null,
+  taskname      varchar(200) null,
+  projectName   varchar(200) null
+) ENGINE = InnoDB
+  DEFAULT CHARSET = utf8
+  comment 'This table holds the task mapping i.e. which user should give feedback to which groups products';
+
+
+
+
+
+
 --
 -- Indizes der exportierten Tabellen
 --