diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
index b1ea7aaeef0ce3f55377f7d7763c27b425526d42..1ee2cf14cbceb21ad8f2222dd3373dd17bb05cfd 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -5,6 +5,7 @@ import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
 import unipotsdam.gf.core.management.group.Group;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.project.ProjectConfiguration;
+import unipotsdam.gf.core.management.project.ProjectConfigurationDAO;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
@@ -330,6 +331,13 @@ public class ManagementImpl implements Management {
 
     @Override
     public void create(ProjectConfiguration projectConfiguration, Project project) {
-        // TODO implement
+        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/core/management/project/ProjectConfiguration.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
index e7732ac5bfaeb9b8ecf988a34dd4662930998118..cc66f5634f1f05f969fcd423c24ce9134d21a653 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
@@ -16,7 +16,8 @@ public class ProjectConfiguration {
     private HashMap<GroupFormationMechanism, Boolean> groupMechanismSelected;
 
     public ProjectConfiguration(
-            HashMap<ProjectPhase, Boolean> phasesSelected, HashMap<Category, Boolean> criteriaSelected,
+            HashMap<ProjectPhase, Boolean> phasesSelected,
+            HashMap<Category, Boolean> criteriaSelected,
             HashMap<AssessmentMechanism, Boolean> assessmentMechanismSelected,
             HashMap<GroupFormationMechanism, Boolean> groupMechanismSelected) {
         this.phasesSelected = phasesSelected;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..6a9f147857cc89528fa38a08e85c878b8d474cf3
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
@@ -0,0 +1,128 @@
+package unipotsdam.gf.core.management.project;
+
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.modules.assessment.AssessmentMechanism;
+import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
+import unipotsdam.gf.modules.peer2peerfeedback.Category;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+
+public class ProjectConfigurationDAO {
+
+    /**
+     * @param projectConfiguration
+     */
+    public void persistProjectConfiguration(ProjectConfiguration projectConfiguration, Project project) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+
+        // persist Criteria
+        HashMap<Category, Boolean> criteriaSelected = projectConfiguration.getCriteriaSelected();
+        for (Category category : criteriaSelected.keySet()) {
+            Boolean criteriumSelected = criteriaSelected.get(category);
+            if (criteriumSelected != null && criteriumSelected) {
+                String projectId = project.getId();
+                String categoryName = category.name();
+                String mysqlRequest = "insert INTO categoriesSelected (`projectId`,`categorySelected`) VALUES (?,?)";
+                connect.issueInsertOrDeleteStatement(mysqlRequest, projectId, categoryName );
+            }
+        }
+
+        // persist Phases
+        HashMap<ProjectPhase, Boolean> phasesSelected = projectConfiguration.getPhasesSelected();
+        for (ProjectPhase phase : phasesSelected.keySet()) {
+            Boolean projectPhaseSelected = phasesSelected.get(phase);
+            if (projectPhaseSelected != null && projectPhaseSelected) {
+                String mysqlRequest = "insert INTO phasesSelected (`projectId`,`phaseSelected`) VALUES (?,?)";
+                connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), phase.name());
+            }
+        }
+
+        // persist GroupFinding
+        HashMap<GroupFormationMechanism, Boolean> groupFindingMechanism =
+                projectConfiguration.getGroupMechanismSelected();
+        for (GroupFormationMechanism gfm : groupFindingMechanism.keySet()) {
+            Boolean groupFindingMechanismSelected = groupFindingMechanism.get(gfm);
+            if (groupFindingMechanismSelected != null && groupFindingMechanismSelected) {
+                String mysqlRequest =
+                        "insert INTO groupfindingMechanismSelected (`projectId`,`gfmSelected`) VALUES (?,?)";
+                connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), gfm.name());
+            }
+        }
+
+
+        // persist assessmentMechanismSelected
+        HashMap<AssessmentMechanism, Boolean> assessmentMechanismsSelected =
+                projectConfiguration.getAssessmentMechanismSelected();
+        for (AssessmentMechanism assessmentMechanism : assessmentMechanismsSelected.keySet()) {
+            Boolean asmSelected = assessmentMechanismsSelected.get(assessmentMechanism);
+            if (asmSelected != null && asmSelected) {
+                String mysqlRequest =
+                        "insert INTO assessmentMechanismSelected (`projectId`,`amSelected`) VALUES (?,?)";
+                connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId(), assessmentMechanism.name());
+            }
+        }
+        connect.close();
+    }
+
+    public ProjectConfiguration loadProjectConfiguration(Project project) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+
+
+        HashMap<ProjectPhase, Boolean> projectPhasesSelected =
+                getSelectionFromTable(connect, ProjectPhase.class, project, "phasesSelected");
+
+        HashMap<Category, Boolean> categorySelected =
+                getSelectionFromTable(connect, Category.class, project, "categoriesSelected");
+
+        HashMap<AssessmentMechanism, Boolean> asmSelected =
+                getSelectionFromTable(connect, AssessmentMechanism.class, project, "assessmentMechanismSelected");
+
+
+        HashMap<GroupFormationMechanism, Boolean> gfmSelected =
+                getSelectionFromTable(connect, GroupFormationMechanism.class, project, "groupfindingMechanismSelected");
+
+        connect.close();
+
+        ProjectConfiguration projectConfiguration = new ProjectConfiguration(projectPhasesSelected, categorySelected,
+                asmSelected,gfmSelected);
+        return projectConfiguration;
+    }
+
+    /**
+     * this looks like magic but it is just a hack loading all the config tables by taking advantage
+     * of the fact that they all have two columns with the second being the selected attribute and the first being the
+     * project id
+     *
+     * @param connect
+     * @param selectionclass
+     * @param project
+     * @param table
+     * @param <T>
+     * @return
+     */
+    private <T extends Enum<T>> HashMap<T, Boolean> getSelectionFromTable(
+            MysqlConnect connect, Class<T> selectionclass, Project project, String table) {
+        // get phasesSelected
+        String id = project.getId();
+        String mysqlRequest = "SELECT * FROM " + table + " where projectId = ?";
+        VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, id);
+        HashMap<T, Boolean> projectPhaseBoolean = new HashMap<>();
+        while (!vereinfachtesResultSet.isLast()) {
+            Boolean next = vereinfachtesResultSet.next();
+            if (next) {
+                String phaseSelected = vereinfachtesResultSet.getObject(2).toString();
+                T phaseSelected1 = Enum.valueOf(selectionclass, phaseSelected);
+                projectPhaseBoolean.put(phaseSelected1, true);
+            } else {
+                break;
+            }
+        }
+        return projectPhaseBoolean;
+    }
+}
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 d8894437354dc1e6f4fbbd6d75cebb6d0fde3e8e..b93f0e8c68e66b3d5c2044db66a4e9eb13caee20 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
@@ -1,5 +1,7 @@
 package unipotsdam.gf.modules.peer2peerfeedback;
 
+import uk.co.jemos.podam.api.PodamFactory;
+import uk.co.jemos.podam.api.PodamFactoryImpl;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.interfaces.Feedback;
@@ -9,6 +11,13 @@ import java.io.File;
 import java.util.ArrayList;
 
 public class DummyFeedback implements Feedback {
+
+    /**
+     * Utility to creaty dummy data for students
+     */
+    PodamFactory factory = new PodamFactoryImpl();
+
+
     @Override
     public Peer2PeerFeedback createPeer2PeerFeedbackmask(
             User feedbackuser, User selectedstudent, File document) {
@@ -46,4 +55,9 @@ public class DummyFeedback implements Feedback {
     public void assignFeedbackTasks() {
 
     }
+
+    @Override
+    public ResearchReport getFeedbackTask(User student) {
+        return factory.manufacturePojo(ResearchReport.class);
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java
index 712378eddbc2718b04fe597a1caf86c59e45ef31..1f1ece9f5505f20a499f57a860595d1b985a75ca 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/DummyResearchReportManagement.java
@@ -1,13 +1,15 @@
 package unipotsdam.gf.modules.researchreport;
 
 import sun.reflect.generics.reflectiveObjects.NotImplementedException;
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 
 import java.io.File;
 
 public class DummyResearchReportManagement implements ResearchReportManagement {
     @Override
-    public String createResearchReport(ResearchReport researchReport, User student) {
+    public String createResearchReport(
+            ResearchReport researchReport, Project project, User student) {
         throw new NotImplementedException();
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java
index 8283acc4482d7bfe8cba0ba63a1bc7742be28e17..65505044a340115087c3bf197dff78e8312bf4dc 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/researchreport/ResearchReportManagement.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.modules.researchreport;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 
 import java.io.File;
@@ -15,10 +16,12 @@ public interface ResearchReportManagement {
      * Create a File
      *
      * @param researchReport Name of the Report
+     * @param project
      * @param student
      * @return Returns the reportId
      */
-    String createResearchReport(ResearchReport researchReport, User student);
+    String createResearchReport(
+            ResearchReport researchReport, Project project, User student);
 
 
     /**
diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
index 71f44c061c7cadc62ba178d87d521a212fb08808..99abfe1144640d485347d68b4ba1b5624b41d1bb 100644
--- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
@@ -12,9 +12,10 @@ CREATE TABLE if not exists `projects` (
 
   `password`      varchar(400) NOT NULL,
 
-  `active`        tinyint(1) NOT NULL,
+  `active`        tinyint(1)   NOT NULL,
 
-  `timecreated`   timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `timecreated`   timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+  ON UPDATE CURRENT_TIMESTAMP,
 
   `author`        varchar(400) NOT NULL,
 
@@ -106,25 +107,29 @@ CREATE TABLE if not exists projectuser
 
   ENGINE = InnoDB
 
-  DEFAULT CHARSET = utf8;CREATE TABLE if not exists `annotations` (
+  DEFAULT CHARSET = utf8;
+CREATE TABLE if not exists `annotations` (
 
-  `id` varchar(120) NOT NULL,
+  `id`             varchar(120) NOT NULL,
 
-  `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  `timestamp`      timestamp    NOT NULL DEFAULT CURRENT_TIMESTAMP
+  ON UPDATE CURRENT_TIMESTAMP,
 
-  `userId` int(11) DEFAULT NULL,
+  `userId`         int(11)               DEFAULT NULL,
 
-  `targetId` int(11) DEFAULT NULL,
+  `targetId`       int(11)               DEFAULT NULL,
 
-  `body` varchar(280) DEFAULT NULL,
+  `body`           varchar(280)          DEFAULT NULL,
 
-  `startCharacter` int(11) DEFAULT NULL,
+  `startCharacter` int(11)               DEFAULT NULL,
 
-  `endCharacter` int(11) DEFAULT NULL,
+  `endCharacter`   int(11)               DEFAULT NULL,
 
   PRIMARY KEY (`id`)
 
-) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
 
 alter table users
 
@@ -134,17 +139,17 @@ CREATE TABLE if not exists quiz
 
 (
 
-  author varchar(400) NOT NULL,
+  author    varchar(400) NOT NULL,
 
   projectId varchar(400) NOT NULL,
 
-  question varchar(400) NOT NULL,
+  question  varchar(400) NOT NULL,
 
-  mcType varchar(400) NOT NULL,
+  mcType    varchar(400) NOT NULL,
 
-  answer varchar(400) NOT NULL,
+  answer    varchar(400) NOT NULL,
 
-  correct tinyint(1) NOT NULL
+  correct   tinyint(1)   NOT NULL
 
 )
 
@@ -156,17 +161,49 @@ CREATE TABLE if not exists tasks
 
 (
 
-  userId varchar(400) NOT NULL,
+  userId    varchar(400) NOT NULL,
 
   projectId varchar(400) NOT NULL,
 
-  taskUrl varchar (400) NOT NULL
+  taskUrl   varchar(400) NOT NULL
 )
 
   ENGINE = InnoDB
 
   DEFAULT CHARSET = utf8;
 
-ALTER TABLE `projectuser` ADD INDEX( `projectId`, `userId`);
-ALTER TABLE `projectuser` ADD UNIQUE( `projectId`, `userId`);
-ALTER TABLE `projects` ADD UNIQUE( `id`);
\ No newline at end of file
+
+CREATE TABLE if not exists phasesSelected (
+ `projectId`    varchar(100) NOT NULL,
+  phaseSelected varchar(200) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+CREATE TABLE if not exists categoriesSelected (
+  `projectId`    varchar(100) NOT NULL,
+   categorySelected varchar(200) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+CREATE TABLE if not exists groupfindingMechanismSelected (
+  `projectId`    varchar(100) NOT NULL,
+   gfmSelected   varchar(200) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+CREATE TABLE if not exists assessmentMechanismSelected (
+  `projectId`    varchar(100) NOT NULL,
+   amSelected    varchar(200) NOT NULL
+)
+  ENGINE = InnoDB
+  DEFAULT CHARSET = utf8;
+
+ALTER TABLE `projectuser`
+  ADD INDEX (`projectId`, `userId`);
+ALTER TABLE `projectuser`
+  ADD UNIQUE (`projectId`, `userId`);
+ALTER TABLE `projects`
+  ADD UNIQUE (`id`);
\ No newline at end of file
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index 6cd64c4818575deac1faeb9699c524c9317ffb32..c7836b4195300289c45b09c62b68880946409181 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -26,6 +26,7 @@ import unipotsdam.gf.modules.researchreport.ResearchReportManagement;
 import javax.inject.Inject;
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
 
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -123,7 +124,7 @@ public class ActivityFlowTest {
         for (User student : students) {
             // persist dossiers
             ResearchReport researchReport = factory.manufacturePojo(ResearchReport.class);
-            researchReportManagement.createResearchReport(researchReport, student);
+            researchReportManagement.createResearchReport(researchReport, project, student);
         }
 
         // assert that after the last report has been submitted, the feedback tasks were assigned automatically
@@ -144,12 +145,30 @@ public class ActivityFlowTest {
         }
 
         // students upload updated dossier
+        ArrayList<User> students2 = students;
+        Iterator<User> students2Iterator = students2.iterator();
+        students2Iterator.remove();
+        students2Iterator.remove();
+        while (students2Iterator.hasNext()) {
+            User student = students2Iterator.next();
+            // persist dossiers (versioning)
+            ResearchReport researchReport = factory.manufacturePojo(ResearchReport.class);
+            researchReportManagement.createResearchReport(researchReport, project, student);
+        }
 
         // docent finishes phase
+        phases.endPhase(ProjectPhase.DossierFeedback, project);
 
         // student misses feedback -> reassignment
+        // assert that while reports are still missing feedback tasks are reassigned
+        verify(feedback, times(1)).assigningMissingFeedbackTasks(project);
+
+        // assert that everybody has given and received feedback
+        assert feedback.checkFeedbackConstraints(project);
+
+        // docent finishes phase
+        phases.endPhase(ProjectPhase.DossierFeedback, project);
 
-        // feedback restarted
     }
 
 
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
index 22b2822668e4214c1b239bf46c615c10be793cf2..9fbce54234111c240d671b9fb5e6ea7443201dda 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ManagementTest.java
@@ -8,17 +8,19 @@ import org.glassfish.jersey.server.ResourceConfig;
 import org.glassfish.jersey.test.JerseyTest;
 import org.junit.Before;
 import org.junit.Test;
+import uk.co.jemos.podam.api.PodamFactory;
+import uk.co.jemos.podam.api.PodamFactoryImpl;
 import unipotsdam.gf.config.GFApplicationBinder;
 import unipotsdam.gf.config.GFResourceConfig;
 import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.management.project.ProjectConfiguration;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserProfile;
 
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
 
 /**
  * Created by dehne on 01.06.2018.
@@ -28,6 +30,11 @@ import static org.junit.Assert.assertTrue;
 public class ManagementTest  {
 
 
+    /**
+     * Utility to creaty dummy data for students
+     */
+    PodamFactory factory = new PodamFactoryImpl();
+
 
     @Test
     public void testDelete() {
@@ -114,4 +121,20 @@ public class ManagementTest  {
         assert !users.isEmpty();
 
     }
+
+    @Test
+    public void testProjectConfiguration() {
+        ProjectConfiguration projectConfiguration = factory.manufacturePojo(ProjectConfiguration.class);
+        Project project = factory.manufacturePojo(Project.class);
+
+        ManagementImpl management = new ManagementImpl();
+        management.create(projectConfiguration, project);
+
+        ProjectConfiguration projectConfiguration1 = management.getProjectConfiguration(project);
+        assertNotNull(projectConfiguration1.getCriteriaSelected());
+        assertNotNull(projectConfiguration1.getAssessmentMechanismSelected());
+        assertNotNull(projectConfiguration1.getGroupMechanismSelected());
+        assertNotNull(projectConfiguration1.getPhasesSelected());
+
+    }
 }
\ No newline at end of file