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..fe2eba2fe1c36f077e18aeab4cd953775c68b977 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,7 +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 NOTIFICATION_SEND_FOR_FIELD = "userSettings.notificationsSendFor";
+	public static final String USER_SETTINGS_FIELD = "userSettings";
 
 	@JsonIgnore
 	@BsonId
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
index deab57205f2d89612c0bbe2b5d8f5f71f69a02d4..27edabcc7dc9d0d1e2be4c549065298f1c4eca3e 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/UserService.java
@@ -23,19 +23,22 @@
  */
 package de.ozgcloud.user;
 
+import java.util.Objects;
 import java.util.Optional;
 import java.util.stream.Stream;
 
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.inject.Inject;
+
 import org.apache.commons.lang3.StringUtils;
 
 import de.ozgcloud.common.logging.OzgCloudLogging;
 import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
 import de.ozgcloud.user.common.errorhandling.TechnicalException;
 import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
+import de.ozgcloud.user.settings.UserSettings;
 import io.smallrye.mutiny.Uni;
 import io.smallrye.mutiny.infrastructure.Infrastructure;
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
 
 @ApplicationScoped
 @OzgCloudLogging
@@ -48,10 +51,17 @@ public class UserService {
 
 	public User save(User user) {
 		findUser(user).ifPresentOrElse(persistedUser -> repository.updateUser(addIdUser(user, persistedUser)),
-				() -> repository.persist(user));
+				() -> saveNewUser(user));
 		return repository.refresh(user);
 	}
 
+	void saveNewUser(User user) {
+		if (Objects.isNull(user.getUserSettings())) {
+			user.setUserSettings(UserSettings.createDefault());
+		}
+		repository.persist(user);
+	}
+
 	public Stream<User> findUsers(FindUserProfilesQuery query) {
 		return repository.findUsers(query.getSearchBy(), query.getLimit());
 	}
@@ -79,8 +89,7 @@ public class UserService {
 	}
 
 	private Optional<User> findUser(User user) {
-		return repository.findByExternalId(user.getExternalId())
-				.or(() -> findByEmail(user.getEmail()));
+		return repository.findByExternalId(user.getExternalId()).or(() -> findByEmail(user.getEmail()));
 	}
 
 	private Optional<User> findByEmail(String email) {
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/recipient/RecipientRepository.java b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
index 417e715de7e0aedead84a84a4484ee123c796f55..17482b933b614b1c6f36c61b58b064846937b907 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/recipient/RecipientRepository.java
@@ -4,17 +4,21 @@ import static de.ozgcloud.user.User.*;
 
 import java.util.List;
 
+import jakarta.enterprise.context.ApplicationScoped;
+
 import de.ozgcloud.common.logging.OzgCloudLogging;
 import de.ozgcloud.user.User;
+import de.ozgcloud.user.common.DocumentUtils;
 import de.ozgcloud.user.settings.NotificationsSendFor;
+import de.ozgcloud.user.settings.UserSettings;
 import io.quarkus.mongodb.panache.PanacheMongoRepository;
-import jakarta.enterprise.context.ApplicationScoped;
 
 @ApplicationScoped
 @OzgCloudLogging
 class RecipientRepository implements PanacheMongoRepository<User> {
 
-	private static final String SEARCH_RECIPIENT_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and " + NOTIFICATION_SEND_FOR_FIELD + " = ?2";
+	private static final String SEARCH_RECIPIENT_QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and "
+			+ DocumentUtils.buildFieldPath(USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD) + " = ?2";
 
 	public List<User> findByOrganisationsEinheitId(String organisationseinheitId) {
 		return find(SEARCH_RECIPIENT_QUERY, organisationseinheitId, NotificationsSendFor.ALL.name()).list();
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 08fd9756f5144f793b456c047e14d988233518e0..112258b7c08abc6bb258579d22a2318ed9dd5198 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
@@ -26,17 +26,35 @@ package de.ozgcloud.user.settings;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Getter;
-import lombok.NoArgsConstructor;
 import lombok.Setter;
 
 @Builder(toBuilder = true)
-@AllArgsConstructor
-@NoArgsConstructor
 @Getter
 @Setter
+@AllArgsConstructor
 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;
+	private boolean vorgangAssignedToUser;
+	private boolean postfachNachrichtFromAntragsteller;
+	private boolean wiedervorlageOverdue;
+
+	public UserSettings(NotificationsSendFor notificationsSendFor) {
+		this(notificationsSendFor, notificationsSendFor == NotificationsSendFor.ALL, true, true, true);
+	}
+
+	public UserSettings() {
+		this(NotificationsSendFor.NONE);
+	}
+
+	public static UserSettings createDefault() {
+		return new UserSettings();
+	}
 }
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsResource.java b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsResource.java
index de7b344a71ef2ea1874a55ef8f4bee02592f4e2a..a1bf4dc8f02c0ecce2efd7be84e25b74cd7004c1 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsResource.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsResource.java
@@ -25,8 +25,6 @@ package de.ozgcloud.user.settings;
 
 import java.util.Objects;
 
-import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
-import de.ozgcloud.user.common.errorhandling.FunctionalException;
 import jakarta.inject.Inject;
 import jakarta.ws.rs.GET;
 import jakarta.ws.rs.PATCH;
@@ -43,6 +41,8 @@ import org.jboss.resteasy.reactive.common.util.RestMediaType;
 
 import de.ozgcloud.user.User;
 import de.ozgcloud.user.UserService;
+import de.ozgcloud.user.common.errorhandling.AccessForbiddenException;
+import de.ozgcloud.user.common.errorhandling.FunctionalException;
 import io.quarkus.hal.HalEntityWrapper;
 
 @Path(UserSettingsResource.USER_PATH)
@@ -86,7 +86,7 @@ public class UserSettingsResource {
 			throw new FunctionalException(() -> "Request Body missing.");
 		}
 
-		return userSettingsService.updateByUserId(userSettings, userId)
+		return userSettingsService.updateByUserId(userId, userSettings)
 				.map(updatedSettings -> resourceAssembler.toResource(updatedSettings, userId, userManagerUrl))
 				.orElseThrow(() -> new FunctionalException(() -> "Invalid user id"));
 	}
diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsService.java b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsService.java
index 11459e7a474a80d80823df6f7945661ddd3b0416..d7aa65b6ecb7546f5a70a42555e417124dcd8a46 100644
--- a/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsService.java
+++ b/user-manager-server/src/main/java/de/ozgcloud/user/settings/UserSettingsService.java
@@ -40,8 +40,9 @@ class UserSettingsService {
 	@Inject
 	UserSettingsRepository repository;
 
-	public Optional<UserSettings> updateByUserId(UserSettings userSettings, String userId) {
-		return repository.updateByUserId(userId, userSettings);
+	public Optional<UserSettings> updateByUserId(String userId, UserSettings newSettings) {
+		var settings = newSettings.toBuilder().vorgangCreated(newSettings.getNotificationsSendFor() == NotificationsSendFor.ALL).build();
+		return repository.updateByUserId(userId, settings);
 	}
 
 	public UserSettings getByUserId(String userId) {
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/UserServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
index a78a6738176d01b09e0d4af4b7a829e958c10afd..434d355536c0ccc3b261ad8557e9aeab7eda031d 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/UserServiceTest.java
@@ -45,6 +45,8 @@ import org.mockito.Spy;
 import de.ozgcloud.user.common.errorhandling.ResourceNotFoundException;
 import de.ozgcloud.user.common.errorhandling.TechnicalException;
 import de.ozgcloud.user.keycloak.KeycloakUserRemoteService;
+import de.ozgcloud.user.settings.NotificationsSendFor;
+import de.ozgcloud.user.settings.UserSettings;
 
 class UserServiceTest {
 
@@ -365,4 +367,36 @@ class UserServiceTest {
 			assertThatNoException().isThrownBy(() -> service.assertInactiveUser(user.build()));
 		}
 	}
+
+	@Nested
+	class TestSaveNewUser {
+
+		@Test
+		void shouldSetDefaultUserSettings() {
+			var user = UserTestFactory.createBuilder().userSettings(null).build();
+
+			service.saveNewUser(user);
+
+			assertThat(user.getUserSettings()).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
+		}
+
+		@Test
+		void shouldNotSetDefaultUserSettings() {
+			var settings = UserSettings.builder().notificationsSendFor(NotificationsSendFor.ALL).build();
+			var user = createBuilder().userSettings(settings).build();
+
+			service.saveNewUser(user);
+
+			assertThat(user.getUserSettings()).isEqualTo(settings);
+		}
+
+		@Test
+		void shouldPersistUser() {
+			var user = UserTestFactory.create();
+
+			service.saveNewUser(user);
+
+			verify(repository).persist(user);
+		}
+	}
 }
\ No newline at end of file
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/recipient/RecipientRepositoryTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/recipient/RecipientRepositoryTest.java
index addd8cf25b5a30a51bc2a54f58ce0228798e9c58..c1e0c5da10499a826110aa997f430acea78577b8 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/recipient/RecipientRepositoryTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/recipient/RecipientRepositoryTest.java
@@ -37,7 +37,9 @@ import org.mockito.Spy;
 
 import de.ozgcloud.user.User;
 import de.ozgcloud.user.UserTestFactory;
+import de.ozgcloud.user.common.DocumentUtils;
 import de.ozgcloud.user.settings.NotificationsSendFor;
+import de.ozgcloud.user.settings.UserSettings;
 import io.quarkus.mongodb.panache.PanacheQuery;
 
 class RecipientRepositoryTest {
@@ -50,7 +52,8 @@ class RecipientRepositoryTest {
 	@DisplayName("Test finding users by Organistationseinheit")
 	@Nested
 	class TestFindByOrganisationsEinheit {
-		private static final String QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and " + NOTIFICATION_SEND_FOR_FIELD + " = ?2";
+		private static final String QUERY = ORGANISATIONS_EINHEIT_IDS_FIELD + " = ?1 and "
+				+ DocumentUtils.buildFieldPath(USER_SETTINGS_FIELD, UserSettings.NOTIFICATIONS_SEND_FOR_FIELD) + " = ?2";
 
 		@Test
 		void shouldCallFind() {
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsResourceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsResourceTest.java
index df8ea4ff0e9ed34e051c28903e2ab78476f99f62..3cde1320d243fb4191cb5d7b7ef54447cc8d2774 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsResourceTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsResourceTest.java
@@ -168,7 +168,7 @@ class UserSettingsResourceTest {
 			@BeforeEach
 			void mockAccess() {
 				doNothing().when(resource).checkUserAccess(anyString());
-				when(userSettingsService.updateByUserId(any(UserSettings.class), anyString())).thenReturn(Optional.of(updatedUserSettings));
+				when(userSettingsService.updateByUserId(anyString(), any(UserSettings.class))).thenReturn(Optional.of(updatedUserSettings));
 			}
 
 			@Test
@@ -184,7 +184,7 @@ class UserSettingsResourceTest {
 				when(resourceAssembler.toResource(any(), anyString(), anyString())).thenReturn(new HalEntityWrapper(null));
 				resource.updateUserSettings(USER_ID, userSettings);
 
-				verify(userSettingsService).updateByUserId(userSettings, USER_ID);
+				verify(userSettingsService).updateByUserId(USER_ID, userSettings);
 			}
 
 			@Test
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceITCase.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceITCase.java
index 6f0d5f1d6744d4c813b16e7a4e0285577a34f112..c3fcc2884cdf15e25ec77559d394ab01b088f613 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceITCase.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceITCase.java
@@ -66,7 +66,7 @@ class UserSettingsServiceITCase {
 					.notificationsSendFor(NotificationsSendFor.ALL)
 					.build();
 
-			var savedUserSettings = service.updateByUserId(userSettingsToSave, UserTestFactory.ID.toHexString());
+			var savedUserSettings = service.updateByUserId(UserTestFactory.ID.toHexString(), userSettingsToSave);
 
 			assertThat(savedUserSettings)
 					.isPresent()
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceTest.java
index 5eeac12fb8fda7f6ca0cdeceb3f74c6171acdace..f46eafb7f7832577f64ffe395dab72158741bea2 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceTest.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsServiceTest.java
@@ -33,6 +33,8 @@ import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
 
@@ -56,11 +58,54 @@ class UserSettingsServiceTest {
 		private final UserSettings userSettings = UserSettingsTestFactory.create();
 		private final String userId = UUID.randomUUID().toString();
 
+		@Captor
+		private ArgumentCaptor<UserSettings> userSettingsArgumentCaptor;
+
 		@Test
 		void shouldCallRepository() {
-			service.updateByUserId(userSettings, userId);
+			service.updateByUserId(userId, userSettings);
+
+			verify(repository).updateByUserId(eq(userId), any(UserSettings.class));
+		}
 
-			verify(repository).updateByUserId(userId, userSettings);
+		@Test
+		void shouldSetVorgangCreated() {
+			service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.ALL).vorgangCreated(false).build());
+
+			verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
+			assertThat(userSettingsArgumentCaptor.getValue())
+					.extracting(
+							UserSettings::getNotificationsSendFor,
+							UserSettings::isVorgangCreated,
+							UserSettings::isVorgangAssignedToUser,
+							UserSettings::isPostfachNachrichtFromAntragsteller,
+							UserSettings::isWiedervorlageOverdue)
+					.containsExactly(
+							NotificationsSendFor.ALL,
+							true,
+							UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
+							UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
+							UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
+		}
+
+		@Test
+		void shouldUnsetVorgangCreated() {
+			service.updateByUserId(userId, userSettings.toBuilder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(true).build());
+
+			verify(repository).updateByUserId(eq(userId), userSettingsArgumentCaptor.capture());
+			assertThat(userSettingsArgumentCaptor.getValue())
+					.extracting(
+							UserSettings::getNotificationsSendFor,
+							UserSettings::isVorgangCreated,
+							UserSettings::isVorgangAssignedToUser,
+							UserSettings::isPostfachNachrichtFromAntragsteller,
+							UserSettings::isWiedervorlageOverdue)
+					.containsExactly(
+							NotificationsSendFor.NONE,
+							false,
+							UserSettingsTestFactory.VORGANG_ASSIGNED_TO_USER,
+							UserSettingsTestFactory.POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER,
+							UserSettingsTestFactory.WIEDERVORLAGE_OVERDUE);
 		}
 	}
 
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
new file mode 100644
index 0000000000000000000000000000000000000000..f017b39bb68b5c89d24450ca9a1be6c0ff8573d1
--- /dev/null
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTest.java
@@ -0,0 +1,45 @@
+package de.ozgcloud.user.settings;
+
+import static org.assertj.core.api.Assertions.*;
+
+import org.junit.jupiter.api.Nested;
+import org.junit.jupiter.api.Test;
+
+class UserSettingsTest {
+
+	@Nested
+	class TestConstructor {
+		@Test
+		void shouldCreateWithVorgangCreatedSet() {
+			var userSettings = new UserSettings(NotificationsSendFor.ALL);
+
+			assertThat(userSettings.isVorgangCreated()).isTrue();
+		}
+
+		@Test
+		void shouldCreateWithVorgangCreatedUnset() {
+			var userSettings = new UserSettings(NotificationsSendFor.NONE);
+
+			assertThat(userSettings.isVorgangCreated()).isFalse();
+		}
+
+		@Test
+		void shouldCreateWithDefaultValues() {
+			var userSettings = new UserSettings();
+
+			assertThat(userSettings).usingRecursiveComparison().isEqualTo(UserSettings.createDefault());
+		}
+	}
+
+	@Nested
+	class TestCreateDefault {
+
+		@Test
+		void shouldHaveDefaultSettings() {
+			assertThat(UserSettings.createDefault()).usingRecursiveComparison().isEqualTo(
+					UserSettings.builder().notificationsSendFor(NotificationsSendFor.NONE).vorgangCreated(false).vorgangAssignedToUser(true)
+							.postfachNachrichtFromAntragsteller(true).wiedervorlageOverdue(true).build());
+		}
+
+	}
+}
\ No newline at end of file
diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTestFactory.java b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTestFactory.java
index 5e3c7ab6886cf791a36976a18e56776d0d4f56a9..db31c9ee8a14ce97b014ee3ac1edfce64c311f6a 100644
--- a/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTestFactory.java
+++ b/user-manager-server/src/test/java/de/ozgcloud/user/settings/UserSettingsTestFactory.java
@@ -26,6 +26,10 @@ package de.ozgcloud.user.settings;
 public class UserSettingsTestFactory {
 
 	public static final NotificationsSendFor NOTIFICATIONS_SEND_FOR = NotificationsSendFor.NONE;
+	public static final boolean VORGANG_CREATED = false;
+	public static final boolean VORGANG_ASSIGNED_TO_USER = true;
+	public static final boolean POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER = true;
+	public static final boolean WIEDERVORLAGE_OVERDUE = true;
 
 	public static UserSettings create() {
 		return createBuilder().build();
@@ -33,6 +37,10 @@ public class UserSettingsTestFactory {
 
 	public static UserSettings.UserSettingsBuilder createBuilder() {
 		return UserSettings.builder()
-				.notificationsSendFor(NOTIFICATIONS_SEND_FOR);
+				.notificationsSendFor(NOTIFICATIONS_SEND_FOR)
+				.vorgangCreated(VORGANG_CREATED)
+				.vorgangAssignedToUser(VORGANG_ASSIGNED_TO_USER)
+				.postfachNachrichtFromAntragsteller(POSTFACH_NACHRICHT_FROM_ANTRAGSTELLER)
+				.wiedervorlageOverdue(WIEDERVORLAGE_OVERDUE);
 	}
 }
\ No newline at end of file
diff --git a/user-manager-server/src/test/resources/application.yml b/user-manager-server/src/test/resources/application.yml
index bb3a56bcf9202539a99a364b521f5411408c71f0..1efbf87b728c5b3813ea9f58e2c7f73ec9b749d4 100644
--- a/user-manager-server/src/test/resources/application.yml
+++ b/user-manager-server/src/test/resources/application.yml
@@ -17,6 +17,8 @@ quarkus:
     auth-server-url: https://sso.dev.by.ozg-cloud.de/realms/by-kiel-dev
   management:
     test-port: 9003
+  mongock:
+    enabled: false
 
 keycloak:
   url: http://localhost:8088