diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
index 685e6018bd27b08078e15765b3f52c1d92dac648..15b4be6f88db355d026698f1b53fd9d59a77b709 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
@@ -3,6 +3,7 @@ package unipotsdam.gf.core.states;
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.interfaces.*;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
@@ -75,7 +76,7 @@ public class PhasesImpl implements IPhases {
     @Override
     public void endPhase(ProjectPhase currentPhase, Project project) {
         ProjectPhase changeToPhase = getNextPhase(currentPhase);
-        Map<StudentIdentifier, Constraints> tasks = new HashMap<>();
+        Map<StudentIdentifier, ConstraintsMessages> tasks = new HashMap<>();
         switch (changeToPhase) {
             case CourseCreation:
                 // saving the state
@@ -89,9 +90,9 @@ public class PhasesImpl implements IPhases {
             case DossierFeedback:
                 // check if everybody has uploaded a dossier
 
-                Boolean feedbacksGiven = feedback.checkFeedbackConstraints(project);
-                if (!feedbacksGiven) {
-                    feedback.assigningMissingFeedbackTasks(project);
+                tasks = feedback.checkFeedbackConstraints(project);
+                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));
@@ -100,19 +101,18 @@ public class PhasesImpl implements IPhases {
                 break;
             case Execution:
                 // check if the portfolios have been prepared for evaluation (relevant entries selected)
-                // todo: Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project);
-                Boolean portfoliosReady = true;
-                if (portfoliosReady) {
+                tasks = iJournal.getPortfoliosForEvaluationPrepared(project);
+                if (tasks.size()<1) {
                     // inform users about the end of the phase
                     iCommunication.sendMessageToUsers(project, Messages.AssessmentPhaseStarted(project));
                     saveState(project,changeToPhase);
                 } else {
-                    iJournal.assignMissingPortfolioTasks(project);
+                    iCommunication.informAboutMissingTasks(tasks, project);
                 }
                 break;
             case Assessment:
-                Boolean allAssessmentsDone = iPeerAssessment.allAssessmentsDone(project.getId());
-                if(allAssessmentsDone){
+                tasks = iPeerAssessment.allAssessmentsDone(project.getId());
+                if(tasks.size()<1){
                     iCommunication.sendMessageToUsers(project, Messages.CourseEnds(project));
                     saveState(project, changeToPhase);
                 }else{
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
index ac413e63a173d5a8dbbbffbebb90267c06bc984f..27c3d4c54370f6eb056a533bdc098507a703eeeb 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
@@ -1,34 +1,12 @@
 package unipotsdam.gf.core.states.model;
 
-import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
-
-public class Constraints {
-
-    public static String DossierWritten(StudentIdentifier student){
-        return student.getStudentId()+" hat noch kein Dossier hochgeladen.";
-    }
-
-    public static String FeedbackCount(StudentIdentifier student){
-        return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben.";
-    }
-
-    public static String QuizCount(StudentIdentifier student){
-        return student.getStudentId()+" hat noch kein Quiz erstellt.";
-    }
-
-    public static String JournalCount(StudentIdentifier student){
-        return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst.";
-    }
-
-    public static String DossierFinalized(StudentIdentifier student){
-        return student.getStudentId()+" hat sein Dossier noch nicht finalisiert.";
-    }
-
-    public static String JournalFinalized(StudentIdentifier student){
-        return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert";
-    }
-
-    public static String AssessmentDone(StudentIdentifier student){
-        return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen.";
-    }
+public enum Constraints {
+    DossierMissing,
+    FeedbackCount,
+    QuizCount,
+    JournalCount,
+    DossierOpen,
+    DescriptionsOpen,
+    JournalOpen,
+    AssessmentOpen
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java
new file mode 100644
index 0000000000000000000000000000000000000000..0d9d940d6212a8cb8353bf908f46386eb362f5bd
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ConstraintsMessages.java
@@ -0,0 +1,28 @@
+package unipotsdam.gf.core.states.model;
+
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+
+public class ConstraintsMessages {
+    private final Constraints constraint;
+    private final StudentIdentifier student;
+
+    public ConstraintsMessages(Constraints enumConstraints, StudentIdentifier student) {
+        this.constraint = enumConstraints;
+        this.student = student;
+    }
+
+    @Override
+    public String toString() {
+        switch (constraint) {
+            case QuizCount: return student.getStudentId()+" hat noch kein Quiz erstellt.";
+            case DossierMissing: return student.getStudentId()+" hat noch kein Dossier hochgeladen.";
+            case FeedbackCount: return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben.";
+            case JournalCount: return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst.";
+            case DossierOpen: return student.getStudentId()+" hat sein Dossier noch nicht finalisiert.";
+            case DescriptionsOpen: return student.getStudentId()+" hat die Descriptions noch nicht abgeschlossen.";
+            case JournalOpen: return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert";
+            case AssessmentOpen: return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen.";
+            default: return "default message";
+        }
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
index 773103d2bff7c333fe4ece1983d8e21f420c4341..ab43f4b2d1e756bdf6fec1f0d186d047e671e4f5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/Feedback.java
@@ -1,11 +1,15 @@
 package unipotsdam.gf.interfaces;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.Model.Peer2PeerFeedback;
 import unipotsdam.gf.modules.researchreport.ResearchReport;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Map;
 
 
 /**
@@ -66,7 +70,7 @@ public interface Feedback {
      * @param project
      * @return
      */
-    Boolean checkFeedbackConstraints(Project project);
+    Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project);
 
     /**
      * TODO implement a routine that assigns missing feedback tasks if someone drops out of a course
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
index 2705893f7f91d50b0052c22d9171aa74de43681c..8c3a7c89b46ae8a9ea0caefe776c43ff93adfb7c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/ICommunication.java
@@ -3,11 +3,15 @@ package unipotsdam.gf.interfaces;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.assignments.NotImplementedLogger;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.communication.model.Message;
 import unipotsdam.gf.modules.communication.model.chat.ChatMessage;
 import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * Provides connection to rocket chat
@@ -90,6 +94,9 @@ public interface ICommunication {
     // TODO implement as Email or whatever
     void sendSingleMessage(Message message, User user);
 
+    //added by Axel.
+    void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project);
+
     // TODO implement as Email or whatever
     void sendMessageToUsers(Project project, String message);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
index 6d28297f6abd51384a1cd68eeea02043e83948e4..f3b8786d88903d6f703ffcd3a4dad71c2f6d4c36 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IJournal.java
@@ -3,12 +3,14 @@ package unipotsdam.gf.interfaces;
 
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.journal.model.EPortfolio;
 import unipotsdam.gf.modules.journal.model.Journal;
 import unipotsdam.gf.modules.researchreport.ResearchReport;
 
 import java.io.File;
 import java.util.List;
+import java.util.Map;
 
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
@@ -23,7 +25,7 @@ public interface IJournal {
      * @return
      * @param project
      */
-    Boolean getPortfoliosForEvaluationPrepared(Project project) ;
+    Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) ;
 
     /**
      * find out, who hasn't prepared their portfolio for evaluation and send message or highlight in view
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
index 1892ec3961260ec76a97bf0fa2aa0362fdad5070..600ab4578c2b1fabd876fd816df0e73835769d16 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
@@ -1,6 +1,7 @@
 package unipotsdam.gf.interfaces;
 
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -98,7 +99,7 @@ public interface IPeerAssessment {
 
     String whatToRate(StudentIdentifier student);
 
-    Boolean allAssessmentsDone(String projectId);
+    Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId);
 
     void assignMissingAssessmentTasks(Project project);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
index 866d46be26992a8be17bd44f4b2cb6823ca60d37..e373e650be8cddb1e1761fd6675c9755b751550b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
@@ -1,6 +1,7 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -86,7 +87,7 @@ public class FBAssessement extends AssessmentDAO {
     }
 
     @Override
-    public Boolean allAssessmentsDone(String projectId) {
+    public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) {
         return null;
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
index 871b3c94af79f47dc054d632240a8648ee0992af..9662d75ec20146dd8c6cd74c036cf6bbc46e3bea 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
@@ -1,6 +1,7 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -61,7 +62,7 @@ public class PeerAssessment implements IPeerAssessment {
     }
 
     @Override
-    public Boolean allAssessmentsDone(String projectId) {
+    public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) {
         return null;
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
index a5cb9fae5bdddcc98bf3b438665e17860e50a969..06fb0dbb7768c68d3732ff1bfc1555f890a294e6 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
@@ -3,6 +3,7 @@ package unipotsdam.gf.modules.assessment.controller.service;
 import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -90,8 +91,8 @@ public class PeerAssessmentDummy implements IPeerAssessment {
     }
 
     @Override
-    public Boolean allAssessmentsDone(String projectId) {
-        return true;
+    public Map<StudentIdentifier, ConstraintsMessages> allAssessmentsDone(String projectId) {
+        return new HashMap<StudentIdentifier, ConstraintsMessages>();
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
index 1aa5c32fee0d669a6956d7822e9b084f294c264f..7f17f00c997b5b5f4897e54f786565c3741619a7 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/communication/service/CommunicationDummyService.java
@@ -6,7 +6,10 @@ import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.interfaces.ICommunication;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.communication.model.Message;
 import unipotsdam.gf.modules.communication.model.chat.ChatMessage;
 import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
@@ -18,6 +21,7 @@ import javax.inject.Singleton;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Resource
@@ -115,6 +119,11 @@ public class CommunicationDummyService implements ICommunication {
         NotImplementedLogger.logAssignment(Assignee.MARTIN, CommunicationDummyService.class, message2);
     }
 
+    @Override
+    public void informAboutMissingTasks(Map<StudentIdentifier, ConstraintsMessages> tasks, Project project) {
+
+    }
+
     @Override
     public void sendMessageToUsers(Project project, String message) {
         // TODO implement as email or directed message, popup after login or whatever
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java
index d4e9d8a8e99438365fa13c1b2ddad1c30c3d7957..9ed61e8c67dc6ca25c3c8c15cfd1113cd7ed8f8e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/IJournalImpl.java
@@ -4,6 +4,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.interfaces.IJournal;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.journal.model.EPortfolio;
@@ -12,7 +13,9 @@ import unipotsdam.gf.modules.researchreport.ResearchReport;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 public class IJournalImpl implements IJournal {
 
@@ -23,8 +26,11 @@ public class IJournalImpl implements IJournal {
 
 
     @Override
-    public Boolean getPortfoliosForEvaluationPrepared(Project project) {
-        return descriptionService.checkIfAllDescriptionsClosed(project) && journalService.checkIfAllJournalClosed(project);
+    public Map<StudentIdentifier, ConstraintsMessages> getPortfoliosForEvaluationPrepared(Project project) {
+        Map<StudentIdentifier, ConstraintsMessages> result =new HashMap<>();
+        result.putAll(descriptionService.checkIfAllDescriptionsClosed(project));
+        result.putAll(journalService.checkIfAllJournalClosed(project));
+        return result;
     }
 
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java
index be8dc781a90624f648196f0a74a55203ae053215..028ea0315d2862e76b3f4cea05fc9bb61fdeca6f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalService.java
@@ -2,10 +2,13 @@ package unipotsdam.gf.modules.journal.service;
 
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.journal.model.Journal;
 import unipotsdam.gf.modules.journal.model.JournalFilter;
 
 import java.util.ArrayList;
+import java.util.Map;
 
 /**
  * Service for learning Journal
@@ -57,7 +60,7 @@ public interface JournalService {
 
     void closeJournal(String journal);
 
-    boolean checkIfAllJournalClosed(Project project);
+    Map<StudentIdentifier, ConstraintsMessages> checkIfAllJournalClosed(Project project);
 
     ArrayList<User> getOpenUserByProject(Project project);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
index e6367199fb8ecea4fc583389ca7cef4b553027d1..a48d76daf6626ab70dcfd2662f85768157e974f7 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/JournalServiceImpl.java
@@ -5,6 +5,8 @@ import org.slf4j.LoggerFactory;
 import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.journal.model.Journal;
 import unipotsdam.gf.modules.journal.model.JournalFilter;
@@ -14,6 +16,8 @@ import unipotsdam.gf.modules.journal.model.dao.JournalDAOImpl;
 import unipotsdam.gf.modules.journal.util.JournalUtils;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 public class JournalServiceImpl implements JournalService {
 
@@ -99,8 +103,13 @@ public class JournalServiceImpl implements JournalService {
     }
 
     @Override
-    public boolean checkIfAllJournalClosed(Project project) {
-        return (journalDAO.getOpenJournals(project).size() == 0);
+    public Map<StudentIdentifier, ConstraintsMessages> checkIfAllJournalClosed(Project project) {
+        Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>();
+        for (String studentId: journalDAO.getOpenJournals(project)) {
+            StudentIdentifier student = new StudentIdentifier(project.getId(), studentId);
+            result.put(student, new ConstraintsMessages(Constraints.JournalOpen, student));
+        }
+        return result;
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
index 22ca2a4b63429bdda422f3be7547439caa8c1f0d..5dbeccab665dad77db6a1283bd7f3266144a8465 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImpl.java
@@ -3,6 +3,8 @@ package unipotsdam.gf.modules.journal.service;
 import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.journal.model.Link;
 import unipotsdam.gf.modules.journal.model.ProjectDescription;
@@ -12,6 +14,8 @@ import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAO;
 import unipotsdam.gf.modules.journal.model.dao.ProjectDescriptionDAOImpl;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
 
 public class ProjectDescriptionImpl implements ProjectDescriptionService {
 
@@ -65,8 +69,14 @@ public class ProjectDescriptionImpl implements ProjectDescriptionService {
     }
 
     @Override
-    public boolean checkIfAllDescriptionsClosed(Project project) {
-        return (descriptionDAO.getOpenDescriptions(project).size() == 0);
+    public Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project) {
+        ArrayList<String> missingStudents = descriptionDAO.getOpenDescriptions(project);
+        Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>();
+        for (String studentId: missingStudents) {
+            StudentIdentifier student = new StudentIdentifier(project.getId(), studentId);
+            result.put(student, new ConstraintsMessages(Constraints.DescriptionsOpen, student));
+        }
+        return result;
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
index a99aef7d96d10670e5e6b580481b5df727a543cf..03fa481606ba79f2fa30695b4ffb0d76afdedd7e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionService.java
@@ -2,10 +2,12 @@ package unipotsdam.gf.modules.journal.service;
 
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.journal.model.ProjectDescription;
 
 import java.util.ArrayList;
+import java.util.Map;
 
 /**
  * Service for learning Journal
@@ -25,7 +27,7 @@ public interface ProjectDescriptionService {
 
     void closeDescription(String projectDescriptionId);
 
-    boolean checkIfAllDescriptionsClosed(Project project);
+    Map<StudentIdentifier, ConstraintsMessages> checkIfAllDescriptionsClosed(Project project);
 
     ArrayList<User> getOpenUserByProject(Project project);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
index 0bf9d071c9cdeed87676e3570771afc632324aca..fbfb134cef7a3025f25512123f38ab6345fe95dd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
@@ -6,12 +6,17 @@ import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ConstraintsMessages;
 import unipotsdam.gf.interfaces.Feedback;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.peer2peerfeedback.peerfeedback.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 {
 
@@ -21,7 +26,7 @@ public class DummyFeedback implements Feedback {
     PodamFactory factory = new PodamFactoryImpl();
 
     private static Boolean missingTaskAssigned = false;
-    private Boolean constraintsFulfilled = false;
+    private Map<StudentIdentifier, Constraints> openTasks;
 
 
     public DummyFeedback() {
@@ -52,12 +57,12 @@ public class DummyFeedback implements Feedback {
     }
 
     @Override
-    public Boolean checkFeedbackConstraints(Project project) {
+    public Map<StudentIdentifier, ConstraintsMessages> checkFeedbackConstraints(Project project) {
         // TODO implement constraints
         NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "check Feedback constraints",
                 "checking feedback constraints ");
-        constraintsFulfilled = true;
-        return constraintsFulfilled;
+        Map<StudentIdentifier, ConstraintsMessages> result = new HashMap<>();
+        return result;
     }
 
     @Override
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index 284258c144cf54efabc89250533c0573edcd4e43..5a56ac27eaadc58b73e0ca50294af7d0b7557d8a 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -31,8 +31,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 import static org.mockito.Mockito.verify;
 
 
@@ -232,7 +231,7 @@ public class ActivityFlowTest {
         verify(feedback).assigningMissingFeedbackTasks(project);
 
         // assert that everybody has given and received mockfeedback
-        assertTrue(feedback.checkFeedbackConstraints(project));
+        assertEquals(0, feedback.checkFeedbackConstraints(project).size());
 
         // docent finishes phase
         phases.endPhase(ProjectPhase.DossierFeedback, project);
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java
index 05ce97fb48f7880edf0b40c40b79be515661bc81..63cdccef533e2184eb35533ec5271407b26b7c1f 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/JournalServiceImplTest.java
@@ -181,13 +181,13 @@ public class JournalServiceImplTest {
 
         ArrayList<Journal> resultJournals = journalDAO.getAllByProject(testProject,testStudent);
 
-        assertFalse(journalService.checkIfAllJournalClosed(project));
+        assertEquals(0, journalService.checkIfAllJournalClosed(project).size());
 
         for(Journal j : resultJournals){
             journalDAO.closeJournal(j.getId());
         }
 
-        assertTrue(journalService.checkIfAllJournalClosed(project));
+        assertEquals(0, journalService.checkIfAllJournalClosed(project).size());
 
     }
 
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java
index 66b84406055c680e3c314354ec6897e9126eff5e..bf20b9726cbb4bd08090c16fb0b665b209ec4099 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/service/ProjectDescriptionImplTest.java
@@ -172,13 +172,13 @@ public class ProjectDescriptionImplTest {
 
         Project project = new Project();
         project.setId(testProject);
-        assertFalse(projectDescriptionService.checkIfAllDescriptionsClosed(project));
+        assertEquals(0, projectDescriptionService.checkIfAllDescriptionsClosed(project).size());
 
         ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent));
 
         descriptionDAO.closeDescription(resDescription.getId());
 
-        assertTrue(projectDescriptionService.checkIfAllDescriptionsClosed(project));
+        assertEquals(0,projectDescriptionService.checkIfAllDescriptionsClosed(project).size());
 
     }