From dc93a02234e54490b12d2cce8e3bddb080288341 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Tue, 29 Nov 2022 16:48:43 +0100
Subject: [PATCH] Refactor to reduce complexity

---
 .../openepics/names/service/NamesService.java |  50 ++--
 .../names/service/StructuresService.java      | 273 +++++-------------
 .../names/util/ValidateNameElementUtil.java   |  68 +++--
 .../util/ValidateStructureElementUtil.java    | 199 +++++++------
 .../openepics/names/util/ValidateUtil.java    |  12 +-
 .../names/util/ValidateUtilTest.java          |  30 +-
 6 files changed, 293 insertions(+), 339 deletions(-)

diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 7f2d65b3..c1e1d29b 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -141,7 +141,7 @@ public class NamesService {
         //     do
         //         for each name element
         //             create name, latest, with data
-        //             add name element for created
+        //             add
         //     return
         //         name elements for created names
 
@@ -166,6 +166,12 @@ public class NamesService {
     public NameElement createName(NameElementCommand nameElement, HolderSystemDeviceStructure holder, Date requested, String requestedBy) {
         // transaction
         //     support a current transaction, throw an exception if none exists
+        // do
+        //     find
+        //     prepare
+        //     create
+        // return
+        //     name element for name
 
         // find out
         //     system structure - system group, system, subsystem - one of the three expected to be non-null, other two expected to be null
@@ -189,11 +195,13 @@ public class NamesService {
 
         // create
         Name name = new Name(UUID.randomUUID(),
-                systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
+                systemGroup != null ? systemGroup.getUuid() : null,
+                system != null ? system.getUuid() : null,
+                subsystem != null ? subsystem.getUuid() : null,
+                nameElement.getParentdevicestructure(),
                 nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                 nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                 requested, requestedBy, nameElement.getComment());
-
         nameRepository.createName(name);
 
         // possibly validate that created
@@ -402,8 +410,7 @@ public class NamesService {
         ValidateUtil.validateInputName(name);
 
         // do
-        List<Name> names = nameRepository.readNames(false,
-                null, name, null, null, null, null, null);
+        List<Name> names = nameRepository.readNames(false, null, name, null, null, null, null, null);
         ExceptionUtil.validateConditionDataNotFoundException(ValidateUtil.isSize(names, 1), "name not found", name, null);
 
         Name toBeChecked = names.get(0);
@@ -614,9 +621,12 @@ public class NamesService {
         // transaction
         //     do
         //         for each name element
+        //             find
         //             update name to not latest
+        //             find
         //             insert name to latest, not deleted, with data
-        //             read
+        //             possibly validate that updated
+        //             add
         //     return
         //         name elements for updated names
 
@@ -669,15 +679,15 @@ public class NamesService {
 
             // create
             name = new Name(nameElement.getUuid(),
-                    systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
+                    systemGroup != null ? systemGroup.getUuid() : null,
+                    system != null ? system.getUuid() : null,
+                    subsystem != null ? subsystem.getUuid() : null,
+                    nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                     requested, requestedBy, nameElement.getComment());
-
             nameRepository.createName(name);
 
-            // possibly validate that updated
-
             // add
             updatedNameElements.add(NameElementUtil.getNameElement(name));
         }
@@ -694,11 +704,15 @@ public class NamesService {
         //     outside of @Transactional
         // transaction
         //     do
-        //         update name to not latest
-        //         insert name to latest, deleted
-        //         read
+        //         for each name element
+        //             find
+        //             update name to not latest
+        //             find
+        //             insert name to latest, deleted
+        //             possibly validate that deleted
+        //             add
         //     return
-        //         name element for deleted name
+        //         name element for deleted names
 
         LOGGER.log(Level.FINE, "deleteNames, nameElements.size:        {0}", Utilities.getSize(nameElements));
 
@@ -738,15 +752,15 @@ public class NamesService {
             }
 
             name = new Name(nameElement.getUuid(),
-                    systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
+                    systemGroup != null ? systemGroup.getUuid() : null,
+                    system != null ? system.getUuid() : null,
+                    subsystem != null ? subsystem.getUuid() : null,
+                    nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE,
                     requested, requestedBy, nameElement.getComment());
-
             nameRepository.createName(name);
 
-            // possibly validate that deleted
-
             // add
             deletedNameElements.add(NameElementUtil.getNameElement(name));
         }
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 95b71999..065a9232 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -144,6 +144,7 @@ public class StructuresService {
         //     do
         //         for each structure element
         //             create structure to pending, not latest, not deleted, with data
+        //             possibly validate that created
         //             add structure element for created
         //     return
         //         structure elements for created structures
@@ -177,11 +178,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
@@ -190,11 +188,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSystemRepository().createSystem(system);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
@@ -203,11 +198,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
@@ -216,11 +208,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
@@ -231,11 +220,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
@@ -244,11 +230,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
-                // possibly validate that created
-
                 // add
                 createdStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder));
             }
@@ -420,21 +403,13 @@ public class StructuresService {
         ResponsePageStructureElements response = null;
         if (typeEither) {
             if (typeSystemGroup) {
-                response = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false,
-                        null, uuid, null, null, null, null, null,
-                        orderBy, isAsc, offset, limit);
+                response = readStructures(Type.SYSTEM,      new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
             } else if (typeSystem) {
-                response = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false,
-                        null, uuid, null, null, null, null, null,
-                        orderBy, isAsc, offset, limit);
+                response = readStructures(Type.SUBSYSTEM,   new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
             } else if (typeDiscipline) {
-                response = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false,
-                        null, uuid, null, null, null, null, null,
-                        orderBy, isAsc, offset, limit);
+                response = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
             } else if (typeDeviceGroup) {
-                response = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false,
-                        null, uuid, null, null, null, null, null,
-                        orderBy, isAsc, offset, limit);
+                response = readStructures(Type.DEVICETYPE,  new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
             } else {
                 // no children in structures for subsystem and device type
                 response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);
@@ -443,18 +418,10 @@ public class StructuresService {
             // go through all structures and see if / where uuid is found
             //     uuid in 0 or 1 of structures
 
-            ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEM, new Status[] {Status.APPROVED}, false,
-                    null, uuid, null, null, null, null, null,
-                    orderBy, isAsc, offset, limit);
-            ResponsePageStructureElements responseSystem      = readStructures(Type.SUBSYSTEM, new Status[] {Status.APPROVED}, false,
-                    null, uuid, null, null, null, null, null,
-                    orderBy, isAsc, offset, limit);
-            ResponsePageStructureElements responseDiscipline  = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false,
-                    null, uuid, null, null, null, null, null,
-                    orderBy, isAsc, offset, limit);
-            ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICETYPE, new Status[] {Status.APPROVED}, false,
-                    null, uuid, null, null, null, null, null,
-                    orderBy, isAsc, offset, limit);
+            ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEM,      new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
+            ResponsePageStructureElements responseSystem      = readStructures(Type.SUBSYSTEM,   new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
+            ResponsePageStructureElements responseDiscipline  = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
+            ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICETYPE,  new Status[] {Status.APPROVED}, false, null, uuid, null, null, null, null, null, orderBy, isAsc, offset, limit);
 
             structureElements.addAll(responseSystemGroup.getList());
             structureElements.addAll(responseSystem.getList());
@@ -584,15 +551,15 @@ public class StructuresService {
             if (typeSystemGroup) {
                 response = readStructures(Type.SYSTEMGROUP, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             } else if (typeSystem) {
-                response = readStructures(Type.SYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
+                response = readStructures(Type.SYSTEM,      null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             } else if (typeSubsystem) {
-                response = readStructures(Type.SUBSYSTEM, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
+                response = readStructures(Type.SUBSYSTEM,   null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             } else if (typeDiscipline) {
-                response = readStructures(Type.DISCIPLINE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
+                response = readStructures(Type.DISCIPLINE,  null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             } else if (typeDeviceGroup) {
                 response = readStructures(Type.DEVICEGROUP, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             } else if (typeDeviceType) {
-                response = readStructures(Type.DEVICETYPE, null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
+                response = readStructures(Type.DEVICETYPE,  null, null, uuid, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             }
         } else {
             // go through all structures and see if / where uuid is found
@@ -649,28 +616,22 @@ public class StructuresService {
 
         // do
         if (Type.SYSTEMGROUP.equals(type)) {
-            List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false,
-                    null, null, null, null, mnemonicpath, null);
+            List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, null, null, null, null, mnemonicpath, null);
             return !systemGroups.isEmpty();
         } else if (Type.SYSTEM.equals(type)) {
-            List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false,
-                    null, null, null, null, null, mnemonicpath, null);
+            List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null);
             return !systems.isEmpty();
         } else if (Type.SUBSYSTEM.equals(type)) {
-            List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false,
-                    null, null, null, null, null, mnemonicpath, null);
+            List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null);
             return !subsystems.isEmpty();
         } else if (Type.DISCIPLINE.equals(type)) {
-            List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false,
-                    null, null, null, null, mnemonicpath, null);
+            List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, null, null, null, null, mnemonicpath, null);
             return !disciplines.isEmpty();
         } else if (Type.DEVICEGROUP.equals(type)) {
-            List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false,
-                    null, null, null, null, null, mnemonicpath, null);
+            List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null);
             return !deviceGroups.isEmpty();
         } else if (Type.DEVICETYPE.equals(type)) {
-            List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false,
-                    null, null, null, null, null, mnemonicpath, null);
+            List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, null, null, null, null, null, mnemonicpath, null);
             return !deviceTypes.isEmpty();
         }
 
@@ -884,6 +845,7 @@ public class StructuresService {
         //     do
         //         for each structure element
         //             create structure to pending, not latest, not deleted, with data
+        //             possibly validate that updated
         //             add structure element for updated
         //     return
         //         structure elements for updated structures
@@ -917,11 +879,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
@@ -930,11 +889,8 @@ public class StructuresService {
                         name, structureElement.getMnemonic(), equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSystemRepository().createSystem(system);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
@@ -943,11 +899,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
@@ -956,11 +909,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
@@ -971,11 +921,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
@@ -984,11 +931,8 @@ public class StructuresService {
                         name, mnemonic, equivalenceClassRepresentative,
                         description, Status.PENDING, Boolean.FALSE, Boolean.FALSE,
                         requested, requestedBy, requestedComment);
-
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
-                // possibly validate that created
-
                 // add
                 updatedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder));
             }
@@ -1009,10 +953,10 @@ public class StructuresService {
         //         for each structure element
         //             find
         //             create structure to pending, not latest, deleted, with data
+        //             possibly validate that deleted
         //             add structure element for deleted
         //     return
         //         structure elements for deleted structures
-        // TODO continue ---> validation error
 
         LOGGER.log(Level.FINE, "deleteStructures, structureElements.size:        {0}", Utilities.getSize(structureElements));
 
@@ -1028,8 +972,7 @@ public class StructuresService {
 
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null);
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) {
                     continue;
                 }
@@ -1040,17 +983,13 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getSystemGroupRepository().createSystemGroup(systemGroup);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systems, 1)) {
                     continue;
                 }
@@ -1061,17 +1000,13 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getSystemRepository().createSystem(system);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(subsystems, 1)) {
                     continue;
                 }
@@ -1082,17 +1017,13 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getSubsystemRepository().createSubsystem(subsystem);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null);
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(disciplines, 1)) {
                     continue;
                 }
@@ -1103,17 +1034,13 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getDisciplineRepository().createDiscipline(discipline);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) {
                     continue;
                 }
@@ -1124,17 +1051,13 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getDeviceGroupRepository().createDeviceGroup(deviceGroup);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // find
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
                     continue;
                 }
@@ -1145,11 +1068,8 @@ public class StructuresService {
                         toBeDeleted.getName(), toBeDeleted.getMnemonic(), namingConvention.equivalenceClassRepresentative(toBeDeleted.getMnemonic()),
                         toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
                         requested, requestedBy, structureElement.getComment());
-
                 holderRepositories.getDeviceTypeRepository().createDeviceType(deviceType);
 
-                // possibly validate that created
-
                 // add
                 deletedStructureElements.add(StructureElementUtil.getStructureElementRequested(deviceType, holder));
             }
@@ -1167,10 +1087,16 @@ public class StructuresService {
         //     outside of @Transactional
         // transaction
         //     do
-        //         update structure to status APPROVED
+        //         for each structure element
+        //             find
+        //             update not latest
+        //             find
+        //             approve - update structure to status APPROVED, latest to true
+        //             possibly validate that approved
+        //             automatically create name when system structure is approved
+        //             add
         //     return
-        //         updated structure element
-        // TODO continue ---> validation error
+        //         structure elements for approved structures
 
         LOGGER.log(Level.FINE, "approveStructures, structureElements.size:         {0}", Utilities.getSize(structureElements));
 
@@ -1198,8 +1124,7 @@ public class StructuresService {
 
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null);
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null);
                 SystemGroup systemGroup = null;
                 if (ValidateUtil.isSize(systemGroups, 1)) {
                     systemGroup = systemGroups.get(0);
@@ -1210,8 +1135,7 @@ public class StructuresService {
                 }
 
                 // find
-                systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) {
                     continue;
                 }
@@ -1222,8 +1146,6 @@ public class StructuresService {
                 systemGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
-                // possibly validate that approved
-
                 // automatically create name when system structure is approved (after create)
                 // create name within current transaction
                 if (!StringUtils.isEmpty(systemGroup.getMnemonic())) {
@@ -1236,8 +1158,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 System system = null;
                 if (ValidateUtil.isSize(systems, 1)) {
                     system = systems.get(0);
@@ -1248,8 +1169,7 @@ public class StructuresService {
                 }
 
                 // find
-                systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systems, 1)) {
                     continue;
                 }
@@ -1260,8 +1180,6 @@ public class StructuresService {
                 system.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
-                // possibly validate that approved
-
                 // automatically create name when system structure is approved (after create)
                 // create name within current transaction
                 if (!StringUtils.isEmpty(system.getMnemonic())) {
@@ -1274,8 +1192,7 @@ public class StructuresService {
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 Subsystem subsystem = null;
                 if (ValidateUtil.isSize(subsystems, 1)) {
                     subsystem = subsystems.get(0);
@@ -1286,8 +1203,7 @@ public class StructuresService {
                 }
 
                 // find
-                subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(subsystems, 1)) {
                     continue;
                 }
@@ -1298,8 +1214,6 @@ public class StructuresService {
                 subsystem.setLatest(Boolean.TRUE);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
-                // possibly validate that approved
-
                 // automatically create name when system structure is approved (after create)
                 // create name within current transaction
                 if (!StringUtils.isEmpty(subsystem.getMnemonic())) {
@@ -1311,8 +1225,7 @@ public class StructuresService {
                 // add
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null);
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null);
                 Discipline discipline = null;
                 if (ValidateUtil.isSize(disciplines, 1)) {
                     discipline = disciplines.get(0);
@@ -1323,8 +1236,7 @@ public class StructuresService {
                 }
 
                 // find
-                disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(disciplines, 1)) {
                     continue;
                 }
@@ -1335,14 +1247,11 @@ public class StructuresService {
                 discipline.setLatest(Boolean.TRUE);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
-                // possibly validate that approved
-
                 // add
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 DeviceGroup deviceGroup = null;
                 if (ValidateUtil.isSize(deviceGroups, 1)) {
                     deviceGroup = deviceGroups.get(0);
@@ -1353,8 +1262,7 @@ public class StructuresService {
                 }
 
                 // find
-                deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) {
                     continue;
                 }
@@ -1365,14 +1273,11 @@ public class StructuresService {
                 deviceGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
-                // possibly validate that approved
-
                 // add
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // find
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, Boolean.FALSE, queryValue, null, null, null, null, null, null);
                 DeviceType deviceType = null;
                 if (ValidateUtil.isSize(deviceTypes, 1)) {
                     deviceType = deviceTypes.get(0);
@@ -1383,8 +1288,7 @@ public class StructuresService {
                 }
 
                 // find
-                deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
                     continue;
                 }
@@ -1395,8 +1299,6 @@ public class StructuresService {
                 deviceType.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
-                // possibly validate that approved
-
                 // add
                 approvedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder));
             }
@@ -1412,10 +1314,13 @@ public class StructuresService {
         //     outside of @Transactional
         // transaction
         //     do
-        //         update structure to status CANCELLED
+        //         for each structure element
+        //             find
+        //             cancel - update structure to status CANCELLED
+        //             possibly validate that cancelled
+        //             add
         //     return
-        //         updated structure element
-        // TODO continue ---> validation error
+        //         structure elements for cancelled structures
 
         LOGGER.log(Level.FINE, "cancelStructures, structureElements.size:          {0}", Utilities.getSize(structureElements));
 
@@ -1432,8 +1337,7 @@ public class StructuresService {
 
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) {
                     continue;
                 }
@@ -1443,14 +1347,11 @@ public class StructuresService {
                 systemGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systems, 1)) {
                     continue;
                 }
@@ -1460,14 +1361,11 @@ public class StructuresService {
                 system.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(subsystems, 1)) {
                     continue;
                 }
@@ -1477,14 +1375,11 @@ public class StructuresService {
                 subsystem.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(disciplines, 1)) {
                     continue;
                 }
@@ -1494,14 +1389,11 @@ public class StructuresService {
                 discipline.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) {
                     continue;
                 }
@@ -1511,13 +1403,10 @@ public class StructuresService {
                 deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
                     continue;
                 }
@@ -1527,8 +1416,6 @@ public class StructuresService {
                 deviceType.setAttributesStatusProcessed(Status.CANCELLED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
-                // possibly validate that cancelled
-
                 // add
                 cancelledStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder));
             }
@@ -1544,10 +1431,13 @@ public class StructuresService {
         //     outside of @Transactional
         // transaction
         //     do
-        //         update structure to status REJECTED
+        //         for each structure element
+        //             find
+        //             reject - update structure to status REJECTED
+        //             possibly validate that rejected
+        //             add
         //     return
-        //         updated structure element
-        // TODO continue ---> validation error
+        //         structure elements for rejected structures
 
         LOGGER.log(Level.FINE, "rejectStructures, structureElements.size:         {0}", Utilities.getSize(structureElements));
 
@@ -1564,8 +1454,7 @@ public class StructuresService {
 
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
-                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) {
                     continue;
                 }
@@ -1575,14 +1464,11 @@ public class StructuresService {
                 systemGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(systemGroup, holder));
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // find
-                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(systems, 1)) {
                     continue;
                 }
@@ -1592,14 +1478,11 @@ public class StructuresService {
                 system.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(system, holder));
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // find
-                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(subsystems, 1)) {
                     continue;
                 }
@@ -1609,14 +1492,11 @@ public class StructuresService {
                 subsystem.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(subsystem, holder));
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // find
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null,
-                        queryValue, null, null, null, null, null);
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, queryValue, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(disciplines, 1)) {
                     continue;
                 }
@@ -1626,14 +1506,11 @@ public class StructuresService {
                 discipline.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(discipline, holder));
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // find
-                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) {
                     continue;
                 }
@@ -1643,13 +1520,11 @@ public class StructuresService {
                 deviceGroup.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceGroup, holder));
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null,
-                        queryValue, null, null, null, null, null, null);
+                // find
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, queryValue, null, null, null, null, null, null);
                 if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
                     continue;
                 }
@@ -1659,8 +1534,6 @@ public class StructuresService {
                 deviceType.setAttributesStatusProcessed(Status.REJECTED, processed, processedBy, processedComment);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
-                // possibly validate that rejected
-
                 // add
                 rejectedStructureElements.add(StructureElementUtil.getStructureElementProcessed(deviceType, holder));
             }
diff --git a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
index 552651a8..97d1cfea 100644
--- a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
@@ -54,7 +54,7 @@ public class ValidateNameElementUtil {
     //	       update - uuid, parentsystemstructure, parentdevicestructure (optional), index, description, comment
     //	       delete - uuid,                                                                              comment
 
-    private enum NameChoice      {CREATE, UPDATE, DELETE}
+    private enum NameChoice {CREATE, UPDATE, DELETE}
 
     /**
      * This class is not to be instantiated.
@@ -140,15 +140,14 @@ public class ValidateNameElementUtil {
         UUID uuid = nameElement.getUuid();
         UUID parentSystemstructure = nameElement.getParentsystemstructure();
         UUID parentDevicestructure = nameElement.getParentdevicestructure();
+
         String index = nameElement.getIndex();
         String description = nameElement.getDescription();
         String comment = nameElement.getComment();
 
         if (NameChoice.CREATE.equals(nameChoice)) {
             ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
-                    TextUtil.VALUE_IS_NOT_EMPTY,
-                    uuid != null ? uuid.toString() : null,
-                    TextUtil.UUID);
+                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
         } else {
             ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
         }
@@ -246,9 +245,10 @@ public class ValidateNameElementUtil {
         // name
         //     update, delete - uuid available, not deleted
         //     retrieve for uuid and check
-        if (NameChoice.UPDATE.equals(nameChoice) || NameChoice.DELETE.equals(nameChoice)) {
+        if (ValidateUtil.isAnyEqual(nameChoice, NameChoice.UPDATE, NameChoice.DELETE)) {
             List<Name> names = nameRepository.readNames(false, nameElement.getUuid().toString(), null, null, null, null, null, null);
-            ExceptionUtil.validateConditionDataNotCorrectException(ValidateUtil.isSize(names, 1), TextUtil.VALUE_IS_NOT_CORRECT, details, TextUtil.UUID);
+            ExceptionUtil.validateConditionDataNotCorrectException(ValidateUtil.isSize(names, 1),
+                    TextUtil.VALUE_IS_NOT_CORRECT, details, TextUtil.UUID);
         }
 
         SystemGroup systemGroup = null;
@@ -266,7 +266,7 @@ public class ValidateNameElementUtil {
         UUID parentDevicestructure = nameElement.getParentdevicestructure();
         String index = nameElement.getIndex();
 
-        if (NameChoice.CREATE.equals(nameChoice) || NameChoice.UPDATE.equals(nameChoice)) {
+        if (ValidateUtil.isAnyEqual(nameChoice, NameChoice.CREATE, NameChoice.UPDATE)) {
             // systemgroup, system, subsystem - in repository
             //     found
             //     not deleted
@@ -291,19 +291,24 @@ public class ValidateNameElementUtil {
             if (parentDevicestructure != null) {
                 countDevicestructureIndex++;
                 deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(parentDevicestructure.toString());
-                ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null, TextUtil.DATA_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE);
-                ExceptionUtil.validateConditionDataDeletedException(!deviceType.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTDEVICESTRUCTURE);
+                ExceptionUtil.validateConditionDataNotAvailableException(deviceType != null,
+                        TextUtil.DATA_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE);
+                ExceptionUtil.validateConditionDataDeletedException(!deviceType.isDeleted(),
+                        TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTDEVICESTRUCTURE);
             }
 
             // system structure
             if (systemGroup != null) {
-                ExceptionUtil.validateConditionDataDeletedException(!systemGroup.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
+                ExceptionUtil.validateConditionDataDeletedException(!systemGroup.isDeleted(),
+                        TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
                 derivedName = NameUtil.getName(systemGroup, deviceType, index, holder);
             } else if (system != null) {
-                ExceptionUtil.validateConditionDataDeletedException(!system.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
+                ExceptionUtil.validateConditionDataDeletedException(!system.isDeleted(),
+                        TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
                 derivedName = NameUtil.getName(system, deviceType, index, holder);
             } else if (subsystem != null) {
-                ExceptionUtil.validateConditionDataDeletedException(!subsystem.isDeleted(), TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
+                ExceptionUtil.validateConditionDataDeletedException(!subsystem.isDeleted(),
+                        TextUtil.DATA_IS_DELETED, details, TextUtil.PARENTSYSTEMSTRUCTURE);
                 derivedName = NameUtil.getName(subsystem, deviceType, index, holder);
             } else {
                 throw ExceptionUtil.createDataNotCorrectException(TextUtil.DATA_IS_NOT_CORRECT, details, TextUtil.PARENTSYSTEMSTRUCTURE);
@@ -314,11 +319,13 @@ public class ValidateNameElementUtil {
                 countDevicestructureIndex++;
                 // TODO overrideRuleset depend on user authority
                 condition = namingConvention.isInstanceIndexValid(derivedName, false);
-                ExceptionUtil.validateConditionDataNotValidException(condition, TextUtil.DATA_IS_NOT_VALID, details, TextUtil.INDEX);
+                ExceptionUtil.validateConditionDataNotValidException(condition,
+                        TextUtil.DATA_IS_NOT_VALID, details, TextUtil.INDEX);
             }
 
             condition = countDevicestructureIndex == 0 || countDevicestructureIndex == 2;
-            ExceptionUtil.validateConditionDataNotAvailableException(condition, TextUtil.DEVICETYPE_OR_INDEX_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE);
+            ExceptionUtil.validateConditionDataNotAvailableException(condition,
+                    TextUtil.DEVICETYPE_OR_INDEX_IS_NOT_AVAILABLE, details, TextUtil.PARENTDEVICESTRUCTURE);
 
             // name
             //     ok with same name, name equivalence if same uuid
@@ -329,7 +336,8 @@ public class ValidateNameElementUtil {
                 // NameChoice.UPDATE.equals(nameChoice)
                 condition = ValidateUtil.isNullOrEmpty(names) || names.size() == 1 && names.get(0).getUuid().equals(uuid);
             }
-            ExceptionUtil.validateConditionDataExistException(condition, TextUtil.CONVENTION_NAME_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE);
+            ExceptionUtil.validateConditionDataExistException(condition,
+                    TextUtil.CONVENTION_NAME_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE);
 
             names = nameRepository.readNames(false, null, null, namingConvention.equivalenceClassRepresentative(derivedName), null, null, null, null);
             if (NameChoice.CREATE.equals(nameChoice)) {
@@ -338,7 +346,8 @@ public class ValidateNameElementUtil {
                 // NameChoice.UPDATE.equals(nameChoice)
                 condition = ValidateUtil.isNullOrEmpty(names) || names.size() == 1 && names.get(0).getUuid().equals(uuid);
             }
-            ExceptionUtil.validateConditionDataExistException(condition, TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE);
+            ExceptionUtil.validateConditionDataExistException(condition,
+                    TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, TextUtil.PARENTSYSTEMSTRUCTURE);
         } else if (NameChoice.DELETE.equals(nameChoice)) {
             // n.a.
             //     uuid    - already handled
@@ -421,19 +430,16 @@ public class ValidateNameElementUtil {
 
         // device structure
         if (!StringUtils.isEmpty(dt)) {
-            List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false,
-                    null, null, null, null, null, mnemonicPathDevicestructure, null);
-            ExceptionUtil.validateConditionDataNotAvailableException(ValidateUtil.isSize(deviceTypes, 1), TextUtil.DEVICETYPE_IS_NOT_AVAILABLE, details, field);
+            List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, null, null, null, null, null, mnemonicPathDevicestructure, null);
+            ExceptionUtil.validateConditionDataNotAvailableException(ValidateUtil.isSize(deviceTypes, 1),
+                    TextUtil.DEVICETYPE_IS_NOT_AVAILABLE, details, field);
             deviceType = deviceTypes.get(0);
         }
 
         // system structure
-        List<Subsystem>   subsystems   = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false,
-                null, null, null, null, null, mnemonicPathSystemstructure, null);
-        List<System>      systems      = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false,
-                null, null, null, null, null, mnemonicPathSystemstructure, null);
-        List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false,
-                null, null, null, null, mnemonicPathSystemstructure, null);
+        List<Subsystem>   subsystems   = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, null, null, null, null, null, mnemonicPathSystemstructure, null);
+        List<System>      systems      = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, null, null, null, null, null, mnemonicPathSystemstructure, null);
+        List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, null, null, null, null, mnemonicPathSystemstructure, null);
 
         if (ValidateUtil.isSize(subsystems, 1)) {
             subsystem = subsystems.get(0);
@@ -451,20 +457,24 @@ public class ValidateNameElementUtil {
         // index
         if (!StringUtils.isEmpty(idx)) {
             // TODO overrideRuleset depend on user authority
-            ExceptionUtil.validateConditionDataNotValidException(namingConvention.isInstanceIndexValid(name, false), TextUtil.INDEX_IS_NOT_VALID, details, field);
+            ExceptionUtil.validateConditionDataNotValidException(namingConvention.isInstanceIndexValid(name, false),
+                    TextUtil.INDEX_IS_NOT_VALID, details, field);
         }
 
         // name
         //     name corresponds to derived name
         //     convention name not exists
         //     convention name equivalence not exists
-        ExceptionUtil.validateConditionDataNotCorrectException(StringUtils.equals(name, derivedName), TextUtil.CONVENTION_NAME_IS_NOT_CORRECT, details, field);
+        ExceptionUtil.validateConditionDataNotCorrectException(StringUtils.equals(name, derivedName),
+                TextUtil.CONVENTION_NAME_IS_NOT_CORRECT, details, field);
 
         List<Name> names = holderRepositories.getNameRepository().readNames(false, null, name, null, null, null, null, null);
-        ExceptionUtil.validateConditionDataExistException(names.isEmpty(), TextUtil.CONVENTION_NAME_EXISTS, details, field);
+        ExceptionUtil.validateConditionDataExistException(names.isEmpty(),
+                TextUtil.CONVENTION_NAME_EXISTS, details, field);
 
         names = holderRepositories.getNameRepository().readNames(false, null, null, namingConvention.equivalenceClassRepresentative(name), null, null, null, null);
-        ExceptionUtil.validateConditionDataExistException(names.isEmpty(), TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, field);
+        ExceptionUtil.validateConditionDataExistException(names.isEmpty(),
+                TextUtil.CONVENTION_NAME_EQUIVALENCE_EXISTS, details, field);
     }
 
 }
diff --git a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
index 0c7b5bb0..b6c75ac0 100644
--- a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
@@ -173,6 +173,7 @@ public class ValidateStructureElementUtil {
         Type type = structureElement.getType();
         UUID uuid = structureElement.getUuid();
         UUID parentUuid = structureElement.getParent();
+
         String name = structureElement.getName();
         String mnemonic = structureElement.getMnemonic();
         String description = structureElement.getDescription();
@@ -180,9 +181,7 @@ public class ValidateStructureElementUtil {
 
         if (StructureChoice.CREATE.equals(structureChoice)) {
             ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
-                    TextUtil.VALUE_IS_NOT_EMPTY,
-                    uuid != null ? uuid.toString() : null,
-                    TextUtil.UUID);
+                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
         } else {
             ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
         }
@@ -317,6 +316,10 @@ public class ValidateStructureElementUtil {
         String details = structureElement.toString();
         String field   = TextUtil.UUID;
 
+        Type type = structureElement.getType();
+        UUID uuid = structureElement.getUuid();
+        UUID parentUuid = structureElement.getParent();
+
         // validate data in itself
         //     systemgroup, discipline
         //         not have parent
@@ -326,23 +329,16 @@ public class ValidateStructureElementUtil {
         //     approve, cancel, reject
         //         entry pending
 
-        Type type = structureElement.getType();
-        UUID uuid = structureElement.getUuid();
-        UUID parentUuid = structureElement.getParent();
-
         if (ValidateUtil.isAnyEqual(type, Type.SYSTEMGROUP, Type.DISCIPLINE) && parentUuid != null) {
             throw ExceptionUtil.createDataNotCorrectException(TextUtil.PARENT_IS_NOT_CORRECT, details, field);
-        } else if (StructureChoice.UPDATE.equals(structureChoice) || StructureChoice.DELETE.equals(structureChoice)) {
-            validateStructuresStatusSize0(
-                    uuid, type, Status.PENDING, null,
+        } else if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.UPDATE, StructureChoice.DELETE)) {
+            validateStructuresStatusSize0(uuid, type, Status.PENDING, null,
                     holderRepositories, message, details, field);
 
-            validateStructuresStatusSize1(
-                    uuid, type, Status.APPROVED, Boolean.FALSE,
+            validateStructuresStatusSize1(uuid, type, Status.APPROVED, Boolean.FALSE,
                     holderRepositories, message, details, field);
-        } else if (StructureChoice.APPROVE.equals(structureChoice) || StructureChoice.CANCEL.equals(structureChoice) || StructureChoice.REJECT.equals(structureChoice)) {
-            validateStructuresStatusSize1(
-                    uuid, type, Status.PENDING, null,
+        } else if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.APPROVE, StructureChoice.CANCEL, StructureChoice.REJECT)) {
+            validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                     holderRepositories, message, details, field);
         }
     }
@@ -350,33 +346,29 @@ public class ValidateStructureElementUtil {
     private static void validateStructuresStatusSize0(UUID uuid, Type type, Status status, Boolean deleted,
             HolderRepositories holderRepositories, String message, String details, String field) {
         ExceptionUtil.validateConditionDataNotCorrectException(
-                getStructuresSize(uuid, type, status, deleted, holderRepositories) == 0, message, details, field);
+                getStructuresSize(uuid, type, status, deleted, holderRepositories) == 0,
+                message, details, field);
     }
     private static void validateStructuresStatusSize1(UUID uuid, Type type, Status status, Boolean deleted,
             HolderRepositories holderRepositories, String message, String details, String field) {
         ExceptionUtil.validateConditionDataNotCorrectException(
-                getStructuresSize(uuid, type, status, deleted, holderRepositories) == 1, message, details, field);
+                getStructuresSize(uuid, type, status, deleted, holderRepositories) == 1,
+                message, details, field);
     }
     private static int getStructuresSize(UUID uuid, Type type, Status status, Boolean deleted,
             HolderRepositories holderRepositories) {
         if (Type.SYSTEMGROUP.equals(type)) {
-            return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted,
-                    uuid.toString(), null, null, null, null, null).size();
+            return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, uuid.toString(), null, null, null, null, null).size();
         } else if (Type.SYSTEM.equals(type)) {
-            return holderRepositories.getSystemRepository().readSystems(status, deleted,
-                    uuid.toString(), null, null, null, null, null, null).size();
+            return holderRepositories.getSystemRepository().readSystems(status, deleted, uuid.toString(), null, null, null, null, null, null).size();
         } else if (Type.SUBSYSTEM.equals(type)) {
-            return holderRepositories.getSubsystemRepository().readSubsystems(status, deleted,
-                    uuid.toString(), null, null, null, null, null, null).size();
+            return holderRepositories.getSubsystemRepository().readSubsystems(status, deleted, uuid.toString(), null, null, null, null, null, null).size();
         } else if (Type.DISCIPLINE.equals(type)) {
-            return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted,
-                    uuid.toString(), null, null, null, null, null).size();
+            return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, uuid.toString(), null, null, null, null, null).size();
         } else if (Type.DEVICEGROUP.equals(type)) {
-            return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted,
-                    uuid.toString(), null, null, null, null, null, null).size();
+            return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, uuid.toString(), null, null, null, null, null, null).size();
         } else if (Type.DEVICETYPE.equals(type)) {
-            return holderRepositories.getDeviceTypeRepository().readDeviceTypes(status, deleted,
-                    uuid.toString(), null, null, null, null, null, null).size();
+            return holderRepositories.getDeviceTypeRepository().readDeviceTypes(status, deleted, uuid.toString(), null, null, null, null, null, null).size();
         }
         return 0;
     }
@@ -414,6 +406,11 @@ public class ValidateStructureElementUtil {
         String details = structureElement.toString();
         String field   = TextUtil.MNEMONIC;
 
+        Type type = structureElement.getType();
+        UUID uuid = structureElement.getUuid();
+        UUID parentUuid = structureElement.getParent();
+        String mnemonic = structureElement.getMnemonic();
+
         // validate data relative other data
         //     create, update
         //         entry (uuid,) status, mnemonic
@@ -421,12 +418,7 @@ public class ValidateStructureElementUtil {
         //     approve
         //         entry uuid, status
 
-        Type type = structureElement.getType();
-        UUID uuid = structureElement.getUuid();
-        UUID parentUuid = structureElement.getParent();
-        String mnemonic = structureElement.getMnemonic();
-
-        if (StructureChoice.CREATE.equals(structureChoice) || StructureChoice.UPDATE.equals(structureChoice)) {
+        if (ValidateUtil.isAnyEqual(structureChoice, StructureChoice.CREATE, StructureChoice.UPDATE)) {
             if (Type.SYSTEMGROUP.equals(type)) {
                 // note rules for mnemonic for system group
                 if (!StringUtils.isEmpty(mnemonic)) {
@@ -480,9 +472,9 @@ public class ValidateStructureElementUtil {
             } else if (Type.DEVICEGROUP.equals(type)) {
                 // status, parent
                 message = TextUtil.DISCIPLINE_IS_NOT_CORRECT;
-                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false,
-                        parentUuid.toString(), null, null, null, null, null);
-                ExceptionUtil.validateConditionDataConflictException(ValidateUtil.isSize(disciplines, 1), message, details, TextUtil.PARENT);
+                List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, parentUuid.toString(), null, null, null, null, null);
+                ExceptionUtil.validateConditionDataConflictException(ValidateUtil.isSize(disciplines, 1),
+                        message, details, TextUtil.PARENT);
 
                 // note rules for mnemonic for device group
 
@@ -608,17 +600,13 @@ public class ValidateStructureElementUtil {
             HolderRepositories holderRepositories) {
         String queryValue = parent.toString();
         if (Type.SYSTEM.equals(type)) {
-            return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted,
-                    queryValue, null, null, null, null, null).size();
+            return holderRepositories.getSystemGroupRepository().readSystemGroups(status, deleted, queryValue, null, null, null, null, null).size();
         } else if (Type.SUBSYSTEM.equals(type)) {
-            return holderRepositories.getSystemRepository().readSystems(status, deleted,
-                    queryValue, null, null, null, null, null, null).size();
+            return holderRepositories.getSystemRepository().readSystems(status, deleted, queryValue, null, null, null, null, null, null).size();
         } else if (Type.DEVICEGROUP.equals(type)) {
-            return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted,
-                    queryValue, null, null, null, null, null).size();
+            return holderRepositories.getDisciplineRepository().readDisciplines(status, deleted, queryValue, null, null, null, null, null).size();
         } else if (Type.DEVICETYPE.equals(type)) {
-            return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted,
-                    queryValue, null, null, null, null, null, null).size();
+            return holderRepositories.getDeviceGroupRepository().readDeviceGroups(status, deleted, queryValue, null, null, null, null, null, null).size();
         }
         return 0;
     }
@@ -719,26 +707,30 @@ public class ValidateStructureElementUtil {
         String field = TextUtil.MNEMONIC_PATH;
 
         String[] path = NamingConventionUtil.string2MnemonicPath(mnemonicpath);
+        String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath);
+
+        // validate path, including null check
         ExceptionUtil.validateConditionDataNotValidException(path != null && path.length >= 1 && path.length <= 2,
                 TextUtil.STRUCTURE_MNEMONIC_PATH_IS_NOT_VALID, details, field);
-        String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath);
 
         if (Type.SYSTEMGROUP.equals(type)) {
-            validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field);
+            validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field);
 
             // system group may have empty path but there will be mnemonicpath in this context
 
             // mnemonic path
             SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(path[0]);
-            validateStructuresMnemonicpathDuplicate(type, sg == null, details, field);
+            validateStructuresMnemonicpathDuplicate(sg == null, type, details, field);
 
             // mnemonic path equivalence
             List<SystemGroup> systemGroups = holderIRepositories.getSystemGroupRepository().findLatestNotDeleted();
             for (SystemGroup systemGroup : systemGroups) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), details, field);
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])),
+                        type, details, field);
             }
         } else if (Type.SYSTEM.equals(type)) {
-            validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field);
+            validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field);
 
             // path with 1 element  - system group or  system ---> check both individually
             // check mnemonic, mnemonic equivalence
@@ -746,64 +738,84 @@ public class ValidateStructureElementUtil {
             // mnemonic path system group
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(mnemonicpath, existingPath),
+                        type, details, field);
             }
 
             // mnemonic path equivalence system group
             mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field);
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)),
+                        type, details, field);
             }
 
             // mnemonic path
             mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(mnemonicpath, existingPath),
+                        type, details, field);
             }
 
             // mnemonic path equivalence
             mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field);
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)),
+                        type, details, field);
             }
         } else if (Type.SUBSYSTEM.equals(type)) {
-            validateStructuresMnemonicpathNotValid(type, path.length == 2, details, field);
+            validateStructuresMnemonicpathNotValid(path.length == 2, type, details, field);
 
             System sys = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(path[0]);
-            validateStructuresMnemonicpathNotAvailable(type, sys != null, details, field);
+            validateStructuresMnemonicpathNotAvailable(sys != null, type, details, field);
             SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(sys.getParentUuid().toString());
 
             // mnemonic path
-            validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(path[0], path[1]), details, field);
+            validateStructuresMnemonicpathDuplicate(!StringUtils.equals(path[0], path[1]), type, details, field);
             if (!StringUtils.isEmpty(sg.getMnemonic())) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(sg.getMnemonic(), path[1]), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(sg.getMnemonic(), path[1]),
+                        type, details, field);
             }
 
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(mnemonicpath, existingPath),
+                        type, details, field);
             }
 
             // mnemonic path equivalence
-            validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), details, field);
+            validateStructuresMnemonicpathDuplicate(
+                    !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])),
+                    type, details, field);
             if (!StringUtils.isEmpty(sg.getMnemonic())) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])),
+                        type, details, field);
             }
 
             mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field);            }
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)),
+                        type, details, field);            }
         } else if (Type.DISCIPLINE.equals(type)) {
-            validateStructuresMnemonicpathNotValid(type, path.length == 1, details, field);
+            validateStructuresMnemonicpathNotValid(path.length == 1, type, details, field);
 
             // mnemonic path
             Discipline di = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]);
-            validateStructuresMnemonicpathDuplicate(type, di == null, details, field);
+            validateStructuresMnemonicpathDuplicate(di == null, type, details, field);
 
             // mnemonic path equivalence
             List<Discipline> disciplines = holderIRepositories.getDisciplineRepository().findLatestNotDeleted();
             for (Discipline discipline : disciplines) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), details, field);
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])),
+                        type, details, field);
             }
         } else if (Type.DEVICEGROUP.equals(type)) {
             throw ExceptionUtil.createDataNotValidException(TextUtil.DEVICEGROUP_IS_NOT_VALID, details, field);
@@ -815,7 +827,7 @@ public class ValidateStructureElementUtil {
             // instead similar approach as for other Type, i.e. compare with list of mnemonic paths
             //     rest of checks in validatecreate
 
-            validateStructuresMnemonicpathNotValid(type, path.length == 2, details, field);
+            validateStructuresMnemonicpathNotValid(path.length == 2, type, details, field);
 
             // discipline
             Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]);
@@ -823,44 +835,59 @@ public class ValidateStructureElementUtil {
                     TextUtil.DISCIPLINE_IS_NOT_VALID, details, field);
 
             // mnemonic path
-            validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(path[0], path[1]), details, field);
+            validateStructuresMnemonicpathDuplicate(!StringUtils.equals(path[0], path[1]), type, details, field);
 
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(mnemonicpath, existingPath), details, field);
+                validateStructuresMnemonicpathDuplicate(
+                        !StringUtils.equals(mnemonicpath, existingPath),
+                        type, details, field);
             }
 
             // mnemonic path equivalence
-            validateStructuresMnemonicpathDuplicate(type, !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), details, field);
+            validateStructuresMnemonicpathDuplicate(
+                    !StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])),
+                    type, details, field);
 
             mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateStructuresMnemonicpathequivalenceDuplicate(type, !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), details, field);
+                validateStructuresMnemonicpathequivalenceDuplicate(
+                        !StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)),
+                        type, details, field);
             }
         }
     }
 
-    private static void validateStructuresMnemonicpathNotAvailable(Type type, boolean condition, String details, String field) {
+    private static void validateStructuresMnemonicpathNotAvailable(boolean condition, Type type, String details, String field) {
         ExceptionUtil.validateConditionDataNotValidException(condition,
-                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_AVAILABLE, details, field);
+                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_AVAILABLE,
+                details,
+                field);
     }
-    private static void validateStructuresMnemonicpathNotValid(Type type, boolean condition, String details, String field) {
+    private static void validateStructuresMnemonicpathNotValid(boolean condition, Type type, String details, String field) {
         ExceptionUtil.validateConditionDataNotValidException(condition,
-                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_VALID, details, field);
+                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_IS_NOT_VALID,
+                details,
+                field);
     }
-    private static void validateStructuresMnemonicpathDuplicate(Type type, boolean condition, String details, String field) {
+    private static void validateStructuresMnemonicpathDuplicate(boolean condition, Type type, String details, String field) {
         ExceptionUtil.validateConditionDataConflictException(condition,
-                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_HAS_DUPLICATE, details, field);
+                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_HAS_DUPLICATE,
+                details,
+                field);
     }
-    private static void validateStructuresMnemonicpathequivalenceDuplicate(Type type, boolean condition, String details, String field) {
+    private static void validateStructuresMnemonicpathequivalenceDuplicate(boolean condition, Type type, String details, String field) {
         ExceptionUtil.validateConditionDataConflictException(condition,
-                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_EQUIVALENCE_HAS_DUPLICATE, details, field);
+                type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.MNEMONIC_PATH_EQUIVALENCE_HAS_DUPLICATE,
+                details,
+                field);
     }
 
     // ----------------------------------------------------------------------------------------------------
 
     /**
-     * Validate condition if precondition is fulfilled and throw data conflict exception with reason if validation fails.
+     * Validate condition if precondition is fulfilled and throw
+     * data conflict exception with reason if validation fails.
      *
      * @param precondition precondition
      * @param condition condition
@@ -870,14 +897,16 @@ public class ValidateStructureElementUtil {
      *
      * @see DataConflictException
      */
-    private static void validateConditionIfPrecondition(boolean precondition, boolean condition, String message, String details, String field) {
+    private static void validateConditionIfPrecondition(boolean precondition,
+            boolean condition, String message, String details, String field) {
         if (precondition) {
             ExceptionUtil.validateConditionDataConflictException(condition, message, details, field);
         }
     }
 
     /**
-     * Validate condition if precondition (StructureChoice) is fulfilled and throw data conflict exception with reason if validation fails.
+     * Validate condition if precondition (StructureChoice) is fulfilled and
+     * throw data conflict exception with reason if validation fails.
      *
      * @param expected expected structure choice
      * @param actual actual structure choice
@@ -888,8 +917,10 @@ public class ValidateStructureElementUtil {
      *
      * @see DataConflictException
      */
-    private static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, String message, String details, String field) {
-        validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, message, details, field);
+    private static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual,
+            boolean condition, String message, String details, String field) {
+        validateConditionIfPrecondition(expected != null && expected.equals(actual),
+                condition, message, details, field);
     }
 
 }
diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java
index afc93697..1919ecdc 100644
--- a/src/main/java/org/openepics/names/util/ValidateUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateUtil.java
@@ -276,18 +276,18 @@ public class ValidateUtil {
     }
 
     /**
-     * Validate given objects such that <tt>true</tt> is returned if any object in values is equal to type.
+     * Validate given enums such that <tt>true</tt> is returned if any enum in values is equal to given input enum.
      *
-     * @param type type
+     * @param input input
      * @param values values
      * @return boolean if validation is ok
      */
-    public static boolean isAnyEqual(Type type, Type... values) {
-        if (type == null || values == null) {
+    public static boolean isAnyEqual(Enum<?> input, Enum<?>... values) {
+        if (input == null || values == null) {
             return false;
         }
-        for (Type value : values) {
-            if (type.equals(value)) {
+        for (Enum<?> value : values) {
+            if (input.equals(value)) {
                 return true;
             }
         }
diff --git a/src/test/java/org/openepics/names/util/ValidateUtilTest.java b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
index 1f9c5559..bfa9d44f 100644
--- a/src/test/java/org/openepics/names/util/ValidateUtilTest.java
+++ b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
@@ -33,6 +33,7 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.CsvSource;
 import org.openepics.names.exception.InputNotAvailableException;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.util.EnumUtil.NameChoice;
 
 /**
  * Unit tests for ValidateUtil class.
@@ -554,12 +555,15 @@ class ValidateUtilTest {
     }
 
     /**
-     * Test to validate an array if any object is equal to given type.
+     * Test to validate an array if any object is equal to given enum.
      */
     @Test
-    void isAnyEqual() {
+    void isAnyEqualType() {
         Type type = Type.SUBSYSTEM;
 
+        assertFalse(ValidateUtil.isAnyEqual(null, Type.SYSTEMGROUP));
+        assertFalse(ValidateUtil.isAnyEqual(null, Type.SYSTEMGROUP, Type.SYSTEM, Type.SUBSYSTEM, Type.DISCIPLINE, Type.DEVICEGROUP, Type.DEVICETYPE));
+
         assertFalse(ValidateUtil.isAnyEqual(type, Type.SYSTEMGROUP));
         assertFalse(ValidateUtil.isAnyEqual(type, Type.SYSTEM));
         assertTrue (ValidateUtil.isAnyEqual(type, Type.SUBSYSTEM));
@@ -580,6 +584,28 @@ class ValidateUtilTest {
         assertTrue (ValidateUtil.isAnyEqual(type, Type.DEVICETYPE, Type.DEVICEGROUP, Type.DISCIPLINE, Type.SUBSYSTEM, Type.SYSTEM, Type.SYSTEMGROUP));
     }
 
+    /**
+     * Test to validate an array if any object is equal to given enum.
+     */
+    @Test
+    void isAnyEqualNameChoice() {
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.UPDATE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.DELETE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.UPDATE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.DELETE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.UPDATE, NameChoice.DELETE));
+        assertFalse(ValidateUtil.isAnyEqual(null, NameChoice.CREATE, NameChoice.UPDATE, NameChoice.DELETE));
+
+        assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE));
+        assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.UPDATE));
+        assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.DELETE));
+        assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.UPDATE));
+        assertFalse(ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.DELETE));
+        assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.UPDATE, NameChoice.DELETE));
+        assertTrue (ValidateUtil.isAnyEqual(NameChoice.UPDATE, NameChoice.CREATE, NameChoice.UPDATE, NameChoice.DELETE));
+    }
+
     /**
      * Test to validate an array if any value in array is true.
      *
-- 
GitLab