diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java index 3fa1a7e55..dc0565e44 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/dataexchange/service/DossierTemplateImportService.java @@ -627,6 +627,9 @@ public class DossierTemplateImportService { private void updateComponents(ImportTemplateResult request, String dossierTemplateId) { + List existingComponentDefinitions = componentDefinitionPersistenceService.findComponentsByDossierTemplateId(dossierTemplateId); + existingComponentDefinitions.forEach(componentDefinition -> componentDefinitionPersistenceService.delete(componentDefinition.getId())); + request.getComponentDefinitions() .forEach(componentDefinition -> { componentDefinition.setDossierTemplateId(dossierTemplateId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java index 6d4ad89c5..b8b5b5376 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateImportTest.java @@ -149,6 +149,24 @@ public class DossierTemplateImportTest extends AbstractPersistenceServerServiceT assertThat(systemManagedTypes.size()).isEqualTo(8); } + @SneakyThrows + @Test + public void testDossierTemplateImportAsUpdateDM() { + + TenantContext.setTenantId("redaction"); + + var archive = loadFileFromClasspath("dm.zip"); + var request = ImportDossierTemplateRequest.builder().archive(archive).updateExistingDossierTemplate(false).userId("system").build(); + DossierTemplate dossierTemplate = dossierTemplateManagementService.importDossierTemplate(request); + + TypeResponse types = dictionaryClient.getAllTypes(dossierTemplate.getId(), null, true); + List systemManagedTypes = types.getTypes().stream().filter(TypeValue::isSystemManaged).collect(Collectors.toList()); + assertThat(systemManagedTypes.size()).isEqualTo(8); + + var request1 = ImportDossierTemplateRequest.builder().archive(archive).dossierTemplateId(dossierTemplate.getId()).updateExistingDossierTemplate(true).userId("system").build(); + dossierTemplateManagementService.importDossierTemplate(request1); + } + @SneakyThrows @Test public void testDossierTemplateImportWithTheSameName() { diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/dm.zip b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/dm.zip new file mode 100644 index 000000000..39b93db1c Binary files /dev/null and b/persistence-service-v1/persistence-service-server-v1/src/test/resources/files/dossiertemplates/dm.zip differ