diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
index d43eb07a82fde220e816f8e5b314900365a9c0fe..17049249f83b82a452f31e805723a65bf11f7678 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
@@ -37,7 +37,12 @@ public interface Management {
      */
     void create(Project project);
 
-    void create(Group group, String projectId);
+    /**
+     * create a Group in the database
+     *
+     * @param group
+     */
+    void create(Group group);
 
     /**
      * Delete a Project in the database
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 1a65714f1dd012270d0a597085d84742e4ab746e..16cfe59be2f9f392fca1172f156fcd6321f3ef2c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -18,6 +18,8 @@ import javax.annotation.Resource;
 import javax.inject.Singleton;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
 import java.util.List;
 import java.util.UUID;
 
@@ -53,7 +55,6 @@ public class ManagementImpl implements Management {
         // TODO implmement UserProfile @Mar
     }
 
-    // TODO: naming convention discussion? all is named create, but group is named createGroup
     @Override
     public void create(Project project) {
         UUID uuid = UUID.randomUUID();
@@ -77,6 +78,9 @@ public class ManagementImpl implements Management {
         connect.connect();
         String mysqlRequest = "DELETE FROM projects where id = (?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest, project.getId());
+
+        // TODO: delete all groups of project?
+
         connect.close();
     }
 
@@ -93,8 +97,11 @@ public class ManagementImpl implements Management {
     public void update(User user) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?, `rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1";
+        String mysqlRequest = "UPDATE `users` SET `name`=?,`password`=?,`email`=?,`token`=?,`isStudent`=?," +
+                "`rocketChatId`=?,`rocketChatAuthToken`=? WHERE email=? LIMIT 1";
         //TODO: maybe add handling if a line is actually updated
+        //TODO: if user is updated, it also must update all other tables which includes some information about the user, for example project user
+
         connect.issueUpdateStatement(mysqlRequest, user.getName(), user.getPassword(), user.getEmail(),
                 user.getToken(), user.getStudent(), user.getRocketChatId(), user.getRocketChatAuthToken(), user.getEmail());
         connect.close();
@@ -157,10 +164,11 @@ public class ManagementImpl implements Management {
         String name = vereinfachtesResultSet.getString("name");
         String password = vereinfachtesResultSet.getString("password");
         String email = vereinfachtesResultSet.getString("email");
+        String token = vereinfachtesResultSet.getString("token");
         String rocketChatId = vereinfachtesResultSet.getString("rocketChatId");
         String rocketChatAuthToken = vereinfachtesResultSet.getString("rocketChatAuthToken");
         Boolean isStudent = vereinfachtesResultSet.getBoolean("isStudent");
-        return new User(name, password, email, rocketChatId, rocketChatAuthToken, isStudent);
+        return new User(name, password, email, token, rocketChatId, rocketChatAuthToken, isStudent);
     }
 
     private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
@@ -173,15 +181,21 @@ public class ManagementImpl implements Management {
         String token = vereinfachtesResultSet.getString("token");
         String phase = vereinfachtesResultSet.getString("phase");
 
-        return new Project(id, password, active, timestamp, author, adminPassword, token);
+        return new Project(id, password, active, timestamp, author, adminPassword, token, phase);
     }
 
-    private Group getGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
+    private void fillGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet, HashMap<Integer, Group> existingGroups) {
         int id = vereinfachtesResultSet.getInt("id");
-        String projectId = vereinfachtesResultSet.getString("projectId");
-        String chatRoomId = vereinfachtesResultSet.getString("chatRoomId");
-        // TODO: determine how to get all User
-        return new Group(id, new ArrayList<>(), projectId, chatRoomId);
+        if (existingGroups.containsKey(id)) {
+            existingGroups.get(id).addMember(getUserFromResultSet(vereinfachtesResultSet));
+        } else {
+            String projectId = vereinfachtesResultSet.getString("projectId");
+            User user = getUserFromResultSet(vereinfachtesResultSet);
+            String chatRoomId = vereinfachtesResultSet.getString("chatRoomId");
+            ArrayList<User> userList = new ArrayList<>(Collections.singletonList(user));
+            Group group = new Group(userList, projectId, chatRoomId);
+            existingGroups.put(id, group);
+        }
     }
 
     @Override
@@ -214,14 +228,15 @@ public class ManagementImpl implements Management {
 
     /**
      * TODO @Axel bitte in modules/asessment verschieben
+     *
      * @param projectId
      * @param quizId
      * @return
      */
-    public Quiz getQuizByProjectGroupId(String projectId, String quizId){
+    public Quiz getQuizByProjectGroupId(String projectId, String quizId) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question="+quizId;
+        String mysqlRequest = "SELECT * FROM quiz where projectId=" + projectId + " , question=" + quizId;
         VereinfachtesResultSet vereinfachtesResultSet =
                 connect.issueSelectStatement(mysqlRequest, "");
         boolean next = vereinfachtesResultSet.next();
@@ -236,14 +251,14 @@ public class ManagementImpl implements Management {
             question = vereinfachtesResultSet.getString("question");
             answer = vereinfachtesResultSet.getString("answer");
             correct = vereinfachtesResultSet.getBoolean("correct");
-            if (correct){
+            if (correct) {
                 correctAnswers.add(answer);
-            }else{
+            } else {
                 incorrectAnswers.add(answer);
             }
             next = vereinfachtesResultSet.next();
         }
-        Quiz quiz = new Quiz(mcType,question, correctAnswers, incorrectAnswers);
+        Quiz quiz = new Quiz(mcType, question, correctAnswers, incorrectAnswers);
         connect.close();
         return quiz;
     }
@@ -283,61 +298,57 @@ public class ManagementImpl implements Management {
         }
     }
 
-
     @Override
-    public void create(Group group, String projectId) {
+    public void create(Group group) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
 
-        Project project = getProjectById(projectId);
-
-        Group newGroup = new Group(projectId);
         String mysqlRequestGroup = "INSERT INTO groups (`projectId`,`chatRoomId`) values (?,?)";
-        connect.issueInsertOrDeleteStatement(mysqlRequestGroup, newGroup.getProjectId(), newGroup.getChatRoomId());
+        connect.issueInsertOrDeleteStatement(mysqlRequestGroup, group.getProjectId(), group.getChatRoomId());
 
         for (User groupMember : group.getMembers()) {
             String mysqlRequest2 = "INSERT INTO groupuser (`userEmail`, `groupId`) values (?,?)";
-            connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), project.getId());
+            connect.issueInsertOrDeleteStatement(mysqlRequest2, groupMember.getEmail(), group.getProjectId());
         }
         connect.close();
     }
 
     @Override
     public void addGroupMember(User groupMember, int groupId) {
-
+        // TODO: implement
     }
 
     @Override
     public void deleteGroupMember(User groupMember, int groupId) {
-
+        // TODO: implement
     }
 
     @Override
     public List<Group> getGroupsByProjectId(String projectId) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        // TODO: implement correct join and finish implementation
-        //SELECT * FROM groupuser gu JOIN groups g ON g.id=gu.groupId JOIN users u ON u.email=gu.userEmail WHERE g.projectId = '1'
         String mysqlRequest = "SELECT * FROM groups g " +
-                "JOIN groupuser gu u ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" +
+                "JOIN groupuser gu ON g.id=gu.groupId " + "JOIN users u ON gu.userEmail=u.email" +
                 "where g.projectId = ?";
         VereinfachtesResultSet vereinfachtesResultSet =
                 connect.issueSelectStatement(mysqlRequest, projectId);
-        ArrayList<Group> groups = new ArrayList<>();
+        HashMap<Integer, Group> groupHashMap = new HashMap<>();
         while (vereinfachtesResultSet.next()) {
-            //groups.add()
+            fillGroupFromResultSet(vereinfachtesResultSet, groupHashMap);
         }
+        ArrayList<Group> groups = new ArrayList<>();
+        groupHashMap.forEach((key, group) -> groups.add(group));
         if (groups.isEmpty()) {
             return null;
-        } else {
-            return groups;
         }
+
+        return groups;
     }
 
     @Override
     public void create(ProjectConfiguration projectConfiguration, Project project) {
         ProjectConfigurationDAO projectConfigurationDAO = new ProjectConfigurationDAO();
-        projectConfigurationDAO.persistProjectConfiguration(projectConfiguration,project);
+        projectConfigurationDAO.persistProjectConfiguration(projectConfiguration, project);
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java
index 64c6c9926e17e9ca4abb1cc56d965f14f76df2a3..d98a0d85649f9c2fd76ca978c592a6f03b0307ce 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/Group.java
@@ -17,8 +17,6 @@ public class Group {
 
     public Group(String projectId) {
         this(new ArrayList<>(), projectId);
-
-
     }
 
     public Group(List<User> members, String projectId) {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
index 06bd24d75edced5f007ff2db5a58b1bbcd6b30ab..0a81ca70bee352031b17dbf485866de1962bcbde 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
@@ -18,7 +18,7 @@ public class Project {
     private String author;
     private String adminPassword;
     private String token;
-    // using enum ProjectPhase
+    // TODO: using enum ProjectPhase
     private String phase;
 
     public Project() {
@@ -35,31 +35,19 @@ public class Project {
         this.setPhase(ProjectPhase.CourseCreation);
     }
 
-    public String getPhase() {
-        return phase;
-    }
-
-    /**
-     * setting phase only with enum
-     * @param phase
-     */
-    public void setPhase(ProjectPhase phase) {
-        this.phase = phase.name();
-    }
-
-    public Project(String id, String password, Boolean active, String author, String adminPassword, String token) {
+    public Project(String id, String password, Boolean active, String author, String adminPassword, String token, ProjectPhase projectPhase) {
         this.id = id;
         this.password = password;
         this.active = active;
         this.author = author;
         this.adminPassword = adminPassword;
         this.token = token;
+        this.phase = projectPhase.name();
 
         this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
     }
 
-    public Project(String id, String password, Boolean active, Timestamp timecreated, String author,
-                   String adminPassword, String token) {
+    public Project(String id, String password, Boolean active, Timestamp timecreated, String author, String adminPassword, String token, String phase) {
         this.id = id;
         this.password = password;
         this.active = active;
@@ -67,6 +55,7 @@ public class Project {
         this.author = author;
         this.adminPassword = adminPassword;
         this.token = token;
+        this.phase = phase;
     }
 
     public String getId() {
@@ -117,10 +106,22 @@ public class Project {
         this.token = token;
     }
 
-
     public Timestamp getTimecreated() {
         return timecreated;
     }
 
+    public String getPhase() {
+        return phase;
+    }
+
+    /**
+     * setting phase only with enum
+     *
+     * @param phase
+     */
+    public void setPhase(ProjectPhase phase) {
+        this.phase = phase.name();
+    }
+
 
 }
\ No newline at end of file
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
index ef9531d231c70944f627ee6afbaeb26ee1eb5ac5..812cbe6c04522a18b5f469bbbf7fe1cc14e1a90f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/User.java
@@ -20,20 +20,20 @@ public class User {
     }
 
     public User(String name, String password, String email, Boolean isStudent) {
-        this.name = name;
-        this.password = password;
-        this.email = email;
-        this.isStudent = isStudent;
-        this.rocketChatAuthToken = "";
-        this.rocketChatId = "";
+        this(name, password, email, "", "", isStudent);
     }
 
     public User(String name, String password, String email, String rocketChatId, String rocketChatAuthToken, Boolean isStudent) {
+        this(name, password, email, "", rocketChatAuthToken, rocketChatId, isStudent);
+    }
+
+    public User(String name, String password, String email, String token, String rocketChatAuthToken, String rocketChatId, Boolean isStudent) {
         this.name = name;
         this.password = password;
         this.email = email;
-        this.rocketChatId = rocketChatId;
+        this.token = token;
         this.rocketChatAuthToken = rocketChatAuthToken;
+        this.rocketChatId = rocketChatId;
         this.isStudent = isStudent;
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java
index 63095a393c2173a9c58180ff22e7be7b8d420a15..09fba126c48b52b04893ac4d08a4f207ffe478a5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupCreationService.java
@@ -38,10 +38,8 @@ public class GroupCreationService {
             management.create(project);
         }
 
-        groups.forEach(group -> management.create(group, project.getId()));
-
+        groups.forEach(group -> management.create(group));
         // TODO: read List<Group> of database to get Id for chatRoomName (Should be ProjectName - GroupId)
-        // TODO: add projectName as DatabaseEntry
         // TODO: implement sql service injection for, so connection is only done once in app