diff --git a/pom.xml b/pom.xml
index f02220a8d..f9f640739 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
gridsuite
org.gridsuite:network-modification-server
- 0.83.0
+ 0.84.0-SNAPSHOT
diff --git a/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java b/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java
index d0ef5ac5a..642f770d1 100644
--- a/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java
+++ b/src/main/java/org/gridsuite/modification/server/entities/ModificationEntity.java
@@ -93,7 +93,8 @@ protected ModificationEntity(ModificationInfos modificationInfos) {
this.date = Instant.now().truncatedTo(ChronoUnit.MICROS);
// Do not put this stashed status in assignAttributes, it's not part of a network modification as such.
this.stashed = modificationInfos.getStashed();
- this.activated = modificationInfos.getActivated();
+ // On creation, default a missing activation flag to true (a null value otherwise means "leave status unchanged" on update)
+ this.activated = modificationInfos.getActivated() != null ? modificationInfos.getActivated() : true;
assignAttributes(modificationInfos);
}
diff --git a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
index 26f6a81d7..ecc85e483 100644
--- a/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
+++ b/src/test/java/org/gridsuite/modification/server/ModificationControllerTest.java
@@ -471,6 +471,26 @@ void updateModificationDescription() throws Exception {
assertEquals("new description", modificationRepository.getModifications(TEST_GROUP_ID, true, true).getFirst().getDescription());
}
+ @Test
+ void updateModificationMetadataDoesNotModifyFieldsNotProvided() {
+ // create a composite modification and set all its metadata fields
+ UUID compositeUuid = modificationRepository.createNetworkCompositeModification(List.of());
+ modificationRepository.updateNetworkModificationMetadata(List.of(compositeUuid), CompositeModificationInfos.builder()
+ .name("composite name")
+ .description("composite description")
+ .activated(false)
+ .build());
+
+ // update the metadata again without providing any field
+ modificationRepository.updateNetworkModificationMetadata(List.of(compositeUuid), CompositeModificationInfos.builder().build());
+
+ // every field not provided must keep its previous value
+ CompositeModificationInfos result = (CompositeModificationInfos) modificationRepository.getModificationInfo(compositeUuid);
+ assertEquals("composite name", result.getName());
+ assertEquals("composite description", result.getDescription());
+ assertEquals(false, result.getActivated());
+ }
+
@Test
void testDeleteModification() throws Exception {
MvcResult mvcResult;