diff --git a/pom.xml b/pom.xml
index edad14432134d1414d427a883bcece7ec614118c..30345bd5e601c9bb9b313a0556555a60d6d6c297 100644
--- a/pom.xml
+++ b/pom.xml
@@ -55,6 +55,7 @@
 
 		<zufi-manager.version>1.6.0</zufi-manager.version>
 		<shedlock.version>5.16.0</shedlock.version>
+		<spring-vault-core.version>3.1.2</spring-vault-core.version>
 	</properties>
 
 	<dependencies>
@@ -149,6 +150,11 @@
 			<artifactId>mapstruct-processor</artifactId>
 			<version>${mapstruct.version}</version>
 		</dependency>
+		<dependency>
+			<groupId>org.springframework.vault</groupId>
+			<artifactId>spring-vault-core</artifactId>
+			<version>${spring-vault-core.version}</version>
+		</dependency>
 
 		<!-- commons -->
 		<dependency>
diff --git a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java
index a6e74eac7d909eeefc363eebb43cb5cf078e49e5..82193473a132420319d5ba5f997b71ba7e74b29b 100644
--- a/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java
+++ b/src/main/java/de/ozgcloud/admin/setting/SettingEnvironmentRepository.java
@@ -33,6 +33,7 @@ import org.springframework.cloud.config.environment.Environment;
 import org.springframework.cloud.config.environment.PropertySource;
 import org.springframework.cloud.config.server.environment.EnvironmentRepository;
 import org.springframework.stereotype.Component;
+import org.springframework.vault.support.JsonMapFlattener;
 
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -74,8 +75,9 @@ public class SettingEnvironmentRepository implements EnvironmentRepository {
 	}
 
 	PropertySource transformToPropertySource(ApplicationSettingDTO settingDTO) {
-		return new PropertySource(StringUtils.EMPTY, objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() {
-		}));
+		return new PropertySource(StringUtils.EMPTY,
+				JsonMapFlattener.flatten(objectMapper.convertValue(settingDTO, new TypeReference<Map<String, Object>>() {
+				})));
 	}
 
 }
diff --git a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
index d65fc2dbc0b24c6dca93ec46a91614f6bca34b2c..197adf567c5b2dd23b8cc004dafb230a31cbfc1d 100644
--- a/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
+++ b/src/test/java/de/ozgcloud/admin/reporting/AggregationMappingEnvironmentSettingITCase.java
@@ -36,7 +36,7 @@ import org.springframework.data.mongodb.core.MongoOperations;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 
-import de.ozgcloud.admin.setting.YamlTestFactory;
+import de.ozgcloud.admin.setting.PropertiesTestFactory;
 import de.ozgcloud.common.test.DataITCase;
 import lombok.SneakyThrows;
 
@@ -63,36 +63,36 @@ public class AggregationMappingEnvironmentSettingITCase {
 			var result = getAggregationSettings();
 
 			assertThat(result.andReturn().getResponse().getContentAsString())
-					.isEqualTo(YamlTestFactory.createAggregationYaml());
+					.isEqualTo(PropertiesTestFactory.createAggregationProperties());
 		}
 
 		private ResultActions getAggregationSettings() throws Exception {
-			return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager-any.yaml"))
+			return mockMvc.perform(get("/configserver/OzgCloud_AggregationManager/default"))
 					.andExpect(status().isOk());
 		}
 
 		private void fillDbWithAggregationMappings() {
 			var aggregationMapping1 = AggregationMapping.builder()
 					.formIdentifier(AggregationMapping.FormIdentifier.builder()
-							.formEngineName(YamlTestFactory.FORM_ENGINE_NAME_1)
-							.formId(YamlTestFactory.FORM_ID_1)
+							.formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_1)
+							.formId(PropertiesTestFactory.FORM_ID_1)
 							.build())
-					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_1)
-							.targetPath(YamlTestFactory.TARGET_PATH_1_1).build())
-					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_2)
-							.targetPath(YamlTestFactory.TARGET_PATH_1_2).build())
-					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_1_3)
-							.targetPath(YamlTestFactory.TARGET_PATH_1_3).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_1)
+							.targetPath(PropertiesTestFactory.TARGET_PATH_1_1).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_2)
+							.targetPath(PropertiesTestFactory.TARGET_PATH_1_2).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_1_3)
+							.targetPath(PropertiesTestFactory.TARGET_PATH_1_3).build())
 					.build();
 			var aggregationMapping2 = AggregationMapping.builder()
 					.formIdentifier(AggregationMapping.FormIdentifier.builder()
-							.formEngineName(YamlTestFactory.FORM_ENGINE_NAME_2)
-							.formId(YamlTestFactory.FORM_ID_2)
+							.formEngineName(PropertiesTestFactory.FORM_ENGINE_NAME_2)
+							.formId(PropertiesTestFactory.FORM_ID_2)
 							.build())
-					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_1)
-							.targetPath(YamlTestFactory.TARGET_PATH_2_1).build())
-					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(YamlTestFactory.SOURCE_PATH_2_2)
-							.targetPath(YamlTestFactory.TARGET_PATH_2_2).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_1)
+							.targetPath(PropertiesTestFactory.TARGET_PATH_2_1).build())
+					.mapping(AggregationMapping.FieldMapping.builder().sourcePath(PropertiesTestFactory.SOURCE_PATH_2_2)
+							.targetPath(PropertiesTestFactory.TARGET_PATH_2_2).build())
 					.build();
 
 			mongoOperations.dropCollection(AggregationMapping.COLLECTION_NAME);
diff --git a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java
similarity index 97%
rename from src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java
rename to src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java
index 40ac3f169a6f6d28409515e1a89d38b39bfc918a..3c149bd9bcf9a8ff46c0cc434b2f5a48ee629bb7 100644
--- a/src/test/java/de/ozgcloud/admin/setting/YamlTestFactory.java
+++ b/src/test/java/de/ozgcloud/admin/setting/PropertiesTestFactory.java
@@ -31,7 +31,7 @@ import de.ozgcloud.admin.setting.postfach.PostfachSettingBody;
 import de.ozgcloud.admin.setting.postfach.PostfachSettingBodyTestFactory;
 import de.ozgcloud.common.test.TestUtils;
 
-public class YamlTestFactory {
+public class PropertiesTestFactory {
 
 	public static final PostfachSettingBody POSTFACH = PostfachSettingBodyTestFactory.create();
 	public static final String FORM_ENGINE_NAME_1 = LoremIpsum.getInstance().getWords(1);
@@ -72,8 +72,8 @@ public class YamlTestFactory {
 		return TestUtils.loadTextFile("yamlTemplates/settings/initial.yaml.tmpl");
 	}
 
-	public static String createAggregationYaml() {
-		return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.yaml.tmpl",
+	public static String createAggregationProperties() {
+		return TestUtils.loadTextFile("yamlTemplates/settings/aggregation.json.tmpl",
 				FORM_ENGINE_NAME_1,
 				FORM_ID_1,
 				SOURCE_PATH_1_1,
diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java
index 4fe44a5e5de623e8c08dfd39cb6073058c497ed5..455c4825d89d40417b9b459983f7272b6ad21dd5 100644
--- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java
+++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentITCase.java
@@ -80,7 +80,8 @@ class SettingEnvironmentITCase {
 			void shouldHandleEmptySetting() {
 				var result = getAlfaSettings();
 
-				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml());
+				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString()))
+						.isEqualTo(PropertiesTestFactory.createInitialYaml());
 			}
 		}
 
@@ -97,7 +98,7 @@ class SettingEnvironmentITCase {
 			void shouldReturnValuesForAlfa() {
 				var result = getAlfaSettings();
 
-				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createAlfaYaml());
+				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(PropertiesTestFactory.createAlfaYaml());
 			}
 		}
 
@@ -122,7 +123,8 @@ class SettingEnvironmentITCase {
 			void shouldHandleEmptySetting() {
 				var result = getVorgangManagerSettings();
 
-				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString())).isEqualTo(YamlTestFactory.createInitialYaml());
+				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString()))
+						.isEqualTo(PropertiesTestFactory.createInitialYaml());
 			}
 		}
 
@@ -140,7 +142,7 @@ class SettingEnvironmentITCase {
 				var result = getVorgangManagerSettings();
 
 				assertThat(formatLineBreaks(result.andReturn().getResponse().getContentAsString()))
-						.isEqualTo(YamlTestFactory.createVorgangManagerYaml());
+						.isEqualTo(PropertiesTestFactory.createVorgangManagerYaml());
 			}
 		}
 
diff --git a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java
index b59b5edc50936b0254c90b3f8c27d53c688c7cf6..25e1a2ac159611db2ecc333a31a3ab3b42614cfa 100644
--- a/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java
+++ b/src/test/java/de/ozgcloud/admin/setting/SettingEnvironmentRepositoryTest.java
@@ -199,7 +199,10 @@ class SettingEnvironmentRepositoryTest {
             @Getter
             private ApplicationSettingDTO attribute = new ApplicationSettingDTO() {
                 @Getter
-                private String nestedAttribute = "innerValue";
+                private ApplicationSettingDTO nestedAttribute = new ApplicationSettingDTO() {
+                    @Getter
+                    private String nestedAttribute = "innerValue";
+                };
             };
         };
 
@@ -213,8 +216,8 @@ class SettingEnvironmentRepositoryTest {
         }
 
         @Test
-        void shouldReturnPropertySourceOfNestedObject() {
-            var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute", "innerValue"));
+        void shouldReturnPropertySourceOfFlattenedNestedObject() {
+            var expectedPropertySource = new PropertySource(StringUtils.EMPTY, Map.of("attribute.nestedAttribute.nestedAttribute", "innerValue"));
 
             var resultPropertySource = repository.transformToPropertySource(nestedSettingDTO);
 
diff --git a/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl
new file mode 100644
index 0000000000000000000000000000000000000000..b4db7c454072b20b8eb93e8e8fc7dbcaa32d9234
--- /dev/null
+++ b/src/test/resources/yamlTemplates/settings/aggregation.json.tmpl
@@ -0,0 +1 @@
+{"name":"OzgCloud_AggregationManager","profiles":["default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"","source":{"ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[0].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[1].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[0].fieldMappings[2].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formEngineName":"%s","ozgcloud.aggregation.aggregationMappings[1].formIdentifier.formId":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[0].targetPath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].sourcePath":"%s","ozgcloud.aggregation.aggregationMappings[1].fieldMappings[1].targetPath":"%s"}}]}
\ No newline at end of file
diff --git a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl b/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl
deleted file mode 100644
index 0b8a9c513f6ed3a08f3b91f081bfcf583dbfd62a..0000000000000000000000000000000000000000
--- a/src/test/resources/yamlTemplates/settings/aggregation.yaml.tmpl
+++ /dev/null
@@ -1,21 +0,0 @@
-ozgcloud:
-  aggregation:
-    aggregationMappings:
-    - formIdentifier:
-        formEngineName: %s
-        formId: %s
-      fieldMappings:
-      - sourcePath: %s
-        targetPath: %s
-      - sourcePath: %s
-        targetPath: %s
-      - sourcePath: %s
-        targetPath: %s
-    - formIdentifier:
-        formEngineName: %s
-        formId: %s
-      fieldMappings:
-      - sourcePath: %s
-        targetPath: %s
-      - sourcePath: %s
-        targetPath: %s