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 77a19c8868c4bfee7b2cf4d9f1086a0e69ac0f31..41ca15ebd2660f865803d2958a555a4217754010 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
@@ -119,6 +119,6 @@ public interface Management {
 
     void deleteGroupMember(User groupMember, int groupId);
 
-    List<Group> getGroups(String projectId);
+    List<Group> getGroupsByProjectId(String projectId);
 }
 
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 aaa48ca4d28f4101f7c4db7b150169b0c3b1d7e0..e18557bcfcaa107a9d8eab392a99c4a3bd6dfc67 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -165,6 +165,13 @@ public class ManagementImpl implements Management {
         return new Project(id, password, active, timestamp, author, adminPassword, token);
     }
 
+    private Group getGroupFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
+        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);
+    }
     @Override
     public String getUserToken(User user) {
         MysqlConnect connect = new MysqlConnect();
@@ -227,6 +234,7 @@ public class ManagementImpl implements Management {
         }
     }
 
+
     @Override
     public void createGroup(Group group, String projectId) {
         MysqlConnect connect = new MysqlConnect();
@@ -252,7 +260,23 @@ public class ManagementImpl implements Management {
     }
 
     @Override
-    public List<Group> getGroups(String projectId) {
-        return null;
+    public List<Group> getGroupsByProjectId(String projectId) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        // TODO: implement correct join and finish implementation
+        String mysqlRequest = "SELECT * FROM groups g " +
+                "JOIN groupuser gu u 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<>();
+        while (vereinfachtesResultSet.next()) {
+            //groups.add()
+        }
+        if (groups.isEmpty()) {
+            return null;
+        } else {
+            return groups;
+        }
     }
 }
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 781c92a711dbf837dbf6ee4eed15229bc6d4d8aa..ea56b43196cd93b3c87518dfa55ab58e2840c8b9 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
@@ -2,16 +2,35 @@ package unipotsdam.gf.core.management.group;
 
 import unipotsdam.gf.core.management.user.User;
 
-import java.util.*;
+import java.util.List;
 
 public class Group {
 
+    private int id; // do not set yourself, autoincrement
+    private List<User> members;
+    private String projectId;
+    private String chatRoomId;
 
+    public Group() {
+    }
+
+    public Group(List<User> members, String projectId) {
+        this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = "";
+    }
 
-    List<User> members;
+    public Group(List<User> members, String projectId, String chatRoomId) {
+        this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = chatRoomId;
+    }
 
-    public Group(List<User> members) {
+    public Group(int id, List<User> members, String projectId, String chatRoomId) {
+        this.id = id;
         this.members = members;
+        this.projectId = projectId;
+        this.chatRoomId = chatRoomId;
     }
 
     public List<User> getMembers() {
@@ -22,5 +41,27 @@ public class Group {
         this.members = members;
     }
 
+    public String getChatRoomId() {
+        return chatRoomId;
+    }
+
+    public void setChatRoomId(String chatRoomId) {
+        this.chatRoomId = chatRoomId;
+    }
+
+    public void addMember(User user) {
+        members.add(user);
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
 
+    public int getId() {
+        return id;
+    }
 }
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 99e4d8a49be2b4db41fb821b8f81a2d5e124f3b4..682b5c40b13472a4bc3369eb7970ddb9bce428fd 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
@@ -20,6 +20,16 @@ public class Project {
     public Project() {
     }
 
+    public Project(String id, String password, Boolean active, String author, String adminPassword) {
+        this.id = id;
+        this.password = password;
+        this.active = active;
+        this.author = author;
+        this.adminPassword = adminPassword;
+
+        this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
+    }
+
     public Project(String id, String password, Boolean active, String author, String adminPassword, String token) {
         this.id = id;
         this.password = password;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java
new file mode 100644
index 0000000000000000000000000000000000000000..23127b12dc29e93f9d76e299c81619229fab16e4
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupCreation/service/GroupCreationService.java
@@ -0,0 +1,97 @@
+package unipotsdam.gf.modules.groupCreation.service;
+
+import unipotsdam.gf.core.management.Management;
+import unipotsdam.gf.core.management.group.Group;
+import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.management.user.User;
+import unipotsdam.gf.core.management.user.UserProfile;
+import unipotsdam.gf.interfaces.ICommunication;
+
+import javax.annotation.ManagedBean;
+import javax.annotation.Resource;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@ManagedBean
+@Resource
+@Singleton
+public class GroupCreationService {
+
+    @Inject
+    private ICommunication communicationService;
+
+    @Inject
+    private Management management;
+
+    public boolean createExampleProject() {
+
+        User docentUser = getDocentUser();
+        Project project = new Project("1", "", true, docentUser.getEmail(), "admin");
+
+        List<Group> groups = createDummyGroups(project.getId());
+
+        if (!management.exists(project)) {
+            management.create(project);
+        }
+
+        groups.forEach(group -> management.createGroup(group, project.getId()));
+
+        // 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
+
+
+        List<Group> nonEmptyGroups = groups.stream().filter(group -> group.getMembers().isEmpty())
+                .collect(Collectors.toList());
+        if (nonEmptyGroups.isEmpty()) {
+            return false;
+        }
+
+
+        return true;
+    }
+
+    private List<Group> createDummyGroups(String projectId) {
+        Group group1 = new Group(new ArrayList<>(), projectId);
+        Group group2 = new Group(new ArrayList<>(), projectId);
+        Group group3 = new Group(new ArrayList<>(), projectId);
+        Group group4 = new Group(new ArrayList<>(), projectId);
+        List<Group> groups = Arrays.asList(group1, group2, group3, group4);
+
+        String baseUserName = "Name ";
+        String password = "test123";
+        String baseEMailFront = "test";
+        String baseEMailDomain = "@example.com";
+        boolean isStudentValue = true;
+        for (int userNumber = 0; userNumber < groups.size() * 5; userNumber++) {
+            String userName = baseUserName + (userNumber + 1);
+            String email = baseEMailFront + (userNumber + 1) + baseEMailDomain;
+            User user = new User(userName, password, email, isStudentValue);
+            if (!management.exists(user)) {
+                saveUserToDatabase(user);
+                int groupPosition = userNumber % groups.size();
+                groups.get(groupPosition).addMember(user);
+            }
+        }
+        return groups;
+    }
+
+    private User getDocentUser() {
+        User docent = new User("Julian", "docent", "docent@docent.com", false);
+        if (!management.exists(docent)) {
+            saveUserToDatabase(docent);
+        } else {
+            docent = management.getUserByEmail(docent.getEmail());
+        }
+        return docent;
+    }
+
+    private void saveUserToDatabase(User user) {
+        communicationService.registerAndLoginUser(user);
+        management.create(user, new UserProfile());
+    }
+}