diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java
index b9d1e201f879c52c07c703611877ea4a043337ad..ea4652bcc001dd0cf6f34396186e53cbf72319f0 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ContextDataView.java
@@ -24,7 +24,7 @@ public class ContextDataView {
     @Path("/full")
     public ContextDataOutput getContextData(@QueryParam("userEmail") String userEmail, @QueryParam("projectToken")
                                             String projectToken) {
-        Project projectByToken = iManagement.getProjectByToken(projectToken);
+        Project projectByToken = iManagement.getProjectByName(projectToken);
         User user = iManagement.getUserByToken(userEmail);
 
         return new ContextDataOutput(projectByToken, user);
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 4def763174e8016c36551cd9a0b3c696856a0828..90ddfdfad8b60a6a5e14fd3c3483d0c385bd4253 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/Management.java
@@ -36,7 +36,7 @@ public interface Management {
      *
      * @param project
      */
-    String create(Project project);
+    void create(Project project);
 
     /**
      * create a Group in the database
@@ -92,20 +92,16 @@ public interface Management {
 
     ProjectConfiguration getProjectConfiguration(Project project);
 
-    String getProjectToken(String projectName, String password);
-
-    Project getProjectByToken(String projectToken);
-
     List<String> getProjects(String userEmail);
 
     User getUserByToken(String userEmail);
 
-    Project getProjectById(String projectName);
-
     List<String> getProjectsStudent(String studentToken);
 
     String saveProfilePicture(FileInputStream fis, String userName);
 
     List<String> getTags(Project project);
+
+    Project getProjectByName(String projectName);
 }
 
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 2dd6b06cc77253a4e46b457242e1f9b0fb2029ca..616a17eea7ce8b0d2ec8cb86961e8277d5cbe3be 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -21,8 +21,6 @@ import javax.inject.Singleton;
 import java.io.FileInputStream;
 import java.sql.Blob;
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.List;
 
 /**
@@ -58,8 +56,8 @@ public class ManagementImpl implements Management {
     }
 
     @Override
-    public String create(Project project) {
-        return projectDAO.persist(project);
+    public void create(Project project) {
+        projectDAO.persist(project);
     }
 
     @Override
@@ -123,9 +121,6 @@ public class ManagementImpl implements Management {
         return userDAO.getUserByEmail(email);
     }
 
-    public Project getProjectById(String id) {
-        return projectDAO.getProjectById(id);
-    }
 
     @Override
     public void create(Group group) {
@@ -145,46 +140,14 @@ public class ManagementImpl implements Management {
         return projectConfigurationDAO.loadProjectConfiguration(project);
     }
 
-    @Override
-    public String getProjectToken(String projectName, String password) {
-        connect.connect();
-        if (password != null && !password.trim().equals("")) {
-            String query = "SELECT a.token from projects a where a.password = ? and a.id = ?";
-            VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(projectName, password);
-
-            String result = "";
-            while (vereinfachtesResultSet.next()) {
-                result = vereinfachtesResultSet.getString("token");
-            }
-            connect.close();
-            return result;
-        } else {
-            String query = "SELECT a.token from projects a where a.id = ?";
-            VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(projectName);
-
-            String result = "";
-            while (vereinfachtesResultSet.next()) {
-                result = vereinfachtesResultSet.getString("token");
-            }
-            connect.close();
-            return result;
-        }
-
-    }
-
-    @Override
-    public Project getProjectByToken(String projectToken) {
-        return projectDAO.getProjectByToken(projectToken);
-    }
-
-    @Override
+       @Override
     public List<String> getProjects(String authorToken) {
         if (authorToken == null) {
             return null;
         }
         connect.connect();
         String mysqlRequest =
-                "SELECT p.id FROM users u " +
+                "SELECT p.name FROM users u " +
                         " JOIN projects p ON u.email = p.authorEmail" +
                         " WHERE u.token = ?";
 
@@ -193,7 +156,7 @@ public class ManagementImpl implements Management {
         List<String> result = new ArrayList<>();
         VereinfachtesResultSet vereinfachtesResultSet = connect.issueSelectStatement(mysqlRequest, authorToken);
         while (vereinfachtesResultSet.next()) {
-            String project = vereinfachtesResultSet.getString("id");
+            String project = vereinfachtesResultSet.getString("name");
             result.add(project);
         }
         connect.close();
@@ -233,4 +196,9 @@ public class ManagementImpl implements Management {
     public List<String> getTags(Project project) {
         return projectDAO.getTags(project);
     }
+
+    @Override
+    public Project getProjectByName(String projectName) {
+        return projectDAO.getProjectByName(projectName);
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java
index ec7d50da8b0b54393c0c211a15ee6b10dba46a39..d399e9144d89d83c1054a24837536779b287afed 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupDAO.java
@@ -105,9 +105,7 @@ public class GroupDAO {
         }
 
         ArrayList<Group> groups = new ArrayList<>();
-
         fillGroupFromResultSet(groups, vereinfachtesResultSet);
-
         ArrayList<Group> uniqueGroups = new ArrayList<>();
         for (Group group : groups) {
             // transmuting the table to a map with group as key and members as value
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java
index 610b42bbbea4b7f6da6b89720f61a37f6ee3f865..478ddc5ef1be1b20f21c55192d9e5a86ac1c5194 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/group/GroupView.java
@@ -3,6 +3,7 @@ package unipotsdam.gf.core.management.group;
 import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.project.ProjectConfiguration;
+import unipotsdam.gf.core.management.project.ProjectDAO;
 import unipotsdam.gf.interfaces.IGroupFinding;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
@@ -25,6 +26,9 @@ public class GroupView {
     @Inject
     private Management iManagement;
 
+    @Inject
+    ProjectDAO projectDAO;
+
     @GET
     @Produces(MediaType.APPLICATION_JSON)
     @Path("/project/{projectName}/student/{userName}")
@@ -37,19 +41,19 @@ public class GroupView {
 
     /**
      *
-     * @param projectToken
+     * @param projectName
      * @param groupFindingMechanism
      * @return
      * @throws URISyntaxException
      */
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
-    @Path("/settings/projects/{projectToken}")
-    public void createProject(@PathParam("projectToken") String projectToken, String groupFindingMechanism) throws
+    @Path("/settings/projects/{projectName}")
+    public void createProject(@PathParam("projectName") String projectName, String groupFindingMechanism) throws
             URISyntaxException {
 
         try {
-        Project project = iManagement.getProjectByToken(projectToken);
+        Project project = projectDAO.getProjectByName(projectName);
 
          GroupFormationMechanism gfm = GroupFormationMechanism.valueOf(groupFindingMechanism);
             iManagement.create(
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
index 816601b6324d8c9c01d5f382c2362cf5b0d7df00..5765ef48199bfe79b7cd366f90b9fef5d462f189 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
@@ -21,7 +21,7 @@ public class Footer extends SimpleTagSupport {
         String projectName = request.getParameter("projectName");
         ProjectPhase projectPhase;
         try {
-            projectPhase = projectDAO.getProjectById(projectName).getPhase();
+            projectPhase = projectDAO.getProjectByName(projectName).getPhase();
         } catch (Exception e) {
             projectPhase = null;
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
index e93c5fa9c029e34250dbe7e1f6c0bc9b1e8bb952..311b2028cfaf34249bee57ec954d2e9abc38b80f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
@@ -32,7 +32,7 @@ public class Menu extends SimpleTagSupport {
         ProjectPhase projectPhase;
         try {
             ProjectDAO projectDAO = new ProjectDAO(new MysqlConnect());
-            projectPhase = projectDAO.getProjectById(projectName).getPhase();
+            projectPhase = projectDAO.getProjectByName(projectName).getPhase();
         } catch (Exception e) {
             projectPhase = null;
         }
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 28f20898b297d237c8a9dcd10b6e8116849be816..3e04ff30e2c35b2c74beeebe2935eb60d2d4d529 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
@@ -6,6 +6,7 @@ import javax.xml.bind.annotation.XmlRootElement;
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
+import java.util.Arrays;
 
 /**
  * Created by dehne on 31.05.2018.
@@ -13,57 +14,49 @@ import java.time.ZoneId;
 @XmlRootElement(name = "Project")
 public class Project {
 
-    private String id;
+    private String name;
     private String password;
     private Boolean active;
-    private Timestamp timecreated;
+    private Long timecreated; //timestamp macht zu viele Probleme
     // the id of the authorEmail (not the token)
     private String authorEmail;
     private String adminPassword;
-    private String token;
     private ProjectPhase phase;
     private String[] tags;
 
     public Project() {
     }
 
-    public Project(String id, String password, Boolean active, String author, String adminPassword, String[] tags) {
-        this.id = id;
+    public Project(String name, String password, Boolean active, String author, String adminPassword, String[] tags) {
+        this.name = name;
         this.password = password;
         this.active = active;
         this.authorEmail = author;
         this.adminPassword = adminPassword;
-        this.timecreated = Timestamp.valueOf(LocalDateTime.now(ZoneId.of("UTC")));
+        this.timecreated = System.currentTimeMillis();
         // default starting at course creation if new
         this.setPhase(ProjectPhase.CourseCreation);
         this.tags = tags;
     }
 
-    public Project(String id, String password, Boolean active,
-                   Timestamp timecreated, String author, String adminPassword,
-                   String token, ProjectPhase phase) {
-        this.id = id;
+    public Project(
+            String name, String password, Boolean active, Long timecreated,  String authorEmail,
+            String adminPassword, ProjectPhase phase, String[] tags) {
+        this.name = name;
         this.password = password;
         this.active = active;
+        this.authorEmail = authorEmail;
         this.timecreated = timecreated;
-        this.authorEmail = author;
         this.adminPassword = adminPassword;
-        this.token = token;
         this.phase = phase;
         this.tags = tags;
     }
 
-    public Project(String projectName) {
-        setId(projectName);
-    }
-
-    public String getName() {
-        return id;
+    public Project(String projectName, String password) {
+        this.name = projectName;
+        this.password = password;
     }
 
-    public void setId(String id) {
-        this.id = id;
-    }
 
     public String getPassword() {
         return password;
@@ -97,17 +90,7 @@ public class Project {
         this.adminPassword = adminPassword;
     }
 
-    public String getToken() {
-        return token;
-    }
-
-    public void setToken(String token) {
-        this.token = token;
-    }
 
-    public Timestamp getTimecreated() {
-        return timecreated;
-    }
 
     public ProjectPhase getPhase() {
         return phase;
@@ -130,16 +113,37 @@ public class Project {
         this.tags = tags;
     }
 
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public Boolean getActive() {
+        return active;
+    }
+
+    public Long getTimecreated() {
+        return timecreated;
+    }
+
+    public void setTimecreated(Long timecreated) {
+        this.timecreated = timecreated;
+    }
+
     @Override
     public String toString() {
         final StringBuilder sb = new StringBuilder("Project{");
-        sb.append("id='").append(id).append('\'');
+        sb.append("name='").append(name).append('\'');
         sb.append(", password='").append(password).append('\'');
         sb.append(", active=").append(active);
         sb.append(", timecreated=").append(timecreated);
         sb.append(", authorEmail='").append(authorEmail).append('\'');
         sb.append(", adminPassword='").append(adminPassword).append('\'');
-        sb.append(", phase='").append(phase).append('\'');
+        sb.append(", phase=").append(phase);
+        sb.append(", tags=").append(Arrays.toString(tags));
         sb.append('}');
         return sb.toString();
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java
index 9bbe3ab296c9753c3e53682fb2e876b3149ca202..2dcec30d61cbfa7c4f07b9a76d87c6e0164ab42d 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectDAO.java
@@ -10,6 +10,7 @@ import javax.inject.Inject;
 import javax.inject.Singleton;
 import java.sql.Timestamp;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.UUID;
 
 @ManagedBean
@@ -24,24 +25,21 @@ public class ProjectDAO {
         this.connect = connect;
     }
 
-    public String persist(Project project) {
-        UUID uuid = UUID.randomUUID();
-        String token = uuid.toString();
+    public void persist(Project project) {
 
         connect.connect();
         String mysqlRequest =
-                "INSERT INTO projects (`id`, `password`, `active`, `timecreated`, `authorEmail`, "
-                        + "`adminPassword`, `token`, `phase`) values (?,?,?,?,?,?,?,?)";
+                "INSERT INTO projects (`name`, `password`, `active`, `timecreated`, `author`, "
+                        + "`adminPassword`, `phase`) values (?,?,?,?,?,?,?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest, project.getName(), project.getPassword(), project.isActive(),
-                project.getTimecreated(), project.getAuthorEmail(), project.getAdminPassword(), token, project.getPhase()
+                project.getTimecreated(), project.getAuthorEmail(), project.getAdminPassword(), project.getPhase()
                         == null ? ProjectPhase.CourseCreation : project.getPhase());
         connect.close();
-        return token;
     }
 
     public void delete(Project project) {
         connect.connect();
-        String mysqlRequest = "DELETE FROM projects where id = (?)";
+        String mysqlRequest = "DELETE FROM projects where name = (?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest, project.getName());
         connect.close();
         // TODO: delete all groups of project?
@@ -51,7 +49,7 @@ public class ProjectDAO {
     public Boolean exists(Project project) {
         Boolean result;
         connect.connect();
-        String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?";
+        String mysqlRequest = "SELECT * FROM projects where name = ? and adminPassword = ?";
         VereinfachtesResultSet vereinfachtesResultSet =
                 connect.issueSelectStatement(mysqlRequest, project.getName(), project.getAdminPassword());
         result = vereinfachtesResultSet.next();
@@ -59,23 +57,18 @@ public class ProjectDAO {
         return result;
     }
 
-    public Project getProjectById(String id) {
+    public Project getProjectByName(String name) {
         connect.connect();
-        String mysqlRequest = "SELECT * FROM projects where id = ?";
+        String mysqlRequest = "SELECT * FROM projects where name = ?";
         VereinfachtesResultSet vereinfachtesResultSet =
-                connect.issueSelectStatement(mysqlRequest, id);
+                connect.issueSelectStatement(mysqlRequest, name);
         boolean next = vereinfachtesResultSet.next();
-        return getProject(vereinfachtesResultSet, next);
+        Project result = getProject(vereinfachtesResultSet, next);
+        List<String> tags = getTags(result);
+        result.setTags(tags.toArray(new String[0]));
+        return result;
     }
 
-    public Project getProjectByToken(String token) {
-        connect.connect();
-        String mysqlRequest = "SELECT * FROM projects where token = ?";
-        VereinfachtesResultSet vereinfachtesResultSet =
-                connect.issueSelectStatement(mysqlRequest, token);
-        boolean next = vereinfachtesResultSet.next();
-        return getProject(vereinfachtesResultSet, next);
-    }
 
     private Project getProject(VereinfachtesResultSet vereinfachtesResultSet, boolean next) {
         if (next) {
@@ -89,16 +82,16 @@ public class ProjectDAO {
     }
 
     private Project getProjectFromResultSet(VereinfachtesResultSet vereinfachtesResultSet) {
-        String id = vereinfachtesResultSet.getString("id");
+        String id = vereinfachtesResultSet.getString("name");
         String password = vereinfachtesResultSet.getString("password");
         boolean active = vereinfachtesResultSet.getBoolean("active");
-        Timestamp timestamp = vereinfachtesResultSet.getTimestamp("timecreated");
-        String author = vereinfachtesResultSet.getString("authorEmail");
+        long timestamp = vereinfachtesResultSet.getLong("timecreated");
+        String author = vereinfachtesResultSet.getString("author");
         String adminPassword = vereinfachtesResultSet.getString("adminpassword");
-        String token = vereinfachtesResultSet.getString("token");
         String phase = vereinfachtesResultSet.getString("phase");
 
-        return new Project(id, password, active, timestamp, author, adminPassword, token, ProjectPhase.valueOf(phase));
+
+        return new Project(id, password, active, timestamp, author, adminPassword, ProjectPhase.valueOf(phase), null);
     }
 
     public java.util.List<String> getTags(Project project) {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
index cc238b25f4d20ec0e9d88028797285c7e10cb531..236afaf8ffd0201d7048ac17b40baf20072ebc6a 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java
@@ -20,6 +20,9 @@ import java.net.URISyntaxException;
 public class ProjectView {
 
 
+    @Inject
+    private ProjectDAO projectDAO;
+
     @Inject
     private Management iManagement;
 
@@ -27,17 +30,15 @@ public class ProjectView {
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/create")
-    public String createProject(@Context HttpServletRequest req, Project project) throws URISyntaxException {
+    public void createProject(Project project) throws URISyntaxException {
         // we assume the token is send not the author id
         String authorToken = project.getAuthorEmail();
         User userByToken = iManagement.getUserByToken(authorToken);
         project.setAuthorEmail(userByToken.getEmail());
         try {
-            String projectToken = iManagement.create(project);
-            req.getSession().setAttribute(GFContexts.PROJECTNAME, project.getName());
-            return projectToken;
+            iManagement.create(project);
         } catch (Exception e) {
-            return "project exists";
+            throw new WebApplicationException("Project already exists");
         }
     }
 
@@ -61,17 +62,6 @@ public class ProjectView {
         return Response.seeOther(new URI(existsUrl)).build();
     }
 
-    @GET
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.TEXT_PLAIN)
-    @Path("/token")
-    public String getProjectToken(
-            @QueryParam("project") String projectName, @QueryParam("password") String password)
-            throws URISyntaxException {
-
-        String token = iManagement.getProjectToken(projectName, password);
-        return token;
-    }
 
     @GET
     @Consumes(MediaType.TEXT_PLAIN)
@@ -98,7 +88,7 @@ public class ProjectView {
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/login/{projectName}")
     public String logInProject(@PathParam("projectName") String projectName, @QueryParam("password") String password) {
-        Project project = iManagement.getProjectById(projectName);
+        Project project = projectDAO.getProjectByName(projectName);
         if (project == null){
             return "project missing";
         }
@@ -106,8 +96,7 @@ public class ProjectView {
             return "wrong password";
         }
 
-        String result =  project.getToken();
-        return result;
+        return "ok";
     }
 
     @GET
@@ -116,7 +105,7 @@ public class ProjectView {
     @Path("/tags/{projectToken}")
     public String[] getTags(@PathParam("projectToken") String projectToken) {
         // TODO write single query
-        Project project = iManagement.getProjectByToken(projectToken);
+        Project project = iManagement.getProjectByName(projectToken);
         return iManagement.getTags(project).toArray(new String[0]);
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig
deleted file mode 100644
index db21d73d300f31db555250314a5c6e533fef911f..0000000000000000000000000000000000000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectView.java.orig
+++ /dev/null
@@ -1,104 +0,0 @@
-package unipotsdam.gf.core.management.project;
-
-import unipotsdam.gf.core.management.Management;
-import unipotsdam.gf.core.management.user.User;
-
-import javax.annotation.ManagedBean;
-import javax.inject.Inject;
-import javax.ws.rs.*;
-import javax.ws.rs.core.MediaType;
-import java.net.URISyntaxException;
-
-
-@ManagedBean
-@Path("/project")
-public class ProjectView {
-
-
-    @Inject
-    private Management iManagement;
-
-    @PUT
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.TEXT_PLAIN)
-    @Path("/create")
-    public String createProject(Project project) throws URISyntaxException {
-        // we assume the token is send not the author id
-        String authorToken = project.getAuthorEmail();
-        User userByToken = iManagement.getUserByToken(authorToken);
-        project.setAuthorEmail(userByToken.getId());
-        try {
-            String projectToken = iManagement.create(project);
-            return projectToken;
-        } catch (Exception e) {
-            return "project exists";
-        }
-
-    }
-
-    @GET
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.TEXT_PLAIN)
-    @Path("/token")
-    public String getProjectToken(
-            @QueryParam("project") String projectName, @QueryParam("password") String password)
-            throws URISyntaxException {
-
-        String token = iManagement.getProjectToken(projectName, password);
-        return token;
-    }
-
-    @GET
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/all/author/{userEmail}")
-    public java.util.List<String> getProjects(
-            @PathParam("userEmail") String authorToken) {
-        java.util.List<String> projects = iManagement.getProjects(authorToken);
-        return projects;
-    }
-
-    @GET
-    @Consumes(MediaType.TEXT_PLAIN)
-<<<<<<< HEAD
-    @Produces(MediaType.TEXT_PLAIN)
-    @Path("/login/{projectName}/password/{password}")
-=======
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/all/student/{studentToken}")
-    public java.util.List<String> getProjectsStudent(
-            @PathParam("studentToken") String studentToken) {
-        java.util.List<String> projects = iManagement.getProjectsStudent(studentToken);
-        return projects;
-    }
-
-    @GET
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/join/project/{projectName}/password/{password}")
->>>>>>> 05a31d1f59f28ad502822884c1e2f196f9239de7
-    public String logInProject(@PathParam("projectName") String projectName, @PathParam("password") String password) {
-        Project project = iManagement.getProjectById(projectName);
-        if (project == null){
-            return "project missing";
-        }
-        if (project.getPassword().equals(password) || project.getPassword().trim().equals(""))
-            return "wrong password";
-
-        String result =  project.getToken();
-        return result;
-    }
-
-    @GET
-    @Consumes(MediaType.APPLICATION_JSON)
-    @Produces(MediaType.APPLICATION_JSON)
-    @Path("/tags/{projectToken}")
-    public java.util.List<String> getTags(@PathParam("projectToken") String projectToken) {
-        // TODO write single query
-        Project project = iManagement.getProjectByToken(projectToken);
-        return iManagement.getTags(project);
-    }
-
-
-
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
index 399a398a7aa5d5d4559ab6e2207279b99b9174c5..bacb1e3632598c46c65ca1429f95474cb4d71d5d 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
@@ -35,7 +35,7 @@ public class PhasesService {
     @POST
     @Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
     public void endPhase(@PathParam("projectPhase") String projectPhase, @PathParam("projectName") String projectName) {
-        phases.endPhase(ProjectPhase.valueOf(projectPhase), projectDAO.getProjectById(projectName));
+        phases.endPhase(ProjectPhase.valueOf(projectPhase), projectDAO.getProjectByName(projectName));
     }
 
     /**
@@ -48,6 +48,6 @@ public class PhasesService {
     @GET
     @Produces({MediaType.TEXT_PLAIN})
     public String getCurrentPhase(@PathParam("projectName") String projectName) {
-        return projectDAO.getProjectById(projectName).getPhase().toString();
+        return projectDAO.getProjectByName(projectName).getPhase().toString();
     }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
index d37515031fbef4fcf2c63505c2600dc7e33cd118..e68a9ed951a37d87ed24bd4198386a58d2f8a0ab 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
@@ -138,7 +138,7 @@ public class QuizView {
     @Path("/quiz")
     public String createQuiz(StudentAndQuiz studentAndQuiz) {
 
-        Project project = management.getProjectById(studentAndQuiz.getStudentIdentifier().getProjectName());
+        Project project = management.getProjectByName(studentAndQuiz.getStudentIdentifier().getProjectName());
         User user = management.getUserByEmail(studentAndQuiz.getStudentIdentifier().getUserEmail());
         Boolean isStudent = user.getStudent();
         peer.createQuiz(studentAndQuiz);
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java
index ed1e51a7dbf5c17786f8f80d88ed6cb80d06ab52..1134e754299c213b8dbe9c49c28478e7b95c279d 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/dummy/service/DummyProjectCreationService.java
@@ -1,5 +1,7 @@
 package unipotsdam.gf.modules.groupfinding.dummy.service;
 
+import uk.co.jemos.podam.api.PodamFactory;
+import uk.co.jemos.podam.api.PodamFactoryImpl;
 import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.group.Group;
 import unipotsdam.gf.core.states.model.ProjectPhase;
@@ -19,12 +21,15 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 
+
 @ManagedBean
 @Resource
 @Singleton
 public class DummyProjectCreationService {
 
 
+    private PodamFactory factory = new PodamFactoryImpl();
+
     private ICommunication communicationService;
     private Management management;
     private GroupDAO groupDAO;
@@ -40,20 +45,13 @@ public class DummyProjectCreationService {
 
     public boolean createExampleProject() {
 
+        Project project = factory.manufacturePojo(Project.class);
+
         User docentUser = getDocentUser();
         if (!management.exists(docentUser)) {
             management.create(docentUser, null);
         }
-        String[] tags ={"tag1", "tag2", "tag3"};
-        Project project = new Project();
-        project.setPhase(ProjectPhase.DossierFeedback);
-        project.setId("1");
-        project.setTags(tags);
-        project.setAuthorEmail("author");
-        project.setActive(true);
-        project.setPassword("1234");
-        project.setToken("32trgr");
-        project.setAdminPassword("1234");
+
         if (!management.exists(project)) {
             management.create(project);
         }
diff --git a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
index 4238b52f0cb890d880c5dd5bb8d9cdbc08d831f9..abb76ec2f5d16a974609dce42f9be7e41b150343 100644
--- a/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
+++ b/gemeinsamforschen/src/scripts/dbschema/fltrail.sql
@@ -68,9 +68,7 @@ CREATE TABLE IF NOT EXISTS `groups` (
 
 CREATE TABLE IF NOT EXISTS `groupuser` (
   `userEmail` varchar(255) NOT NULL,
-  `groupId` int(11) NOT NULL,
-   FOREIGN KEY (`userEmail`) REFERENCES users(`email`),
-   FOREIGN KEY (`groupId`) REFERENCES groups(`id`)
+  `groupId` int(11) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE IF NOT EXISTS `phasesselected` (
@@ -82,19 +80,16 @@ CREATE TABLE IF NOT EXISTS `projects` (
   `name` varchar(100) NOT NULL,
   `password` varchar(400) NOT NULL,
   `active` tinyint(1) NOT NULL,
-  `timecreated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
-  `author` varchar(400) NOT NULL,
+  `timecreated` long not null,
+  `author` varchar(100) NOT NULL,
   `adminPassword` varchar(400) NOT NULL,
-  `token` varchar(400) NOT NULL,
   `phase` varchar(400) NOT NULL,
   UNIQUE KEY `name` (`name`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE IF NOT EXISTS `projectuser` (
   `projectName` varchar(100) NOT NULL,
-  `userEmail` varchar(100) NOT NULL,
-  FOREIGN KEY (`userEmail`) REFERENCES users(`email`),
-  FOREIGN KEY (`projectName`) REFERENCES projects(`name`)
+  `userEmail` varchar(100) NOT NULL
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 CREATE TABLE IF NOT EXISTS `quiz` (
@@ -164,6 +159,12 @@ CREATE TABLE IF NOT EXISTS `workrating` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
+Alter Table projectuser add  FOREIGN KEY (`userEmail`) REFERENCES users(`email`);
+Alter Table projectuser add  FOREIGN KEY (`projectName`) REFERENCES projects(`name`);
+ALTER TABLE groupuser add FOREIGN KEY (`userEmail`) REFERENCES users(`email`);
+ALTER TABLE groupuser add FOREIGN KEY (`groupId`) REFERENCES groups(`id`);
+ALTER TABLE projects add foreign key (`author`) REFERENCES users(`email`);
+
 COMMIT;
 
 
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java
index 15d5b83869dc52af3b3871709d4a7c990bacc49b..17e812fd62ac59350898d309671ce8dc91302211 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/core/management/project/ProjectDAOTest.java
@@ -1,11 +1,18 @@
 package unipotsdam.gf.core.management.project;
 
+import org.glassfish.hk2.api.ServiceLocator;
+import org.glassfish.hk2.utilities.ServiceLocatorUtilities;
 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.core.database.InMemoryMySqlConnect;
+import unipotsdam.gf.core.database.TestGFApplicationBinder;
+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.management.user.UserDAO;
+
+import javax.inject.Inject;
 
 import static org.hamcrest.Matchers.is;
 import static org.junit.Assert.assertEquals;
@@ -13,28 +20,32 @@ import static org.junit.Assert.assertThat;
 
 public class ProjectDAOTest {
 
-    private InMemoryMySqlConnect inMemoryMySqlConnect;
+    @Inject
+    private MysqlConnect inMemoryMySqlConnect;
+
+    @Inject
     private ProjectDAO projectDAO;
+
+    @Inject
+    private UserDAO userDAO;
+
+
     private Project project;
 
-    static PodamFactory factory = new PodamFactoryImpl();
+    PodamFactory factory = new PodamFactoryImpl();
 
     @Before
     public void setUp() {
-        inMemoryMySqlConnect = new InMemoryMySqlConnect();
-        projectDAO = new ProjectDAO(inMemoryMySqlConnect);
+        final ServiceLocator locator = ServiceLocatorUtilities.bind(new TestGFApplicationBinder());
+        //final ServiceLocator locator = ServiceLocatorUtilities.bind(new GFApplicationBinder());
+        locator.inject(this);
+
         project = factory.manufacturePojo(Project.class);
-    }
+        String authorEmail = project.getAuthorEmail();
+        User user = factory.manufacturePojo(User.class);
+        user.setEmail(authorEmail);
+        userDAO.persist(user, null);
 
-    @Test
-    public void testPersist() {
-        projectDAO.persist(project);
-        inMemoryMySqlConnect.connect();
-        String mysqlRequest = "SELECT * FROM projects where id = ? and adminPassword = ?";
-        VereinfachtesResultSet vereinfachtesResultSet =
-                inMemoryMySqlConnect.issueSelectStatement(mysqlRequest, project.getName(), project.getAdminPassword());
-        boolean result = vereinfachtesResultSet.next();
-        assertThat(result, is(true));
     }
 
     @Test
@@ -55,7 +66,7 @@ public class ProjectDAOTest {
     @Test
     public void testGetProjectById() {
         projectDAO.persist(project);
-        Project projectActual = projectDAO.getProjectById(project.getName());
+        Project projectActual = projectDAO.getProjectByName(project.getName());
 
         assertEquals(project.getAdminPassword(), projectActual.getAdminPassword());
         assertEquals(project.getAuthorEmail(), projectActual.getAuthorEmail());
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
index 2574c04265dc097888cd83757b7965feddfddfe8..c60042a55ea87047f476569ff724313c909057e8 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
@@ -49,35 +49,35 @@ public class PhaseTest {
     @Test
     public void phase1() {
         Project project = new Project();
-        project.setId("Gemainsam Forschen");
+        project.setName("Gemainsam Forschen");
         phases.endPhase(ProjectPhase.CourseCreation, project);
     }
 
     @Test
     public void phase2() {
         Project project = new Project();
-        project.setId("Gemainsam Forschen");
+        project.setName("Gemainsam Forschen");
         phases.endPhase(ProjectPhase.GroupFormation, project);
     }
 
     @Test
     public void phase3() {
         Project project = new Project();
-        project.setId("Gemainsam Forschen");
+        project.setName("Gemainsam Forschen");
         phases.endPhase(ProjectPhase.DossierFeedback, project);
     }
 
     @Test
     public void phase4() {
         Project project = new Project();
-        project.setId("Gemainsam Forschen");
+        project.setName("Gemainsam Forschen");
         phases.endPhase(ProjectPhase.Execution, project);
     }
 
     @Test
     public void phase5() {
         Project project = new Project();
-        project.setId("Gemainsam Forschen");
+        project.setName("Gemainsam Forschen");
         phases.endPhase(ProjectPhase.Assessment, project);
     }
 }
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
index ca4db71cfa01ff173c4cfada0b85ac216f14eafd..d847ed2bc8336855afe763957f92b61a4ee57f4c 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/JournalDAOImplTest.java
@@ -246,7 +246,7 @@ public class JournalDAOImplTest {
         connection.connect();
 
         Project openProject = new Project();
-        openProject.setId(testProject);
+        openProject.setName(testProject);
 
         //create some Journals
         Journal j1 = testJournal;
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
index f8a13dbf1d95eedae233e03dc930d01f5e637bcf..db91d894200806105b9729c6004ff8a1ef421b63 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/modules/journal/model/dao/ProjectDescriptionImplDAOTest.java
@@ -169,7 +169,7 @@ public class ProjectDescriptionImplDAOTest {
         create(openDescription);
 
         Project project = new Project();
-        project.setId(testProjekt);
+        project.setName(testProjekt);
 
         ArrayList<String> resultDescriptions = descriptionDAO.getOpenDescriptions(project);
         assertEquals(2, resultDescriptions.size());
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 78681fd7de8406f6a134adb93ab6a5d0ad53a8ad..64dff042e9725d4090a765bf3fa6700fb6e65b1f 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
@@ -177,7 +177,7 @@ public class JournalServiceImplTest {
     public void checkIfAllJournalClosed() {
 
         Project project = new Project();
-        project.setId(testProject);
+        project.setName(testProject);
 
         journalDAO.createJournal(testJournal);
         journalDAO.createJournal(testJournal);
@@ -203,7 +203,7 @@ public class JournalServiceImplTest {
         Project project = new Project();
 
         testJournal.getStudentIdentifier().setUserEmail(token);
-        project.setId(testProject);
+        project.setName(testProject);
 
         journalDAO.createJournal(testJournal);
 
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 1b552336a543ccc8fe16b0ad7a195496bc83d1ae..fae32fe03dc845800a16670da23adeb475738c11 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
@@ -174,7 +174,7 @@ public class ProjectDescriptionImplTest {
         descriptionDAO.createDescription(testProjectDescriptionObj);
 
         Project project = new Project();
-        project.setId(testProject);
+        project.setName(testProject);
         assertEquals(0, projectDescriptionService.checkIfAllDescriptionsClosed(project).size());
 
         ProjectDescription resDescription = descriptionDAO.getDescription(new StudentIdentifier(testProject, testStudent));
@@ -191,7 +191,7 @@ public class ProjectDescriptionImplTest {
         String token = userDAO.getUserToken(user);
 
         Project project = new Project();
-        project.setId(testProject);
+        project.setName(testProject);
 
         testProjectDescriptionObj.getStudent().setUserEmail(token);
         descriptionDAO.createDescription(testProjectDescriptionObj);