diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
index 05a28577ccdd335962df8cbf1038b4827f3e1cd9..0d796f05b2e90acf6b5bac5f4108710fcd30d5ec 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
@@ -1,55 +1,45 @@
 package unipotsdam.gf.config;
 
 import org.glassfish.hk2.utilities.binding.AbstractBinder;
+import unipotsdam.gf.interfaces.*;
 import unipotsdam.gf.modules.annotation.controller.AnnotationController;
+import unipotsdam.gf.modules.assessment.controller.service.AssessmentDBCommunication;
+import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+import unipotsdam.gf.modules.group.DummyGroupfinding;
+import unipotsdam.gf.modules.group.DummyProjectCreationService;
+import unipotsdam.gf.modules.group.GroupDAO;
 import unipotsdam.gf.modules.project.Management;
 import unipotsdam.gf.modules.project.ManagementImpl;
+import unipotsdam.gf.modules.project.ProjectConfigurationDAO;
 import unipotsdam.gf.modules.project.ProjectDAO;
+import unipotsdam.gf.modules.researchreport.DummyResearchReportManagement;
+import unipotsdam.gf.modules.researchreport.ResearchReportManagement;
 import unipotsdam.gf.modules.submission.controller.SubmissionController;
 import unipotsdam.gf.modules.user.UserDAO;
+import unipotsdam.gf.mysql.MysqlConnect;
+import unipotsdam.gf.mysql.MysqlConnectImpl;
 import unipotsdam.gf.process.DossierCreationProcess;
 import unipotsdam.gf.process.GroupFormationProcess;
 import unipotsdam.gf.process.ProjectCreationProcess;
 import unipotsdam.gf.process.constraints.ConstraintsImpl;
 import unipotsdam.gf.process.phases.PhasesImpl;
 import unipotsdam.gf.process.tasks.TaskDAO;
-import unipotsdam.gf.interfaces.*;
-import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment;
-import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
-import unipotsdam.gf.modules.group.DummyGroupfinding;
-import unipotsdam.gf.modules.group.GroupfindingImpl;
-import unipotsdam.gf.modules.group.DummyProjectCreationService;
-import unipotsdam.gf.modules.group.GroupDAO;
-import unipotsdam.gf.modules.journal.service.IJournalImpl;
-import unipotsdam.gf.modules.feedback.DummyFeedback;
-import unipotsdam.gf.modules.researchreport.DummyResearchReportManagement;
-import unipotsdam.gf.modules.researchreport.ResearchReportManagement;
-import unipotsdam.gf.modules.assessment.controller.service.AssessmentDBCommunication;
-import unipotsdam.gf.mysql.MysqlConnect;
-import unipotsdam.gf.mysql.MysqlConnectImpl;
 import unipotsdam.gf.session.GFContexts;
 
 public class GFApplicationBinder extends AbstractBinder {
 
-    /**
-     * TODO replace DummyImplementation
-     */
+
     @Override
     protected void configure() {
         bind(CommunicationDummyService.class).to(ICommunication.class);
         bind(ManagementImpl.class).to(Management.class);
-        bind(DummyFeedback.class).to(Feedback.class);
+
         bind(PeerAssessment.class).to(IPeerAssessment.class);
         bind(PhasesImpl.class).to(IPhases.class);
         bind(ManagementImpl.class).to(Management.class);
         bind(DummyResearchReportManagement.class).to(ResearchReportManagement.class);
-        bind(DummyProjectCreationService.class).to(DummyProjectCreationService.class);
-        bind(UserDAO.class).to(UserDAO.class);
-        bind(ProjectDAO.class).to(ProjectDAO.class);
-        bind(GroupDAO.class).to(GroupDAO.class);
-        bind(GroupfindingImpl.class).to(IGroupFinding.class);
-        bind(TaskDAO.class).to(TaskDAO.class);
-        bind(IJournalImpl.class).to(IJournal.class);
+        bind(DummyGroupfinding.class).to(IGroupFinding.class);
         bind(AssessmentDBCommunication.class).to(AssessmentDBCommunication.class);
         bind(GFContexts.class).to(GFContexts.class);
         bind(ProjectCreationProcess.class).to(ProjectCreationProcess.class);
@@ -58,8 +48,16 @@ public class GFApplicationBinder extends AbstractBinder {
         bind(DossierCreationProcess.class).to(DossierCreationProcess.class);
         bind(SubmissionController.class).to(SubmissionController.class);
         bind(AnnotationController.class).to(AnnotationController.class);
+        bind(ProjectConfigurationDAO.class).to(ProjectConfigurationDAO.class);
+        bind(DummyProjectCreationService.class).to(DummyProjectCreationService.class);
+        bind(UserDAO.class).to(UserDAO.class);
+        bind(ProjectDAO.class).to(ProjectDAO.class);
+        bind(GroupDAO.class).to(GroupDAO.class);
+        bind(TaskDAO.class).to(TaskDAO.class);
+
         bindMore();
     }
+
     protected void bindMore() {
         bind(MysqlConnectImpl.class).to(MysqlConnect.class);
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
index 064efcc5cf1d30c7300e1dbf9affcc0f6ee69ce0..647f8a2bdec41a7734e082be720c9b5e50bb0ca0 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
@@ -1,15 +1,9 @@
 package unipotsdam.gf.interfaces;
 import unipotsdam.gf.modules.project.Project;
 import unipotsdam.gf.modules.user.User;
-import unipotsdam.gf.process.constraints.ConstraintsMessages;
-import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
-import unipotsdam.gf.modules.feedback.Model.Peer2PeerFeedback;
+import unipotsdam.gf.process.progress.HasProgress;
 import unipotsdam.gf.modules.researchreport.ResearchReport;
 
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Map;
-
 
 /**
 PeerFeedback Interface
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/DummyFeedback.java
deleted file mode 100644
index a35a03645ecc12c8fb794bc884cc4c264c9588e9..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/DummyFeedback.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package unipotsdam.gf.modules.feedback;
-
-import uk.co.jemos.podam.api.PodamFactory;
-import uk.co.jemos.podam.api.PodamFactoryImpl;
-import unipotsdam.gf.assignments.Assignee;
-import unipotsdam.gf.assignments.NotImplementedLogger;
-import unipotsdam.gf.modules.project.Project;
-import unipotsdam.gf.modules.user.User;
-import unipotsdam.gf.process.constraints.Constraints;
-import unipotsdam.gf.process.constraints.ConstraintsMessages;
-import unipotsdam.gf.interfaces.Feedback;
-import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
-import unipotsdam.gf.modules.feedback.Model.Peer2PeerFeedback;
-import unipotsdam.gf.modules.researchreport.ResearchReport;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-public class DummyFeedback implements Feedback {
-
-    /**
-     * Utility to create dummy data for students
-     */
-    PodamFactory factory = new PodamFactoryImpl();
-
-    private static Boolean missingTaskAssigned = false;
-    private Map<StudentIdentifier, Constraints> openTasks;
-
-
-    public DummyFeedback() {
-
-    }
-
-
-    @Override
-    public void assigningMissingFeedbackTasks(Project project) {
-        NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "assigningMissingFeedbackTasks",
-                "assigning feedback tasks ");
-        missingTaskAssigned = true;
-    }
-
-    @Override
-    public void assignFeedbackTasks(Project project) {
-
-    }
-
-
-    @Override
-    public ResearchReport getFeedbackTask(User student) {
-        return factory.manufacturePojo(ResearchReport.class);
-    }
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
index 8625d62d3613776d2ef1659dbb9d1befbe74f4b2..300635446604ccfcaef281bc7becdc445da8fa47 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
@@ -3,6 +3,8 @@ package unipotsdam.gf.modules.feedback;
 import unipotsdam.gf.interfaces.Feedback;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.feedback.Model.Peer2PeerFeedback;
+import unipotsdam.gf.modules.group.GroupDAO;
+import unipotsdam.gf.modules.group.GroupFormationMechanism;
 import unipotsdam.gf.modules.project.Project;
 import unipotsdam.gf.modules.researchreport.ResearchReport;
 import unipotsdam.gf.modules.submission.controller.SubmissionController;
@@ -22,6 +24,9 @@ public class FeedbackImpl implements Feedback {
     @Inject
     private UserDAO userDAO;
 
+    @Inject
+    private GroupDAO groupDAO;
+
     @Inject
     private SubmissionController submissionController;
 
@@ -32,19 +37,33 @@ public class FeedbackImpl implements Feedback {
 
     @Override
     public void assignFeedbackTasks(Project project) {
-        List<User> usersByProjectName = userDAO.getUsersByProjectName(project.getName());
-        User firstUser = usersByProjectName.get(0);
-        User lastUser = usersByProjectName.get(usersByProjectName.size());
-        submissionController.updateFullSubmission(firstUser, lastUser);
-        for (int i = 0; i<usersByProjectName.size()-1;i++) {
-            User submissionOwner = usersByProjectName.get(i+1);
-            User feedbackGiver =usersByProjectName.get(i);
-            submissionController.updateFullSubmission(submissionOwner, feedbackGiver);
+        GroupFormationMechanism groupFormationMechanism = groupDAO.getGroupFormationMechanism(project);
+
+        switch (groupFormationMechanism) {
+            case SingleUser:
+                List<User> usersByProjectName = userDAO.getUsersByProjectName(project.getName());
+                User firstUser = usersByProjectName.get(0);
+                User lastUser = usersByProjectName.get(usersByProjectName.size());
+                submissionController.updateFullSubmission(firstUser, lastUser);
+                for (int i = 0; i<usersByProjectName.size()-1;i++) {
+                    User submissionOwner = usersByProjectName.get(i+1);
+                    User feedbackGiver =usersByProjectName.get(i);
+                    submissionController.updateFullSubmission(submissionOwner, feedbackGiver);
+                }
+                break;
+            case UserProfilStrategy:
+            case Manual:
+            case LearningGoalStrategy:
+                // TODO implement assigning feedback tasks in case of groups
+                // consider https://docs.google.com/document/d/1DLuggw7gxLbpbDblDTWVtYC-EI4Tb42y285mdABLC0Q/edit?ts=5bbb1f20#
         }
+
     }
 
     @Override
     public ResearchReport getFeedbackTask(User student) {
         return null;
     }
+
+
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ManagementImpl.java
index ec629507623cd6f355ad933ee0f21337de22395f..03327bb3d4ce66bf062a21286c823c9af9ccf71d 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ManagementImpl.java
@@ -39,6 +39,9 @@ public class ManagementImpl implements Management {
     @Inject
     private MysqlConnect connect;
 
+    @Inject
+    private ProjectConfigurationDAO projectConfigurationDAO;
+
 
     @Override
     public void delete(User user) {
@@ -119,13 +122,12 @@ public class ManagementImpl implements Management {
 
     @Override
     public void create(ProjectConfiguration projectConfiguration, Project project) {
-        ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO();
+
         projectConfigurationDAO.persistProjectConfiguration(projectConfiguration, project);
     }
 
     @Override
     public ProjectConfiguration getProjectConfiguration(Project project) {
-        ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO();
         return projectConfigurationDAO.loadProjectConfiguration(project);
     }
 
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 32592dfd8b33997d11e1f2241ba83cd9e580391b..ed2fca9eab84e1e21e5fa8bfb2ef14c49f91f574 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
@@ -3,8 +3,10 @@ package unipotsdam.gf.modules.submission.controller;
 import com.google.common.base.Strings;
 import org.slf4j.LoggerFactory;
 import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.modules.project.ProjectDAO;
 import unipotsdam.gf.modules.submission.view.SubmissionRenderData;
 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.interfaces.ISubmission;
@@ -15,21 +17,32 @@ import unipotsdam.gf.modules.submission.model.SubmissionPart;
 import unipotsdam.gf.modules.submission.model.SubmissionPartBodyElement;
 import unipotsdam.gf.modules.submission.model.SubmissionPartPostRequest;
 import unipotsdam.gf.modules.submission.model.SubmissionProjectRepresentation;
+import unipotsdam.gf.process.constraints.ConstraintsImpl;
+import unipotsdam.gf.process.phases.Phase;
+import unipotsdam.gf.process.progress.HasProgress;
+import unipotsdam.gf.process.progress.ProgressData;
 import unipotsdam.gf.process.tasks.FeedbackTaskData;
 
 import javax.inject.Inject;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
 /**
  * @author Sven Kästle
  * skaestle@uni-potsdam.de
  */
-public class SubmissionController implements ISubmission {
+public class SubmissionController implements ISubmission, HasProgress {
 
     @Inject
     private MysqlConnect connection;
 
+    @Inject
+    private UserDAO userDAO;
+
+    @Inject
+    private ConstraintsImpl constraints;
+
     private static final org.slf4j.Logger log = LoggerFactory.getLogger(SubmissionController.class);
 
     @Override
@@ -610,4 +623,32 @@ public class SubmissionController implements ISubmission {
         return count;
 
     }
+
+
+    @Override
+    public ProgressData getProgressData(Project project) {
+
+        ProgressData progressData = new ProgressData();
+        // the number of completed dossiers
+        progressData.setNumberOfCompletion(getFinalizedDossiersCount(project));
+
+        // the number of dossiers needed relativ to the group or user count
+        progressData.setNumberNeeded(constraints.dossiersNeeded(project));
+        List<User> strugglersWithSubmission = constraints.getStrugglersWithSubmission(project);
+        progressData.setUsersMissing(strugglersWithSubmission);
+        progressData.setAlmostComplete((progressData.getNumberNeeded()/progressData.getNumberOfCompletion()) <= (1/10));
+        return progressData;
+    }
+
+    public List<User> getAllUsersWithFeedbackGiven(Project project) {
+        List<User> result = new ArrayList<>();
+        connection.connect();
+        String query = "select * feedbackUser from fullsubmissions where projectName = ?";
+        VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, project.getName());
+        while (vereinfachtesResultSet.next()) {
+            result.add(userDAO.getUserByEmail(vereinfachtesResultSet.getString("feedbackUser")));
+        }
+        connection.close();
+        return result;
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
index 8b75361824c55771397d2f83155bad6c0d8d8a64..6392aeedea5c893c7b35830253aba088aa3a295d 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
@@ -27,7 +27,7 @@ public class DossierCreationProcess {
 
     @Inject
     private Management management;
-    
+
     @Inject
     private UserDAO userDAO;
 
@@ -42,17 +42,24 @@ public class DossierCreationProcess {
 
     /**
      * start the Dossier Phase
+     *
      * @param project
      */
     public void startDossierPhase(Project project) {
         Task task = new Task(TaskName.CLOSE_GROUP_FINDING_PHASE, project.getAuthorEmail(), project.getName(),
                 Progress.FINISHED);
         taskDAO.updateForUser(task);
+
+        // create a task, telling the docent to wait for students upload of dossiers
+        taskDAO.persist(project, new User(project.getAuthorEmail()), TaskName.WAITING_FOR_STUDENT_DOSSIERS, Phase
+                .DossierFeedback, TaskType.INFO);
+
+        // TODO create waiting for feedback to complete task
+
         taskDAO.persistMemberTask(project, TaskName.UPLOAD_DOSSIER, Phase.DossierFeedback);
     }
 
     /**
-     *
      * @param fullSubmissionPostRequest
      * @param user
      * @param project
@@ -73,7 +80,6 @@ public class DossierCreationProcess {
     }
 
     /**
-     *
      * @param fullSubmission
      * @param user
      */
@@ -82,7 +88,8 @@ public class DossierCreationProcess {
         submissionController.markAsFinal(fullSubmission);
 
         // mark annotate task as finished in db
-        Task task = new Task(TaskName.ANNOTATE_DOSSIER, user.getEmail(), fullSubmission.getProjectName(), Progress.FINISHED);
+        Task task = new Task(TaskName.ANNOTATE_DOSSIER, user.getEmail(), fullSubmission.getProjectName(),
+                Progress.FINISHED);
         taskDAO.updateForUser(task);
 
         if (constraints.checkIfFeedbackCanBeDistributed(project)) {
@@ -90,7 +97,8 @@ public class DossierCreationProcess {
             feedback.assignFeedbackTasks(project);
 
             // persist tasks for feedback
-            taskDAO.persistMemberTask(new Project(fullSubmission.getProjectName()), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
+            taskDAO.persistMemberTask(
+                    new Project(fullSubmission.getProjectName()), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
         }
     }
 
@@ -99,5 +107,13 @@ public class DossierCreationProcess {
         /*
         TODO implement
          */
+        /** TODO: Move this to the dossierCreationProcess
+         /*   if (tasks.size() > 0) {
+         iCommunication.informAboutMissingTasks(tasks, project);
+         } else {
+         // send a message to the users informing them about the start of the new phase
+         iCommunication.sendMessageToUsers(project, Messages.NewFeedbackTask(project));
+         saveState(project, changeToPhase);
+         }*/
     }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/constraints/ConstraintsImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/constraints/ConstraintsImpl.java
index e31633f11cab1ef6b8f89be769ab990eb45e0754..04edebe8d34edfc19296e6e768d122b91873d971 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/constraints/ConstraintsImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/constraints/ConstraintsImpl.java
@@ -7,10 +7,15 @@ import unipotsdam.gf.modules.group.GroupFormationMechanism;
 import unipotsdam.gf.modules.project.Project;
 import unipotsdam.gf.modules.project.ProjectDAO;
 import unipotsdam.gf.modules.submission.controller.SubmissionController;
+import unipotsdam.gf.modules.user.User;
+import unipotsdam.gf.modules.user.UserDAO;
 import unipotsdam.gf.mysql.MysqlConnect;
+import unipotsdam.gf.process.phases.Phase;
 import unipotsdam.gf.process.tasks.ParticipantsCount;
 
 import javax.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
 
 public class ConstraintsImpl {
 
@@ -23,9 +28,16 @@ public class ConstraintsImpl {
     @Inject
     GroupDAO groupDAO;
 
+    @Inject
+    UserDAO userDAO;
+
     @Inject
     private SubmissionController submissionController;
 
+    public ConstraintsImpl() {
+
+    }
+
     /**
      * groups can be formed if participantCount > numStudentsNeeded
      */
@@ -44,12 +56,67 @@ public class ConstraintsImpl {
      */
     public boolean checkIfFeedbackCanBeDistributed(Project project) {
         GroupFormationMechanism groupFormationMechanism = groupDAO.getGroupFormationMechanism(project);
+        int numberOfFinalizedDossiers  = submissionController.getFinalizedDossiersCount(project);
+        Boolean result = false;
+        switch (groupFormationMechanism) {
+            case SingleUser:
+                ParticipantsCount participantCount = projectDAO.getParticipantCount(project);
+                result =  numberOfFinalizedDossiers == participantCount.getParticipants();
+                break;
+            case LearningGoalStrategy:
+            case UserProfilStrategy:
+            case Manual:
+                int groupCount = groupDAO.getGroupsByProjectName(project.getName()).size();
+                result = numberOfFinalizedDossiers == groupCount;
+                break;
+        }
+        return result;
+    }
+
+    /**
+     * get how many dossiers are needed
+     *
+     * @param project
+     * @return
+     */
+    public int dossiersNeeded(Project project) {
+        GroupFormationMechanism groupFormationMechanism = groupDAO.getGroupFormationMechanism(project);
+        Integer result = 0;
         switch (groupFormationMechanism) {
             case SingleUser:
                 ParticipantsCount participantCount = projectDAO.getParticipantCount(project);
-                int numberOfFinalizedDossiers = submissionController.getFinalizedDossiersCount(project);
-                return numberOfFinalizedDossiers == participantCount.getParticipants();
+                result = participantCount.getParticipants();
+                break;
+            case LearningGoalStrategy:
+            case UserProfilStrategy:
+            case Manual:
+                int groupCount = groupDAO.getGroupsByProjectName(project.getName()).size();
+                result = groupCount;
+                break;
         }
-        return false;
+        return result;
     }
+
+
+    public List<User> getStrugglersWithSubmission(Project project) {
+        ArrayList<User> struggles = new ArrayList<>();
+        GroupFormationMechanism groupFormationMechanism = groupDAO.getGroupFormationMechanism(project);
+        switch (groupFormationMechanism) {
+            case SingleUser:
+                List<User> usersInProject = userDAO.getUsersByProjectName(project.getName());
+                List<User> usersHavingGivenFeedback = submissionController.getAllUsersWithFeedbackGiven(project);
+                for (User user : usersInProject) {
+                    if (!usersHavingGivenFeedback.contains(user)) {
+                        struggles.add(user);
+                    }
+                }
+                break;
+            case LearningGoalStrategy:
+            case Manual:
+            case UserProfilStrategy:
+        }
+        return struggles;
+    }
+
+
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java
index a334fdf9254bf56c71b9cf60a362a7e153da449e..e6cf044bc273faaad34edb25a43bf43cef8cac36 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java
@@ -91,16 +91,7 @@ public class PhasesImpl implements IPhases {
                 break;
             case DossierFeedback:
                 // check if everybody has uploaded a dossier
-
                 dossierCreationProcess.finishPhase(project);
-                /** TODO: Move this to the dossierCreationProcess
-             /*   if (tasks.size() > 0) {
-                    iCommunication.informAboutMissingTasks(tasks, project);
-                } else {
-                    // send a message to the users informing them about the start of the new phase
-                    iCommunication.sendMessageToUsers(project, Messages.NewFeedbackTask(project));
-                    saveState(project, changeToPhase);
-                }*/
                 break;
             case Execution:
                 // check if the portfolios have been prepared for evaluation (relevant entries selected)
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/HasProgress.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/HasProgress.java
new file mode 100644
index 0000000000000000000000000000000000000000..4219d1608d104405f476c01c4e34dfa857122254
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/HasProgress.java
@@ -0,0 +1,8 @@
+package unipotsdam.gf.process.progress;
+
+import unipotsdam.gf.modules.project.Project;
+import unipotsdam.gf.modules.user.User;
+
+public interface HasProgress {
+    ProgressData getProgressData(Project project);
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/ProgressData.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/ProgressData.java
new file mode 100644
index 0000000000000000000000000000000000000000..b3f7ba36641b62f6469359b0ecfa6839d36cbb31
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/progress/ProgressData.java
@@ -0,0 +1,55 @@
+package unipotsdam.gf.process.progress;
+
+import unipotsdam.gf.modules.user.User;
+
+import java.util.List;
+
+public class ProgressData {
+    private Boolean isAlmostComplete;
+    private int numberOfCompletion;
+    private int numberNeeded;
+    private java.util.List<User> usersMissing;
+
+    public ProgressData() {
+    }
+
+    public ProgressData(
+            Boolean isAlmostComplete, int numberOfCompletion, int numberNeeded, List<User> usersMissing) {
+        this.isAlmostComplete = isAlmostComplete;
+        this.numberOfCompletion = numberOfCompletion;
+        this.numberNeeded = numberNeeded;
+        this.usersMissing = usersMissing;
+    }
+
+    public Boolean getAlmostComplete() {
+        return isAlmostComplete;
+    }
+
+    public void setAlmostComplete(Boolean almostComplete) {
+        isAlmostComplete = almostComplete;
+    }
+
+    public int getNumberOfCompletion() {
+        return numberOfCompletion;
+    }
+
+    public void setNumberOfCompletion(int numberOfCompletion) {
+        this.numberOfCompletion = numberOfCompletion;
+    }
+
+    public int getNumberNeeded() {
+        return numberNeeded;
+    }
+
+    public void setNumberNeeded(int numberNeeded) {
+        this.numberNeeded = numberNeeded;
+    }
+
+    public List<User> getUsersMissing() {
+        return usersMissing;
+    }
+
+    public void setUsersMissing(List<User> usersMissing) {
+        this.usersMissing = usersMissing;
+    }
+}
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 6cb247f14f4287e7e7ac1e861c2fe1e835c71601..9d15f7379f6b99e9b86815ecbcfa74db66c5e1ae 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
@@ -178,6 +178,12 @@ public class TaskDAO {
                     result.add(feedbackTask);
                     break;
                 }
+                case WAITING_FOR_STUDENT_DOSSIERS: {
+                    Task task = getGeneralTask(vereinfachtesResultSet);
+                    task.setHasRenderModel(true);
+                    task.setTaskData(submissionController.getProgressData(project));
+                    break;
+                }
                 default: {
                     result.add(getGeneralTask(vereinfachtesResultSet));
                 }
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 ca3efac59d79e9caa47ffe944a343fa8aab34755..75388d34b1f6a5b109f0e1f3ccdc8a1ef0ffcba5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskName.java
@@ -7,5 +7,5 @@ public enum TaskName {
     // Student Tasks
     UPLOAD_DOSSIER, GIVE_FEEDBACK, CREATE_QUIZ, WRITE_EJOURNAL, ANNOTATE_DOSSIER, FINALIZE_DOSSIER,
     FINALIZE_EJOURNAL,
-    FORM_GROUPS_MANUALLY, EDIT_FORMED_GROUPS, CONTACT_GROUP_MEMBERS, ASSESSMENT, EDIT_FEEDBACK
+    FORM_GROUPS_MANUALLY, EDIT_FORMED_GROUPS, CONTACT_GROUP_MEMBERS, ASSESSMENT, WAITING_FOR_STUDENT_DOSSIERS, EDIT_FEEDBACK
 }
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index ef89726d4dc57911f843761229cfc16af2369aa6..42d9626173cfd78e290a8ad053d4804200a99fe1 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -253,6 +253,7 @@ public class ActivityFlowTest {
     public void createCourse() {
         // add Titel
         Project project = factory.manufacturePojo(Project.class);
+        project.setAuthorEmail(teacher.getEmail());
         management.create(project);
 
         ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class);
diff --git a/gemeinsamforschen/src/test/resources/database/fltrail.sql b/gemeinsamforschen/src/test/resources/database/fltrail.sql
index 9b1be4b4c6ccfe73e6580d067205e48d76da8495..6338b54ca8a5dfa7a32417d36dfc75fbfc2625da 100644
--- a/gemeinsamforschen/src/test/resources/database/fltrail.sql
+++ b/gemeinsamforschen/src/test/resources/database/fltrail.sql
@@ -51,7 +51,9 @@ CREATE TABLE `fullsubmissions` (
   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
   `user` varchar(120) NOT NULL,
   `text` mediumtext NOT NULL,
-  `projectName` varchar(120) NOT NULL
+  `projectName` varchar(120) NOT NULL,
+  `feedbackUser` varchar (255),
+  `finalized` tinyint(4)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE `grades` (
@@ -159,6 +161,12 @@ CREATE TABLE `workrating` (
   `autonomous` int(11) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
+CREATE TABLE submissionuser
+(
+    submissionId varchar(400),
+    userEmail varchar(255)
+);
+
 
 ALTER TABLE `annotations`
   ADD PRIMARY KEY (`id`);