diff --git a/bwreg-entities/src/main/java/edu/kit/scc/webreg/entity/project/ProjectEntity.java b/bwreg-entities/src/main/java/edu/kit/scc/webreg/entity/project/ProjectEntity.java
index d8f7e4d7174e000704561daecebd30681a6c5fbd..d51b46a34ae3e6308ae89bfa5651d67337572222 100644
--- a/bwreg-entities/src/main/java/edu/kit/scc/webreg/entity/project/ProjectEntity.java
+++ b/bwreg-entities/src/main/java/edu/kit/scc/webreg/entity/project/ProjectEntity.java
@@ -11,6 +11,7 @@
 package edu.kit.scc.webreg.entity.project;
 
 import java.sql.Types;
+import java.util.Date;
 import java.util.Set;
 
 import org.hibernate.annotations.JdbcTypeCode;
@@ -95,6 +96,9 @@ public class ProjectEntity extends AbstractBaseEntity {
 	@OneToMany(mappedBy = "project")
 	private Set<ProjectIdentityAdminEntity> projectAdmins;
 
+	@Column(name = "last_sync_to_group")
+	private Date lastSyncToGroup;
+	
 	public String getName() {
 		return name;
 	}
@@ -222,4 +226,12 @@ public class ProjectEntity extends AbstractBaseEntity {
 	public void setAttributeName(String attributeName) {
 		this.attributeName = attributeName;
 	}
+
+	public Date getLastSyncToGroup() {
+		return lastSyncToGroup;
+	}
+
+	public void setLastSyncToGroup(Date lastSyncToGroup) {
+		this.lastSyncToGroup = lastSyncToGroup;
+	}
 }
diff --git a/bwreg-service/src/main/java/edu/kit/scc/webreg/job/ProjectsSyncToGroup.java b/bwreg-service/src/main/java/edu/kit/scc/webreg/job/ProjectsSyncToGroup.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba65e3183147d8ceeaaa0dab6f75e07db372b648
--- /dev/null
+++ b/bwreg-service/src/main/java/edu/kit/scc/webreg/job/ProjectsSyncToGroup.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2014 Michael Simon.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the GNU Public License v3.0
+ * which accompanies this distribution, and is available at
+ * http://www.gnu.org/licenses/gpl.html
+ * 
+ * Contributors:
+ *     Michael Simon - initial
+ ******************************************************************************/
+package edu.kit.scc.webreg.job;
+
+import static edu.kit.scc.webreg.dao.ops.PaginateBy.withLimit;
+import static edu.kit.scc.webreg.dao.ops.RqlExpressions.and;
+import static edu.kit.scc.webreg.dao.ops.RqlExpressions.isNull;
+import static edu.kit.scc.webreg.dao.ops.RqlExpressions.lessThanOrEqualTo;
+import static edu.kit.scc.webreg.dao.ops.RqlExpressions.notEqual;
+import static edu.kit.scc.webreg.dao.ops.RqlExpressions.or;
+import static edu.kit.scc.webreg.dao.ops.SortBy.ascendingBy;
+import static java.time.temporal.ChronoUnit.MILLIS;
+
+import java.time.Instant;
+import java.util.Date;
+import java.util.List;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import edu.kit.scc.webreg.dao.ops.RqlExpressions;
+import edu.kit.scc.webreg.entity.project.ProjectEntity;
+import edu.kit.scc.webreg.entity.project.ProjectEntity_;
+import edu.kit.scc.webreg.entity.project.ProjectStatus;
+import edu.kit.scc.webreg.service.project.ProjectService;
+
+public class ProjectsSyncToGroup extends AbstractExecutableJob {
+
+	private static final long serialVersionUID = 1L;
+
+	@Override
+	public void execute() {
+		Logger logger = LoggerFactory.getLogger(ProjectsSyncToGroup.class);
+
+		Long olderThanMillis;
+
+		if (!getJobStore().containsKey("older_than_millis")) {
+			olderThanMillis = 24L * 60L * 60L * 1000L;
+		} else {
+			olderThanMillis = Long.parseLong(getJobStore().get("older_than_millis"));
+		}
+
+		Date olderThan = Date.from(Instant.now().minus(olderThanMillis, MILLIS));
+
+		Integer limit;
+
+		if (!getJobStore().containsKey("limit")) {
+			limit = 2;
+		} else {
+			limit = Integer.parseInt(getJobStore().get("limit"));
+		}
+
+		try {
+			InitialContext ic = new InitialContext();
+
+			ProjectService projectService = (ProjectService) ic.lookup(
+					"global/bwreg/bwreg-service/ProjectServiceImpl!edu.kit.scc.webreg.service.project.ProjectService");
+
+			logger.info("Starting project member sync to group");
+
+			List<ProjectEntity> projectList = projectService.findAll(withLimit(limit),
+					ascendingBy(ProjectEntity_.lastSyncToGroup),
+					and(or(lessThanOrEqualTo(ProjectEntity_.lastSyncToGroup, olderThan),
+							isNull(ProjectEntity_.lastSyncToGroup)),
+							or(notEqual(ProjectEntity_.projectStatus, ProjectStatus.DELETED),
+									RqlExpressions.isNull(ProjectEntity_.projectStatus))));
+
+			for (ProjectEntity project : projectList) {
+				logger.info("Syncing project {}", project.getShortName());
+				projectService.syncAllMembersToGroup(project, "project-sync-job");
+			}
+
+			logger.info("Project member sync to group done");
+
+		} catch (NamingException e) {
+			logger.warn("Could not clear Audit Logs: {}", e);
+		}
+	}
+}
diff --git a/regapp-project/src/main/java/edu/kit/scc/webreg/service/project/AbstractProjectUpdater.java b/regapp-project/src/main/java/edu/kit/scc/webreg/service/project/AbstractProjectUpdater.java
index 0dcb3aac5deb91aa0854fc7441c84efd357c5d12..694f256adca1de5085d8a45a1c491d624f24e368 100644
--- a/regapp-project/src/main/java/edu/kit/scc/webreg/service/project/AbstractProjectUpdater.java
+++ b/regapp-project/src/main/java/edu/kit/scc/webreg/service/project/AbstractProjectUpdater.java
@@ -4,6 +4,7 @@ import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric;
 
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -203,6 +204,8 @@ public abstract class AbstractProjectUpdater<T extends ProjectEntity> implements
 			logger.info("Remove user {} from project-group for project {}", user.getId(), project.getName());
 			groupDao.removeUserGromGroup(user, project.getProjectGroup());
 		}
+		
+		project.setLastSyncToGroup(new Date());
 	}
 
 	public void syncMemberToGroup(ProjectEntity project, IdentityEntity identity, String executor) {