diff --git a/pom.xml b/pom.xml
index 3f0b57afc37093b3413ccd0ca2e77fb922f720da..75cb93d9f7aa640cdef0cee88d93124caa2a3101 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,8 @@
 		<ozgcloud.license.version>1.6.0</ozgcloud.license.version>
 		<lombok.version>1.18.34</lombok.version>
 
+		<quarkus.mongock.version>0.3.0</quarkus.mongock.version>
+
 		<!-- plugins -->
 		<maven.compiler.release>21</maven.compiler.release>
 		<jandex-maven-plugin-version>1.2.3</jandex-maven-plugin-version>
diff --git a/user-manager-server/pom.xml b/user-manager-server/pom.xml
index 5c919c5270be1c2c999fb00484ebeaff1cfcb3b0..9ae6f04364246aeb50383a357bb3b6ced675832b 100644
--- a/user-manager-server/pom.xml
+++ b/user-manager-server/pom.xml
@@ -122,6 +122,11 @@
 			<groupId>io.quarkus</groupId>
 			<artifactId>quarkus-grpc</artifactId>
 		</dependency>
+		<dependency>
+			<groupId>io.quarkiverse.mongock</groupId>
+			<artifactId>quarkus-mongock</artifactId>
+			<version>${quarkus.mongock.version}</version>
+		</dependency>
 
 		<!-- Logging -->
 		<dependency>
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/User.java b/user-manager-server/src/main/java/de/ozgcloud/user/User.java
index 0d645513f212f4958a4b2e712c0428046d63e995..4730ac15f4b5c424bfe50b964817965f356dde44 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/User.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/User.java
@@ -50,6 +50,8 @@ import lombok.ToString;
 @RegisterForReflection
 public class User {
 
+	public static final String COLLECTION_NAME = "User";
+
 	public static final String EXTERNAL_ID_FIELD = "externalId";
 	public static final String KEYCLOAK_USER_ID = "keycloakUserId";
 	public static final String EMAIL_FIELD = "email";
@@ -61,6 +63,7 @@ public class User {
 	public static final String FULL_NAME_REVERSED_FIELD = "fullNameReversed";
 	public static final String USERNAME_FIELD = "username";
 	public static final String ORGANISATIONS_EINHEIT_IDS_FIELD = "organisationsEinheitIds";
+	public static final String USER_SETTINGS_FIELD = "userSettings";
 	public static final String NOTIFICATION_SEND_FOR_FIELD = "userSettings.notificationsSendFor";
 
 	@JsonIgnore
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/common/DocumentUtils.java b/user-manager-server/src/main/java/de/ozgcloud/user/common/DocumentUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..11e45a77b6e24c07879f59db2b4deac17615b382
--- /dev/null
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/common/DocumentUtils.java
@@ -0,0 +1,8 @@
+package de.ozgcloud.user.common;
+
+public class DocumentUtils {
+
+	public static String buildFieldPath(String... fields) {
+		return String.join(".", fields);
+	}
+}
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettings.java b/user-manager-server/src/main/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettings.java
new file mode 100644
index 0000000000000000000000000000000000000000..321c642e900d7375f711924034c5d6a3e33afd57
--- /dev/null
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettings.java
@@ -0,0 +1,70 @@
+package de.ozgcloud.user.common.migration;
+
+import static de.ozgcloud.user.common.DocumentUtils.*;
+
+import java.util.Map;
+
+import org.bson.Document;
+
+import com.mongodb.client.MongoCollection;
+import com.mongodb.client.MongoDatabase;
+
+import de.ozgcloud.user.User;
+import de.ozgcloud.user.settings.UserSettings;
+import io.mongock.api.annotations.ChangeUnit;
+import io.mongock.api.annotations.Execution;
+import io.mongock.api.annotations.RollbackExecution;
+import lombok.RequiredArgsConstructor;
+
+@RequiredArgsConstructor
+@ChangeUnit(id = "2024-09-22 12:00:00 OZG-3539", order = "M001", author = "sbergandy", systemVersion = "1")
+public class M001_SetNewAndMigrateUserSettings {
+
+	private final MongoDatabase mongoDatabase;
+
+	@Execution
+	public void migrationMethod() {
+		var userCollection = mongoDatabase.getCollection(User.COLLECTION_NAME);
+		migrateNotificationsSendForALL(userCollection);
+		migrateNotificationsSendForNONE(userCollection);
+		migrateEmptySettings(userCollection);
+	}
+
+	private void migrateNotificationsSendForALL(MongoCollection<Document> userCollection) {
+		userCollection.updateMany(
+				new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), "ALL")),
+				new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
+						Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL",
+								UserSettings.VORGANG_CREATED_FIELD, true,
+								UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+								UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+								UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
+	}
+
+	private void migrateNotificationsSendForNONE(MongoCollection<Document> userCollection) {
+		userCollection.updateMany(
+				new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), "NONE")),
+				new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
+						Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
+								UserSettings.VORGANG_CREATED_FIELD, false,
+								UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+								UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+								UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
+	}
+
+	private void migrateEmptySettings(MongoCollection<Document> userCollection) {
+		userCollection.updateMany(
+				new Document(Map.of(buildFieldPath(User.USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD), Map.of("$exists", false))),
+				new Document(Map.of("$set", Map.of(User.USER_SETTINGS_FIELD,
+						Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
+								UserSettings.VORGANG_CREATED_FIELD, false,
+								UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+								UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+								UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true)))));
+	}
+
+	@RollbackExecution
+	public void rollback() {
+		// kein rollback implementiert
+	}
+}
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettings.java b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettings.java
index 594f462277faf584988d2e43a07438a833d2a6a6..b686a9cb6e5d3b4a4d4b500bcee22eb83b78f832 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettings.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettings.java
@@ -25,16 +25,18 @@ package de.ozgcloud.user.settings;
 
 import lombok.Builder;
 import lombok.Getter;
-import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 @Builder(toBuilder = true)
-@NoArgsConstructor
 @Getter
 @Setter
 public class UserSettings {
 
-	static final String NOTIFICATIONS_SEND_FOR_FIELD = "notificationsSendFor";
+	public static final String NOTIFICATIONS_SEND_FOR_FIELD = "notificationsSendFor";
+	public static final String VORGANG_CREATED_FIELD = "vorgangCreated";
+	public static final String VORGANG_ASSIGNED_TO_USER_FIELD = "vorgangAssignedToUser";
+	public static final String POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD = "postfachNachrichtFromAntragsteller";
+	public static final String WIEDERVORLAGE_OVERDUE_FIELD = "wiedervorlageOverdue";
 
 	private NotificationsSendFor notificationsSendFor;
 	private boolean vorgangCreated;
@@ -55,6 +57,10 @@ public class UserSettings {
 		this(notificationsSendFor, notificationsSendFor == NotificationsSendFor.ALL, true, true, true);
 	}
 
+	public UserSettings() {
+		this(NotificationsSendFor.NONE, false, true, true, true);
+	}
+
 	public static UserSettings createDefault() {
 		return UserSettings.builder()
 				.notificationsSendFor(NotificationsSendFor.NONE)
diff --git a/user-manager-server/src/main/resources/application.yaml b/user-manager-server/src/main/resources/application.yaml
index c5f0bca40745037a671471028db8c950b57c93fd..3e78b8d22c234f4a2565cf3d6a9058c47e5ba665 100644
--- a/user-manager-server/src/main/resources/application.yaml
+++ b/user-manager-server/src/main/resources/application.yaml
@@ -34,6 +34,9 @@ quarkus:
   management:
     enabled: true
     port: 9002
+  mongock:
+    migrate-at-start: true
+    transaction-enabled: false
 
 grpc:
   server:
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettingsITCase.java b/user-manager-server/src/test/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettingsITCase.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0b74814a531148c13e186562aa9077b03f560ec
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/common/migration/M001_SetNewAndMigrateUserSettingsITCase.java
@@ -0,0 +1,94 @@
+package de.ozgcloud.user.common.migration;
+
+import static org.assertj.core.api.Assertions.*;
+
+import java.util.Map;
+
+import jakarta.inject.Inject;
+
+import org.bson.Document;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import com.mongodb.client.MongoClient;
+import com.mongodb.client.MongoCollection;
+
+import de.ozgcloud.user.User;
+import de.ozgcloud.user.common.MongoDbTestProfile;
+import de.ozgcloud.user.settings.UserSettings;
+import io.quarkus.test.junit.QuarkusTest;
+import io.quarkus.test.junit.TestProfile;
+
+@QuarkusTest
+@TestProfile(MongoDbTestProfile.class)
+class M001_SetNewAndMigrateUserSettingsITCase {
+
+	@ConfigProperty(name = "quarkus.mongodb.database")
+	String database;
+
+	@Inject
+	MongoClient mongoClient;
+
+	private M001_SetNewAndMigrateUserSettings migration;
+	private MongoCollection<Document> userCollection;
+
+	@BeforeEach
+	void setUp() {
+		migration = new M001_SetNewAndMigrateUserSettings(mongoClient.getDatabase(database));
+	}
+
+	@BeforeEach
+	void initDatabase() {
+		userCollection = mongoClient.getDatabase(database).getCollection(User.COLLECTION_NAME);
+		userCollection.drop();
+		userCollection.insertOne(new Document(
+				Map.of(User.USERNAME_FIELD, "alluser",
+						User.USER_SETTINGS_FIELD, Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL"))));
+		userCollection.insertOne(new Document(Map.of(User.USERNAME_FIELD, "noneuser",
+				User.USER_SETTINGS_FIELD, Map.of(UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE"))));
+		userCollection.insertOne(new Document(Map.of(User.USERNAME_FIELD, "nosettings")));
+	}
+
+	@Test
+	void shouldMigrateNotificationSendFor_ALL() {
+		migration.migrationMethod();
+
+		var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "alluser")));
+		assertThat(user.first()).contains(
+				entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
+						UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "ALL",
+						UserSettings.VORGANG_CREATED_FIELD, true,
+						UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+						UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+						UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
+	}
+
+	@Test
+	void shouldMigrateNotificationSendFor_NONE() {
+		migration.migrationMethod();
+
+		var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "noneuser")));
+		assertThat(user.first()).contains(
+				entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
+						UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
+						UserSettings.VORGANG_CREATED_FIELD, false,
+						UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+						UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+						UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
+	}
+
+	@Test
+	void shouldSetDefaultSettings() {
+		migration.migrationMethod();
+
+		var user = userCollection.find(new Document(Map.of(User.USERNAME_FIELD, "nosettings")));
+		assertThat(user.first()).contains(
+				entry(User.USER_SETTINGS_FIELD, new Document(Map.of(
+						UserSettings.NOTIFICATIONS_SEND_FOR_FIELD, "NONE",
+						UserSettings.VORGANG_CREATED_FIELD, false,
+						UserSettings.VORGANG_ASSIGNED_TO_USER_FIELD, true,
+						UserSettings.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER_FIELD, true,
+						UserSettings.WIEDERVORLAGE_OVERDUE_FIELD, true))));
+	}
+}
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTest.java
index b3c52e9efb8f5fb02fe24e1cab478af307ad0543..f017b39bb68b5c89d24450ca9a1be6c0ff8573d1 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTest.java
@@ -22,6 +22,13 @@ class UserSettingsTest {
 
 			assertThat(userSettings.isVorgangCreated()).isFalse();
 		}
+
+		@Test
+		void shouldCreateWithDefaultValues() {
+			var userSettings = new UserSettings();
+
+			assertThat(userSettings).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
+		}
 	}
 
 	@Nested