diff --git a/pom.xml b/pom.xml
index b5c8cff4b90c9fc426d32fbe0020947e6322309e..c9bdd1c0cac2574704922de589df059f04492dab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,6 +27,7 @@
 		<lombok-mapstruct-binding.version>0.2.0</lombok-mapstruct-binding.version>
 		<mapstruct-processor.version>${mapstruct.version}</mapstruct-processor.version>
 		<zufi-manager.version>1.5.0-SNAPSHOT</zufi-manager.version>
+		<shedlock.version>5.16.0</shedlock.version>
 	</properties>
 
 	<dependencies>
@@ -85,6 +86,18 @@
 			<artifactId>grpc-client-spring-boot-starter</artifactId>
 		</dependency>
 
+		<!-- ShedLock -->
+		<dependency>
+			<groupId>net.javacrumbs.shedlock</groupId>
+			<artifactId>shedlock-spring</artifactId>
+			<version>${shedlock.version}</version>
+		</dependency>
+		<dependency>
+			<groupId>net.javacrumbs.shedlock</groupId>
+			<artifactId>shedlock-provider-mongo</artifactId>
+			<version>${shedlock.version}</version>
+		</dependency>
+
 		<!-- Keycloak -->
 		<dependency>
 			<groupId>org.keycloak</groupId>
diff --git a/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java b/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java
index 3c9fdbd2e70d4ad7d3cf6c6fe2554d4db8065561..012b8680f0fe768a7def4303e525d33b308c07f9 100644
--- a/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java
+++ b/src/main/java/de/ozgcloud/admin/SchedulingConfiguration.java
@@ -1,10 +1,27 @@
 package de.ozgcloud.admin;
 
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.scheduling.annotation.EnableScheduling;
 
+import com.mongodb.client.MongoClient;
+
+import net.javacrumbs.shedlock.core.LockProvider;
+import net.javacrumbs.shedlock.provider.mongo.MongoLockProvider;
+import net.javacrumbs.shedlock.spring.annotation.EnableSchedulerLock;
+
 @Configuration
 @EnableScheduling
+@EnableSchedulerLock(defaultLockAtMostFor = "PT23H")
 public class SchedulingConfiguration {
 
+	@Value("${spring.data.mongodb.database}")
+	private String database;
+
+	@Bean
+	LockProvider lockProvider(MongoClient mongoClient) {
+		return new MongoLockProvider(mongoClient.getDatabase(database));
+	}
+
 }
diff --git a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java
index 26739cdddb6d4e5b5426756321edb0362e2031ed..619e3f0878149596ae3b61a7d214eb9820cb7cf0 100644
--- a/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java
+++ b/src/main/java/de/ozgcloud/admin/organisationseinheit/SyncScheduler.java
@@ -4,6 +4,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import lombok.RequiredArgsConstructor;
+import net.javacrumbs.shedlock.spring.annotation.SchedulerLock;
 
 @Component
 @RequiredArgsConstructor
@@ -11,6 +12,7 @@ class SyncScheduler {
 
 	private final SyncService syncService;
 
+	@SchedulerLock(name = "SyncScheduler_syncOrganisationsEinheitenFromKeycloak", lockAtLeastFor = "PT5M", lockAtMostFor = "PT23H")
 	@Scheduled(cron = "${ozgcloud.administration.sync.organisationseinheiten.cron}")
 	public void syncOrganisationsEinheitenFromKeycloak() {
 		syncService.syncOrganisationsEinheitenFromKeycloak();
diff --git a/src/main/resources/application-local.yaml b/src/main/resources/application-local.yaml
index 7c4f421b1807160369bd03e4aa68eacf01de2987..9bd2cabd6802141106d2674605d927298b33aff7 100644
--- a/src/main/resources/application-local.yaml
+++ b/src/main/resources/application-local.yaml
@@ -2,6 +2,7 @@ spring:
   data:
     mongodb:
       uri: mongodb://localhost:27017/config-db
+      database: config-db
   security:
     user:
       name: user