diff --git a/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptiontemplatedefinition/SectionPersist.java b/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptiontemplatedefinition/SectionPersist.java
index 0fa58deb2..e56da9699 100644
--- a/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptiontemplatedefinition/SectionPersist.java
+++ b/dmp-backend/core/src/main/java/eu/eudat/model/persist/descriptiontemplatedefinition/SectionPersist.java
@@ -160,7 +160,10 @@ public class SectionPersist {
.iff(() -> !this.isListNullOrEmpty(item.getFieldSets()))
.on(SectionPersist._fieldSets)
.over(item.getFieldSets())
- .using((itm) -> this.validatorFactory.validator(FieldSetPersist.FieldSetPersistValidator.class))
+ .using((itm) -> this.validatorFactory.validator(FieldSetPersist.FieldSetPersistValidator.class)),
+ this.spec()
+ .must(() -> !this.isListNullOrEmpty(item.getFieldSets()) || !this.isListNullOrEmpty(item.getSections()))
+ .failOn(SectionPersist._fieldSets).failWith(messageSource.getMessage("Validation_Required", new Object[]{SectionPersist._fieldSets}, LocaleContextHolder.getLocale()))
);
}
}
diff --git a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts
index d84c7ab45..b8a87d7c4 100644
--- a/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts
+++ b/dmp-frontend/src/app/ui/admin/description-template/editor/description-template-editor.model.ts
@@ -12,6 +12,7 @@ import { BackendErrorValidator } from "@common/forms/validation/custom-validator
import { ValidationErrorModel } from "@common/forms/validation/error-model/validation-error-model";
import { Validation, ValidationContext } from "@common/forms/validation/validation-context";
import { Guid } from "@common/types/guid";
+import { EditorCustomValidators } from "./custom-validators/editor-custom-validators";
export class DescriptionTemplateEditorModel extends BaseEditorModel implements DescriptionTemplatePersist {
label: string;
@@ -399,7 +400,7 @@ export class DescriptionTemplateSectionEditorModel implements DescriptionTemplat
});
}
- return this.formBuilder.group({
+ const formGroup= this.formBuilder.group({
id: [{ value: this.id, disabled: disabled }, context.getValidation('id').validators],
ordinal: [{ value: this.ordinal, disabled: disabled }, context.getValidation('ordinal').validators],
defaultVisibility: [{ value: this.defaultVisibility, disabled: disabled }, context.getValidation('defaultVisibility').validators],
@@ -421,6 +422,10 @@ export class DescriptionTemplateSectionEditorModel implements DescriptionTemplat
), context.getValidation('fieldSets').validators
)
});
+
+ formGroup.setValidators(EditorCustomValidators.sectionHasAtLeastOneChildOf('fieldSets','sections'));
+
+ return formGroup;
}
static createValidationContext(params: {
diff --git a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html
index 16c5b3fc5..bd8dae266 100644
--- a/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html
+++ b/dmp-frontend/src/app/ui/admin/dmp-blueprint/editor/dmp-blueprint-editor.component.html
@@ -39,8 +39,9 @@