diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
index 05a28577ccdd335962df8cbf1038b4827f3e1cd9..4ab73af15ec9805f93af64f38988861793034bfb 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.DummyProjectCreationService;
+import unipotsdam.gf.modules.group.GroupDAO;
+import unipotsdam.gf.modules.group.GroupfindingImpl;
 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(AssessmentDBCommunication.class).to(AssessmentDBCommunication.class);
         bind(GFContexts.class).to(GFContexts.class);
         bind(ProjectCreationProcess.class).to(ProjectCreationProcess.class);
@@ -58,8 +48,17 @@ 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/interfaces/IPhases.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
index 977056d194b92c84f552223b13ceae3e64933c25..a618c43f01312c2ac788665c6d34debe5ce72d0b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
@@ -11,9 +11,5 @@ public interface IPhases {
      */
     void endPhase(Phase phase, Project project);
 
-    /**
-     * the dependency to feedback should be settable externally for test reasons
-     * @param feedback the feedback that is send
-     */
-    void setFeedback(Feedback feedback);
+
 }
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/group/DummyGroupfinding.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/DummyGroupfinding.java
deleted file mode 100644
index b1fd4dc7c149e6d9f86f22aab8ff259d4a989f31..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/group/DummyGroupfinding.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package unipotsdam.gf.modules.group;
-
-import unipotsdam.gf.modules.project.Project;
-import unipotsdam.gf.assignments.Assignee;
-import unipotsdam.gf.assignments.NotImplementedLogger;
-import unipotsdam.gf.interfaces.IGroupFinding;
-import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DummyGroupfinding implements IGroupFinding {
-    @Override
-    public void selectGroupfindingCriteria(
-            GroupfindingCriteria groupfindingCriteria, Project project)  {
-        NotImplementedLogger.logAssignment(Assignee.MIRJAM, IGroupFinding.class);
-    }
-
-    @Override
-    public void persistGroups(
-            List<Group> groupComposition, Project project){
-        NotImplementedLogger.logAssignment(Assignee.MIRJAM, IGroupFinding.class);
-    }
-
-    @Override
-    public List<Group> getGroups(Project project) {
-        NotImplementedLogger.logAssignment(Assignee.MIRJAM, IGroupFinding.class);
-        return new ArrayList<>();
-    }
-
-    @Override
-    public void formGroups(GroupFormationMechanism groupFindingMechanism) {
-        NotImplementedLogger.logAssignment(Assignee.MIRJAM, IGroupFinding.class);
-    }
-
-    @Override
-    public ArrayList<String> getStudentsInSameGroup(
-            StudentIdentifier student) {
-        return null;
-    }
-
-    @Override
-    public int getMinNumberOfStudentsNeeded(Project project) {
-        return 2;
-    }
-}
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/project/ProjectView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
index e801d77eb55ff415695dfa04d68572e74ecae027..ab8525d346360372a68f0e3ef601f96bd5327f8a 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/project/ProjectView.java
@@ -29,9 +29,6 @@ public class ProjectView {
     @Inject
     private Management iManagement;
 
-    @Inject
-    private TaskDAO taskDao;
-
     @Inject
     private ProjectCreationProcess projectCreationProcess;
 
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..7574532bd0534d49af1a66037d3924cbab128f6b 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
@@ -2,9 +2,13 @@ package unipotsdam.gf.modules.submission.controller;
 
 import com.google.common.base.Strings;
 import org.slf4j.LoggerFactory;
+import unipotsdam.gf.modules.group.GroupDAO;
+import unipotsdam.gf.modules.group.GroupFormationMechanism;
 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 +19,36 @@ 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 unipotsdam.gf.process.tasks.ParticipantsCount;
 
 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 GroupDAO groupDAO;
+
+    @Inject
+    private ProjectDAO projectDAO;
+
     private static final org.slf4j.Logger log = LoggerFactory.getLogger(SubmissionController.class);
 
     @Override
@@ -610,4 +629,77 @@ 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(dossiersNeeded(project));
+        List<User> strugglersWithSubmission = getStrugglersWithSubmission(project);
+        progressData.setUsersMissing(strugglersWithSubmission);
+        progressData.setAlmostComplete((progressData.getNumberNeeded()/progressData.getNumberOfCompletion()) <= (1/10));
+        return progressData;
+    }
+
+    /**
+     * 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);
+                result = participantCount.getParticipants();
+                break;
+            case LearningGoalStrategy:
+            case UserProfilStrategy:
+            case Manual:
+                int groupCount = groupDAO.getGroupsByProjectName(project.getName()).size();
+                result = groupCount;
+                break;
+        }
+        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 = getAllUsersWithFeedbackGiven(project);
+                for (User user : usersInProject) {
+                    if (!usersHavingGivenFeedback.contains(user)) {
+                        struggles.add(user);
+                    }
+                }
+                break;
+            case LearningGoalStrategy:
+            case Manual:
+            case UserProfilStrategy:
+        }
+        return struggles;
+    }
+
+    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/ProjectCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
index 4eb53bd199224307b91b2e994b026c6693b57150..6549b063b6ba49b1cb2b4d450e06f0894111e243 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/ProjectCreationProcess.java
@@ -35,8 +35,6 @@ public class ProjectCreationProcess {
     @Inject
     private GroupDAO groupDAO;
 
-    @Inject
-    private IPhases phases;
 
     /**
      * STEP 1
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..7948515f03de3c89904bbcfe0739146b6bde5e24 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,24 @@ 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);
-                int numberOfFinalizedDossiers = submissionController.getFinalizedDossiersCount(project);
-                return numberOfFinalizedDossiers == participantCount.getParticipants();
+                result =  numberOfFinalizedDossiers == participantCount.getParticipants();
+                break;
+            case LearningGoalStrategy:
+            case UserProfilStrategy:
+            case Manual:
+                int groupCount = groupDAO.getGroupsByProjectName(project.getName()).size();
+                result = numberOfFinalizedDossiers == groupCount;
+                break;
         }
-        return false;
+        return result;
     }
+
+
+
+
 }
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..891d6f8560f54b83e76898a347e19f9ea61eaa5c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/phases/PhasesImpl.java
@@ -35,9 +35,6 @@ public class PhasesImpl implements IPhases {
     @Inject
     private IPeerAssessment iPeerAssessment;
 
-    @Inject
-    private Feedback feedback;
-
     @Inject
     private ICommunication iCommunication;
 
@@ -47,8 +44,7 @@ public class PhasesImpl implements IPhases {
     @Inject
     private DossierCreationProcess dossierCreationProcess;
 
-    @Inject
-    private ConstraintsImpl constraints;
+
 
 
     public PhasesImpl() {
@@ -91,16 +87,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)
@@ -161,7 +148,5 @@ public class PhasesImpl implements IPhases {
     }
 
 
-    public void setFeedback(Feedback feedback) {
-        this.feedback = feedback;
-    }
+
 }
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..93e94f69d61b1349896f4c5123b8936f6fb44a86 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -100,7 +100,7 @@ public class ActivityFlowTest {
 
         // TODO @Julian: Find out more elegant way of doing this
         researchReportManagement.setFeedback(feedback);
-        phases.setFeedback(feedback);
+//        phases.setFeedback(feedback);
 
     }
 
@@ -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`);