diff --git a/src/main/java/org/openepics/names/rest/api/v1/INames.java b/src/main/java/org/openepics/names/rest/api/v1/INames.java
index 0fdcf3be735b9ff4c74762fd1e0dcdc79e4ca6f2..b507b9ff9f7a4b2dbb0c5fdc8fd48c8da3b96fe2 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/INames.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/INames.java
@@ -21,11 +21,12 @@ package org.openepics.names.rest.api.v1;
 import java.util.List;
 
 import org.openepics.names.rest.beans.FieldName;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageNameElements;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PutMapping;
@@ -82,7 +83,7 @@ public interface INames {
              ( administrator )
 
        Methods
-           create    POST   /names                                - createNames(List<NameElement>)
+           create    POST   /names                                - createNames(List<NameElementCommand>)
            ----------------------------------------------------------------------------------------------------
            read      GET    /names                                - readNames(Boolean, FieldName[], String[], FieldName, Boolean, Integer, Integer)
            read      GET    /names/{name}                         - readNames(String, FieldName, Boolean, Integer, Integer)
@@ -95,13 +96,13 @@ public interface INames {
            read      GET    /names/islegacy/{name}                - isLegacyName(String)
            read      GET    /names/isvalidtocreate/{name}         - isValidToCreateName(String)
            ----------------------------------------------------------------------------------------------------
-           read      GET    /names/validatecreate                 - validateNamesCreate(List<NameElement>)
-           read      GET    /names/validateupdate                 - validateNamesUpdate(List<NameElement>)
-           read      GET    /names/validatedelete                 - validateNamesDelete(List<NameElement>)
+           read      GET    /names/validatecreate                 - validateNamesCreate(List<NameElementCommand>)
+           read      GET    /names/validateupdate                 - validateNamesUpdate(List<NameElementCommand>)
+           read      GET    /names/validatedelete                 - validateNamesDelete(List<NameElementCommand>)
            ----------------------------------------------------------------------------------------------------
-           update    PUT    /names                                - updateNames(List<NameElement>)
+           update    PUT    /names                                - updateNames(List<NameElementCommand>)
            ----------------------------------------------------------------------------------------------------
-           delete    DELETE /names                                - deleteNames(List<NameElement>)
+           delete    DELETE /names                                - deleteNames(List<NameElementCommand>)
 
        Note
            read      GET    /names/{name} - both name and uuid (name - exact and search, uuid exact)
@@ -144,7 +145,7 @@ public interface INames {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<NameElement> createNames(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -459,7 +460,7 @@ public interface INames {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateNamesCreate(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
     /**
      * Return if name elements are valid to update.
@@ -501,7 +502,7 @@ public interface INames {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateNamesUpdate(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
     /**
      * Return if name elements are valid to delete.
@@ -543,7 +544,7 @@ public interface INames {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateNamesDelete(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -582,7 +583,7 @@ public interface INames {
             consumes = {"application/json"})
     @PutMapping
     public List<NameElement> updateNames(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -620,6 +621,6 @@ public interface INames {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<NameElement> deleteNames(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElement> nameElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of name elements", required = true) @RequestBody(required = true) List<NameElementCommand> nameElements);
 
 }
diff --git a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
index 90716303307604dff801266966147ffec096d37d..b3843152df5103579b3f57700a3d576abbfbc54a 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/IStructures.java
@@ -22,12 +22,13 @@ import java.util.List;
 
 import org.openepics.names.rest.beans.FieldStructure;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -86,7 +87,7 @@ public interface IStructures {
        mnemonic path for structure includes all levels of mnemonics
 
        Methods
-           create    POST   /structures                                       - createStructures               (List<StructureElement>)
+           create    POST   /structures                                       - createStructures               (List<StructureElementCommand>)
            ----------------------------------------------------------------------------------------------------
            read      GET    /structures/{type}                                - readStructures                 (Type, Status[], Boolean, FieldStructure[], String[], FieldStructure, Boolean, Integer, Integer)
            read      GET    /structures/children/{type}/{uuid}                - readStructuresChildren         (Type, String, FieldStructure, Boolean, Integer, Integer)
@@ -98,20 +99,20 @@ public interface IStructures {
            read      GET    /structures/exists/{type}/{mnemonicpath}          - existsStructure                (Type, String)
            read      GET    /structures/isvalidtocreate/{type}/{mnemonicpath} - isValidToCreateStructure       (Type, String)
            ----------------------------------------------------------------------------------------------------
-           read      GET    /structures/validatecreate                        - validateStructuresCreate       (List<StructureElement>)
-           read      GET    /structures/validateupdate                        - validateStructuresUpdate       (List<StructureElement>)
-           read      GET    /structures/validatedelete                        - validateStructuresDelete       (List<StructureElement>)
-           read      GET    /structures/validateapprove                       - validateStructuresApprove      (List<StructureElement>)
-           read      GET    /structures/validatecancel                        - validateStructuresCancel       (List<StructureElement>)
-           read      GET    /structures/validatereject                        - validateStructuresReject       (List<StructureElement>)
+           read      GET    /structures/validatecreate                        - validateStructuresCreate       (List<StructureElementCommand>)
+           read      GET    /structures/validateupdate                        - validateStructuresUpdate       (List<StructureElementCommand>)
+           read      GET    /structures/validatedelete                        - validateStructuresDelete       (List<StructureElementCommand>)
+           read      GET    /structures/validateapprove                       - validateStructuresApprove      (List<StructureElementCommand>)
+           read      GET    /structures/validatecancel                        - validateStructuresCancel       (List<StructureElementCommand>)
+           read      GET    /structures/validatereject                        - validateStructuresReject       (List<StructureElementCommand>)
            ----------------------------------------------------------------------------------------------------
-           update    PUT    /structures                                       - updateStructures               (List<StructureElement>)
+           update    PUT    /structures                                       - updateStructures               (List<StructureElementCommand>)
            ----------------------------------------------------------------------------------------------------
-           delete    DELETE /structures                                       - deleteStructures               (List<StructureElement>)
+           delete    DELETE /structures                                       - deleteStructures               (List<StructureElementCommand>)
            ----------------------------------------------------------------------------------------------------
-           update    PATCH  /structures/approve                               - approveStructures              (List<StructureElement>)
-           update    PATCH  /structures/cancel                                - cancelStructures               (List<StructureElement>)
-           update    PATCH  /structures/reject                                - rejectStructures               (List<StructureElement>)
+           update    PATCH  /structures/approve                               - approveStructures              (List<StructureElementCommand>)
+           update    PATCH  /structures/cancel                                - cancelStructures               (List<StructureElementCommand>)
+           update    PATCH  /structures/reject                                - rejectStructures               (List<StructureElementCommand>)
      */
 
     public static final String DEFAULT_PAGE       = "0";
@@ -159,7 +160,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> createStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -478,7 +479,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresCreate(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Return if structure elements are valid to update (propose).
@@ -522,7 +523,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresUpdate(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Return if structure elements are valid to delete (propose).
@@ -566,7 +567,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresDelete(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Return if structure elements are valid to approve.
@@ -610,7 +611,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresApprove(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Return if structure elements are valid to cancel.
@@ -654,7 +655,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresCancel(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Return if structure elements are valid to reject.
@@ -698,7 +699,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public ResponseEntity<ResponseBooleanList> validateStructuresReject(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -732,7 +733,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> updateStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -766,7 +767,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> deleteStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -793,7 +794,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> approveStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Cancel structures (proposals) by list of structure elements.
@@ -818,7 +819,7 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> cancelStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
     /**
      * Reject structures (proposals) by list of structure elements.
@@ -843,6 +844,6 @@ public interface IStructures {
             produces = {"application/json"},
             consumes = {"application/json"})
     public List<StructureElement> rejectStructures(
-            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElement> structureElements);
+            @Parameter(in = ParameterIn.DEFAULT, description = "array of structure elements", required = true) @RequestBody(required = true) List<StructureElementCommand> structureElements);
 
 }
diff --git a/src/main/java/org/openepics/names/rest/beans/response/ResponsePageNameElements.java b/src/main/java/org/openepics/names/rest/beans/response/ResponsePageNameElements.java
index 9d5b361bf4d26a62dbc9b1789201e089769347bd..2e4b8f9b396ef2cef0866b5c7e1551d3d773c406 100644
--- a/src/main/java/org/openepics/names/rest/beans/response/ResponsePageNameElements.java
+++ b/src/main/java/org/openepics/names/rest/beans/response/ResponsePageNameElements.java
@@ -20,7 +20,7 @@ package org.openepics.names.rest.beans.response;
 
 import java.util.List;
 
-import org.openepics.names.rest.beans.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElement;
 
 import com.google.common.collect.Lists;
 
diff --git a/src/main/java/org/openepics/names/rest/beans/response/ResponsePageStructureElements.java b/src/main/java/org/openepics/names/rest/beans/response/ResponsePageStructureElements.java
index 564315f7619a7898b8e68b92f6c24ddc37239b7a..b695b11cbe534a69a15e8e6a6fe07a0650109658 100644
--- a/src/main/java/org/openepics/names/rest/beans/response/ResponsePageStructureElements.java
+++ b/src/main/java/org/openepics/names/rest/beans/response/ResponsePageStructureElements.java
@@ -20,7 +20,7 @@ package org.openepics.names.rest.beans.response;
 
 import java.util.List;
 
-import org.openepics.names.rest.beans.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElement;
 
 import com.google.common.collect.Lists;
 
diff --git a/src/main/java/org/openepics/names/rest/beans/simplified/NameElement.java b/src/main/java/org/openepics/names/rest/beans/simplified/NameElement.java
index 5817faa1c491d19e50701bc69c85ddb0e0381d07..a5e63cf8d4e5f55be463d03cbce93dcbf7c8bb77 100644
--- a/src/main/java/org/openepics/names/rest/beans/simplified/NameElement.java
+++ b/src/main/java/org/openepics/names/rest/beans/simplified/NameElement.java
@@ -93,7 +93,7 @@ public class NameElement extends NameElementCommand implements Serializable {
             String systemstructure, String devicestructure, String name,
             Status status, Boolean latest, Boolean deleted,
             Date when, String who) {
-        super();
+        super(uuid, parentsystemstructure, parentdevicestructure, index, description, comment);
         this.systemstructure = systemstructure;
         this.devicestructure = devicestructure;
         this.name = name;
diff --git a/src/main/java/org/openepics/names/rest/beans/simplified/NameElementCommand.java b/src/main/java/org/openepics/names/rest/beans/simplified/NameElementCommand.java
index 04666a294c72574524e9794f8597f9237a2d3869..a9dbdb7c0089845928217ee3590c0705119e1ff0 100644
--- a/src/main/java/org/openepics/names/rest/beans/simplified/NameElementCommand.java
+++ b/src/main/java/org/openepics/names/rest/beans/simplified/NameElementCommand.java
@@ -57,7 +57,8 @@ public class NameElementCommand implements Serializable {
      * @param description description
      * @param comment comment
      */
-    public NameElementCommand(UUID uuid, UUID parentsystemstructure, UUID parentdevicestructure, String index,
+    public NameElementCommand(
+            UUID uuid, UUID parentsystemstructure, UUID parentdevicestructure, String index,
             String description, String comment) {
         super();
         this.uuid = uuid;
diff --git a/src/main/java/org/openepics/names/rest/beans/simplified/StructureElement.java b/src/main/java/org/openepics/names/rest/beans/simplified/StructureElement.java
index b9c9c06cd710875ad951f2aa05141032854108ad..3b3e86e3b172acae299202a25c66c038970c421c 100644
--- a/src/main/java/org/openepics/names/rest/beans/simplified/StructureElement.java
+++ b/src/main/java/org/openepics/names/rest/beans/simplified/StructureElement.java
@@ -65,7 +65,8 @@ public class StructureElement extends StructureElementCommand implements Seriali
      * @param comment comment
      */
     public StructureElement(
-            UUID uuid, Type type, UUID parent, String name, String mnemonic,
+            UUID uuid, Type type, UUID parent,
+            String name, String mnemonic,
             String description, String comment) {
         super(uuid, type, parent, name, mnemonic, description, comment);
     }
diff --git a/src/main/java/org/openepics/names/rest/beans/simplified/StructureElementCommand.java b/src/main/java/org/openepics/names/rest/beans/simplified/StructureElementCommand.java
index 9b53a9509f1d19b61e33844c8111c446f7d08d66..036471be81d2acc2a0dc7b0dfd7163b6fd11312b 100644
--- a/src/main/java/org/openepics/names/rest/beans/simplified/StructureElementCommand.java
+++ b/src/main/java/org/openepics/names/rest/beans/simplified/StructureElementCommand.java
@@ -62,7 +62,8 @@ public class StructureElementCommand implements Serializable {
      * @param comment comment
      */
     public StructureElementCommand(
-            UUID uuid, Type type, UUID parent, String name, String mnemonic,
+            UUID uuid, Type type, UUID parent,
+            String name, String mnemonic,
             String description, String comment) {
         super();
         this.uuid = uuid;
diff --git a/src/main/java/org/openepics/names/rest/controller/NamesController.java b/src/main/java/org/openepics/names/rest/controller/NamesController.java
index 1589499eb1017a430310fdb6aa6e502ece970a0c..cdb7f2da438df03d80649f3f432c3292ea9ee38e 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -24,11 +24,12 @@ import java.util.logging.Logger;
 
 import org.openepics.names.rest.api.v1.INames;
 import org.openepics.names.rest.beans.FieldName;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageNameElements;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
 import org.openepics.names.service.NamesService;
 import org.openepics.names.util.ExceptionUtil;
 import org.openepics.names.util.LogUtil;
@@ -64,7 +65,7 @@ public class NamesController implements INames {
     }
 
     @Override
-    public List<NameElement> createNames(List<NameElement> nameElements) {
+    public List<NameElement> createNames(List<NameElementCommand> nameElements) {
         // validate authority
         //     naming user & admin
         // validate
@@ -238,11 +239,11 @@ public class NamesController implements INames {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateNamesCreate(List<NameElement> nameElements) {
+    public ResponseEntity<ResponseBooleanList> validateNamesCreate(List<NameElementCommand> nameElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             try {
                 namesService.validateNamesCreate(nameElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -268,11 +269,11 @@ public class NamesController implements INames {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateNamesUpdate(List<NameElement> nameElements) {
+    public ResponseEntity<ResponseBooleanList> validateNamesUpdate(List<NameElementCommand> nameElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             try {
                 namesService.validateNamesUpdate(nameElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -298,11 +299,11 @@ public class NamesController implements INames {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateNamesDelete(List<NameElement> nameElements) {
+    public ResponseEntity<ResponseBooleanList> validateNamesDelete(List<NameElementCommand> nameElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             try {
                 namesService.validateNamesDelete(nameElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -330,7 +331,7 @@ public class NamesController implements INames {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<NameElement> updateNames(List<NameElement> nameElements) {
+    public List<NameElement> updateNames(List<NameElementCommand> nameElements) {
         // validate authority
         //     naming user & admin
         // validate
@@ -353,7 +354,7 @@ public class NamesController implements INames {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<NameElement> deleteNames(List<NameElement> nameElements) {
+    public List<NameElement> deleteNames(List<NameElementCommand> nameElements) {
         // validate authority
         //     naming user & admin
         // validate
diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
index 9327b503fc6a8fc81488e5e18bc3f9dfa9484c1c..a1848172fc7430c9eeb0620c9718ef55320aafc1 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -25,12 +25,13 @@ import java.util.logging.Logger;
 import org.openepics.names.rest.api.v1.IStructures;
 import org.openepics.names.rest.beans.FieldStructure;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.service.StructuresService;
 import org.openepics.names.util.ExceptionUtil;
 import org.openepics.names.util.LogUtil;
@@ -73,7 +74,7 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public List<StructureElement> createStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> createStructures(List<StructureElementCommand> structureElements) {
         // validate authority
         //     naming user & admin
         // validate
@@ -236,11 +237,11 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresCreate(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresCreate(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresCreate(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -266,11 +267,11 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresUpdate(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresUpdate(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresUpdate(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -296,11 +297,11 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresDelete(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresDelete(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresDelete(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -326,11 +327,11 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresApprove(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresApprove(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresApprove(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -356,11 +357,11 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresCancel(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresCancel(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresCancel(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -386,11 +387,11 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresReject(List<StructureElement> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresReject(List<StructureElementCommand> structureElements) {
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             try {
                 structuresService.validateStructuresReject(structureElement);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
@@ -418,7 +419,7 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> updateStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> updateStructures(List<StructureElementCommand> structureElements) {
         try {
             structuresService.validateStructuresUpdate(structureElements);
             return structuresService.updateStructures(structureElements);
@@ -437,7 +438,7 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> deleteStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> deleteStructures(List<StructureElementCommand> structureElements) {
         try {
             structuresService.validateStructuresDelete(structureElements);
             return structuresService.deleteStructures(structureElements);
@@ -455,7 +456,7 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> approveStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements) {
         try {
             structuresService.validateStructuresApprove(structureElements);
             return structuresService.approveStructures(structureElements);
@@ -471,7 +472,7 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public List<StructureElement> cancelStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements) {
         try {
             structuresService.validateStructuresCancel(structureElements);
             return structuresService.cancelStructures(structureElements);
@@ -487,7 +488,7 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public List<StructureElement> rejectStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements) {
         try {
             structuresService.validateStructuresReject(structureElements);
             return structuresService.rejectStructures(structureElements);
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 0ba6b775811608b8a7fbcaf51cbfc42c97ccf6d5..bb4a6a904567e6c4aca4986450f4e7d44f9d5e0f 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -42,13 +42,15 @@ import org.openepics.names.repository.model.Subsystem;
 import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.FieldName;
-import org.openepics.names.rest.beans.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
 import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.response.ResponsePageNameElements;
 import org.openepics.names.util.EssNamingConvention;
 import org.openepics.names.util.HolderIRepositories;
 import org.openepics.names.util.HolderSystemDeviceStructure;
 import org.openepics.names.util.NameElementUtil;
+import org.openepics.names.util.NameUtil;
 import org.openepics.names.util.ValidateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -107,7 +109,7 @@ public class NamesService {
     }
 
     @Transactional
-    public List<NameElement> createNames(List<NameElement> nameElements) {
+    public List<NameElement> createNames(List<NameElementCommand> nameElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -120,22 +122,35 @@ public class NamesService {
 
         LOGGER.log(Level.INFO, "createNames, nameElements.size:        " + String.valueOf(nameElements != null ? nameElements.size() : "null"));
 
+        // initiate holder of containers for system and device structure content, for performance reasons
+        HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
+
         // do
         String requestedBy = "test who";
         final List<NameElement> createdNameElements = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             // find out system group, system, subsystem
             //     one of the three expected to be non-null, other two expected to be null
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            DeviceType  deviceType  = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
+
+            String derivedName = null;
+            if (systemGroup != null) {
+                derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
+            } else if (system != null) {
+                derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
+            } else if (subsystem != null) {
+                derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
+            }
 
             // create
             Name name = new Name();
             setAttributes(name,
                     UUID.randomUUID(),
                     systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
+                    nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                     new Date(), requestedBy, nameElement.getComment());
 
@@ -454,10 +469,10 @@ public class NamesService {
 
     // ----------------------------------------------------------------------------------------------------
 
-    public void validateNamesCreate(NameElement nameElement) {
+    public void validateNamesCreate(NameElementCommand nameElement) {
         validateNamesCreate(nameElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateNamesCreate(NameElement nameElement, HolderSystemDeviceStructure holder) {
+    public void validateNamesCreate(NameElementCommand nameElement, HolderSystemDeviceStructure holder) {
         // validate authority
         //     elsewhere
         //         naming user & admin
@@ -474,19 +489,19 @@ public class NamesService {
         // validate data
         ValidateUtil.validateNameElementDataCreate(nameElement, namingConvention, holderIRepositories, nameRepository, holder);
     }
-    public void validateNamesCreate(List<NameElement> nameElements) {
+    public void validateNamesCreate(List<NameElementCommand> nameElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             validateNamesCreate(nameElement, holder);
         }
     }
 
-    public void validateNamesUpdate(NameElement nameElement) {
+    public void validateNamesUpdate(NameElementCommand nameElement) {
         validateNamesUpdate(nameElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateNamesUpdate(NameElement nameElement, HolderSystemDeviceStructure holder) {
+    public void validateNamesUpdate(NameElementCommand nameElement, HolderSystemDeviceStructure holder) {
         // validate authority
         //     elsewhere
         //         naming user & admin
@@ -503,19 +518,19 @@ public class NamesService {
         // validate data
         ValidateUtil.validateNameElementDataUpdate(nameElement, namingConvention, holderIRepositories, nameRepository, holder);
     }
-    public void validateNamesUpdate(List<NameElement> nameElements) {
+    public void validateNamesUpdate(List<NameElementCommand> nameElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             validateNamesUpdate(nameElement, holder);
         }
     }
 
-    public void validateNamesDelete(NameElement nameElement) {
+    public void validateNamesDelete(NameElementCommand nameElement) {
         validateNamesDelete(nameElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateNamesDelete(NameElement nameElement, HolderSystemDeviceStructure holder) {
+    public void validateNamesDelete(NameElementCommand nameElement, HolderSystemDeviceStructure holder) {
         //     validate authority
         //         elsewhere
         //             naming user & admin
@@ -530,7 +545,7 @@ public class NamesService {
         // validate data
         ValidateUtil.validateNameElementDataDelete(nameElement, namingConvention, holderIRepositories, nameRepository, holder);
     }
-    public void validateNamesDelete(List<NameElement> nameElements) {
+    public void validateNamesDelete(List<NameElementCommand> nameElements) {
         //     validate authority
         //         elsewhere
         //             naming user & admin
@@ -544,7 +559,7 @@ public class NamesService {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             validateNamesDelete(nameElement, holder);
         }
     }
@@ -552,7 +567,7 @@ public class NamesService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<NameElement> updateNames(List<NameElement> nameElements) {
+    public List<NameElement> updateNames(List<NameElementCommand> nameElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -566,10 +581,13 @@ public class NamesService {
 
         LOGGER.log(Level.INFO, "updateNames, nameElements.size:        " + String.valueOf(nameElements != null ? nameElements.size() : "null"));
 
+        // initiate holder of containers for system and device structure content, for performance reasons
+        HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
+
         // do
         String requestedBy = "test who";
         final List<NameElement> updatedNameElements = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             // update not latest, not deleted
             // create latest, not deleted
 
@@ -580,7 +598,7 @@ public class NamesService {
 
             // skip if name element has same content as name
             //     proceed without fail
-            if (NameElementUtil.hasSameContent(nameElement, name, holderIRepositories)) {
+            if (NameElementUtil.hasSameContent(nameElement, name, holderIRepositories, holder)) {
                 continue;
             }
 
@@ -593,13 +611,23 @@ public class NamesService {
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            DeviceType  deviceType  = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
+
+            String derivedName = null;
+            if (systemGroup != null) {
+                derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
+            } else if (system != null) {
+                derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
+            } else if (subsystem != null) {
+                derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
+            }
 
             // create
             name = new Name();
             setAttributes(name,
                     nameElement.getUuid(),
                     systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
+                    nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                     new Date(), requestedBy, nameElement.getComment());
 
@@ -618,7 +646,7 @@ public class NamesService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<NameElement> deleteNames(List<NameElement> nameElements) {
+    public List<NameElement> deleteNames(List<NameElementCommand> nameElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -631,10 +659,13 @@ public class NamesService {
 
         LOGGER.log(Level.INFO, "deleteNames, nameElements.size:        " + String.valueOf(nameElements != null ? nameElements.size() : "null"));
 
+        // initiate holder of containers for system and device structure content, for performance reasons
+        HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
+
         // do
         String requestedBy = "test who";
         final List<NameElement> deletedNameElements = Lists.newArrayList();
-        for (NameElement nameElement : nameElements) {
+        for (NameElementCommand nameElement : nameElements) {
             Name name = holderIRepositories.getNameRepository().findLatestByUuid(nameElement.getUuid().toString());
             if (name == null) {
                 continue;
@@ -648,12 +679,22 @@ public class NamesService {
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            DeviceType  deviceType  = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
+
+            String derivedName = null;
+            if (systemGroup != null) {
+                derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
+            } else if (system != null) {
+                derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
+            } else if (subsystem != null) {
+                derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
+            }
 
             name = new Name();
             setAttributes(name,
                     nameElement.getUuid(),
                     systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
+                    nameElement.getIndex(), derivedName, namingConvention.equivalenceClassRepresentative(derivedName),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE,
                     new Date(), requestedBy, nameElement.getComment());
 
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 0b3abf602982601ba6172c308d2bb73d83c135ac..ebf72ec030d91c5fa31b2fe6c31acdbf12fc0630 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -50,7 +50,8 @@ import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.FieldStructure;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
 import org.openepics.names.util.EssNamingConvention;
@@ -129,7 +130,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> createStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> createStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -148,7 +149,7 @@ public class StructuresService {
         // do
         String requestedBy = "test who";
         final List<StructureElement> createdStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for system group
                 String mnemonic = structureElement.getMnemonic();
@@ -644,10 +645,10 @@ public class StructuresService {
 
     // ----------------------------------------------------------------------------------------------------
 
-    public void validateStructuresCreate(StructureElement structureElement) {
+    public void validateStructuresCreate(StructureElementCommand structureElement) {
         validateStructuresCreate(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresCreate(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresCreate(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -664,19 +665,19 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataCreate(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresCreate(List<StructureElement> structureElements) {
+    public void validateStructuresCreate(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresCreate(structureElement, holder);
         }
     }
 
-    public void validateStructuresUpdate(StructureElement structureElement) {
+    public void validateStructuresUpdate(StructureElementCommand structureElement) {
         validateStructuresUpdate(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresUpdate(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresUpdate(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -693,19 +694,19 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataUpdate(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresUpdate(List<StructureElement> structureElements) {
+    public void validateStructuresUpdate(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresUpdate(structureElement, holder);
         }
     }
 
-    public void validateStructuresDelete(StructureElement structureElement) {
+    public void validateStructuresDelete(StructureElementCommand structureElement) {
         validateStructuresDelete(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresDelete(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresDelete(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -722,19 +723,19 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataDelete(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresDelete(List<StructureElement> structureElements) {
+    public void validateStructuresDelete(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresDelete(structureElement, holder);
         }
     }
 
-    public void validateStructuresApprove(StructureElement structureElement) {
+    public void validateStructuresApprove(StructureElementCommand structureElement) {
         validateStructuresApprove(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresApprove(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresApprove(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -751,19 +752,19 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataApprove(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresApprove(List<StructureElement> structureElements) {
+    public void validateStructuresApprove(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresApprove(structureElement, holder);
         }
     }
 
-    public void validateStructuresCancel(StructureElement structureElement) {
+    public void validateStructuresCancel(StructureElementCommand structureElement) {
         validateStructuresCancel(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresCancel(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresCancel(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -780,19 +781,19 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataCancel(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresCancel(List<StructureElement> structureElements) {
+    public void validateStructuresCancel(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresCancel(structureElement, holder);
         }
     }
 
-    public void validateStructuresReject(StructureElement structureElement) {
+    public void validateStructuresReject(StructureElementCommand structureElement) {
         validateStructuresReject(structureElement, new HolderSystemDeviceStructure(holderIRepositories));
     }
-    public void validateStructuresReject(StructureElement structureElement, HolderSystemDeviceStructure holder) {
+    public void validateStructuresReject(StructureElementCommand structureElement, HolderSystemDeviceStructure holder) {
         // validate input
         //     type
         //     structure element
@@ -809,11 +810,11 @@ public class StructuresService {
         // validate data
         ValidateUtil.validateStructureElementDataReject(structureElement, namingConvention, holderRepositories, holder);
     }
-    public void validateStructuresReject(List<StructureElement> structureElements) {
+    public void validateStructuresReject(List<StructureElementCommand> structureElements) {
         // initiate holder of containers for system and device structure content, for performance reasons
         HolderSystemDeviceStructure holder = new HolderSystemDeviceStructure(holderIRepositories);
 
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             validateStructuresReject(structureElement, holder);
         }
     }
@@ -821,7 +822,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> updateStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> updateStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -840,7 +841,7 @@ public class StructuresService {
         // do
         String requestedBy = "test who";
         final List<StructureElement> updatedStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // note rules for mnemonic for system group
                 String mnemonic = structureElement.getMnemonic();
@@ -949,7 +950,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> deleteStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> deleteStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -970,7 +971,7 @@ public class StructuresService {
         // do
         String requestedBy = "test who";
         final List<StructureElement> deletedStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
@@ -1113,7 +1114,7 @@ public class StructuresService {
     // ----------------------------------------------------------------------------------------------------
 
     @Transactional
-    public List<StructureElement> approveStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -1141,9 +1142,8 @@ public class StructuresService {
         //         set not latest for current latest
         //         set approved, latest for pending
         String processedBy = "test who";
-        String processedComment = "test comment";
         final List<StructureElement> approvedStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, Boolean.FALSE, FieldStructure.UUID, structureElement.getUuid().toString());
@@ -1164,7 +1164,7 @@ public class StructuresService {
                 systemGroup = systemGroups.get(0);
 
                 // approve
-                setAttributesStatusProcessed(systemGroup, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(systemGroup, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 systemGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
@@ -1192,7 +1192,7 @@ public class StructuresService {
                 system = systems.get(0);
 
                 // approve
-                setAttributesStatusProcessed(system, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(system, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 system.setLatest(Boolean.TRUE);
                 holderRepositories.getSystemRepository().updateSystem(system);
 
@@ -1220,7 +1220,7 @@ public class StructuresService {
                 subsystem = subsystems.get(0);
 
                 // approve
-                setAttributesStatusProcessed(subsystem, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(subsystem, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 subsystem.setLatest(Boolean.TRUE);
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
@@ -1247,7 +1247,7 @@ public class StructuresService {
                 discipline = disciplines.get(0);
 
                 // approve
-                setAttributesStatusProcessed(discipline, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(discipline, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 discipline.setLatest(Boolean.TRUE);
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
@@ -1275,7 +1275,7 @@ public class StructuresService {
                 deviceGroup = deviceGroups.get(0);
 
                 // approve
-                setAttributesStatusProcessed(deviceGroup, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceGroup, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 deviceGroup.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
@@ -1303,7 +1303,7 @@ public class StructuresService {
                 deviceType = deviceTypes.get(0);
 
                 // approve
-                setAttributesStatusProcessed(deviceType, Status.APPROVED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceType, Status.APPROVED, new Date(), processedBy, structureElement.getComment());
                 deviceType.setLatest(Boolean.TRUE);
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
@@ -1319,7 +1319,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> cancelStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -1336,9 +1336,8 @@ public class StructuresService {
 
         // do
         String processedBy = "test who";
-        String processedComment = "test comment";
         final List<StructureElement> cancelledStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
@@ -1348,7 +1347,7 @@ public class StructuresService {
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(systemGroup, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(systemGroup, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // possibly validate that cancelled
@@ -1364,7 +1363,7 @@ public class StructuresService {
                 System system = systems.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(system, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(system, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // possibly validate that cancelled
@@ -1380,7 +1379,7 @@ public class StructuresService {
                 Subsystem subsystem = subsystems.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(subsystem, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(subsystem, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // possibly validate that cancelled
@@ -1396,7 +1395,7 @@ public class StructuresService {
                 Discipline discipline = disciplines.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(discipline, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(discipline, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // possibly validate that cancelled
@@ -1412,7 +1411,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(deviceGroup, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceGroup, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // possibly validate that cancelled
@@ -1427,7 +1426,7 @@ public class StructuresService {
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // cancel
-                setAttributesStatusProcessed(deviceType, Status.CANCELLED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceType, Status.CANCELLED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // possibly validate that cancelled
@@ -1442,7 +1441,7 @@ public class StructuresService {
     }
 
     @Transactional
-    public List<StructureElement> rejectStructures(List<StructureElement> structureElements) {
+    public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements) {
         // validate
         //     outside of @Transactional
         // transaction
@@ -1459,9 +1458,8 @@ public class StructuresService {
 
         // do
         String processedBy = "test who";
-        String processedComment = "test comment";
         final List<StructureElement> rejectedStructureElements = Lists.newArrayList();
-        for (StructureElement structureElement : structureElements) {
+        for (StructureElementCommand structureElement : structureElements) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // find
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
@@ -1471,7 +1469,7 @@ public class StructuresService {
                 SystemGroup systemGroup = systemGroups.get(0);
 
                 // reject
-                setAttributesStatusProcessed(systemGroup, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(systemGroup, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSystemGroupRepository().updateSystemGroup(systemGroup);
 
                 // possibly validate that rejected
@@ -1487,7 +1485,7 @@ public class StructuresService {
                 System system = systems.get(0);
 
                 // reject
-                setAttributesStatusProcessed(system, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(system, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSystemRepository().updateSystem(system);
 
                 // possibly validate that rejected
@@ -1503,7 +1501,7 @@ public class StructuresService {
                 Subsystem subsystem = subsystems.get(0);
 
                 // reject
-                setAttributesStatusProcessed(subsystem, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(subsystem, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getSubsystemRepository().updateSubsystem(subsystem);
 
                 // possibly validate that rejected
@@ -1519,7 +1517,7 @@ public class StructuresService {
                 Discipline discipline = disciplines.get(0);
 
                 // reject
-                setAttributesStatusProcessed(discipline, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(discipline, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDisciplineRepository().updateDiscipline(discipline);
 
                 // possibly validate that rejected
@@ -1535,7 +1533,7 @@ public class StructuresService {
                 DeviceGroup deviceGroup = deviceGroups.get(0);
 
                 // reject
-                setAttributesStatusProcessed(deviceGroup, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceGroup, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDeviceGroupRepository().updateDeviceGroup(deviceGroup);
 
                 // possibly validate that rejected
@@ -1550,7 +1548,7 @@ public class StructuresService {
                 DeviceType deviceType = deviceTypes.get(0);
 
                 // reject
-                setAttributesStatusProcessed(deviceType, Status.REJECTED, new Date(), processedBy, processedComment);
+                setAttributesStatusProcessed(deviceType, Status.REJECTED, new Date(), processedBy, structureElement.getComment());
                 holderRepositories.getDeviceTypeRepository().updateDeviceType(deviceType);
 
                 // possibly validate that rejected
diff --git a/src/main/java/org/openepics/names/util/NameElementUtil.java b/src/main/java/org/openepics/names/util/NameElementUtil.java
index 3a535688a7b16ff630913a6b74237a85c27e3486..80bd288c88bc14ca22d83c1a3dda5af7c33d2087 100644
--- a/src/main/java/org/openepics/names/util/NameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/NameElementUtil.java
@@ -21,14 +21,14 @@ package org.openepics.names.util;
 import java.util.Date;
 import java.util.UUID;
 
-import org.apache.commons.lang3.StringUtils;
+import org.openepics.names.repository.model.DeviceType;
 import org.openepics.names.repository.model.Name;
-import org.openepics.names.repository.model.NameStructure;
 import org.openepics.names.repository.model.Subsystem;
 import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
 
 /**
  * Utility class to assist in populating name elements based on repository content.
@@ -109,73 +109,36 @@ public class NameElementUtil {
             Date when, String who, String comment) {
 
         return new NameElement(
-                uuid,
-                parentsystemstructure, parentdevicestructure,
-                systemstructure, devicestructure,
-                index, name,
-                description, status, latest, deleted,
-                when, who, comment);
+                uuid, parentsystemstructure, parentdevicestructure, index,
+                description, comment,
+                systemstructure, devicestructure, name,
+                status, latest, deleted,
+                when, who);
     }
 
-    private static boolean hasSameContent(NameElement nameElement, NameStructure nameStructure) {
-        /*
-           NameElement
-               x uuid
-               x description
-               x status
-               x latest
-               x deleted
-           NameStructure
-               x uuid
-               x description
-               x status
-               x latest
-               x deleted
-         */
-
-        if (nameElement == null && nameStructure == null)
-            return true;
-        if (nameElement == null)
-            return false;
-        if (nameStructure == null)
-            return false;
-
-        if (nameElement.getUuid() == null) {
-            if (nameStructure.getUuid() != null)
-                return false;
-        } else if (!nameElement.getUuid().equals(nameStructure.getUuid()))
-            return false;
-        if (nameElement.getDescription() == null) {
-            if (nameStructure.getDescription() != null)
-                return false;
-        } else if (!nameElement.getDescription().equals(nameStructure.getDescription()))
-            return false;
-        if (nameElement.getStatus() == null) {
-            if (nameStructure.getStatus() != null)
-                return false;
-        } else if (!nameElement.getStatus().equals(nameStructure.getStatus()))
-            return false;
-        if (nameElement.isLatest() == null) {
-            if (nameStructure.isLatest() != null)
-                return false;
-        } else if (!nameElement.isLatest().equals(nameStructure.isLatest()))
-            return false;
-        if (nameElement.isDeleted() == null) {
-            if (nameStructure.isDeleted() != null)
-                return false;
-        } else if (!nameElement.isDeleted().equals(nameStructure.isDeleted()))
-            return false;
-
-        return true;
-    }
-
-    public static boolean hasSameContent(NameElement nameElement, Name name, HolderIRepositories holderIRepositories) {
+    /**
+     * Check if name element and name have same content.
+     *
+     * @param nameElement name element
+     * @param name name
+     * @param holderIRepositories holder repositories
+     * @param holder holder repositories
+     * @return true if name element and name have same content, false otherwise
+     */
+    public static boolean hasSameContent(NameElementCommand nameElement, Name name, HolderIRepositories holderIRepositories, HolderSystemDeviceStructure holder) {
         /*
            NameElement
                x parentsystemstructure (system group, system, subsystem)
                x parentdevicestructure (device type)
                x index
                x name
+           NameElementCommand
+               uuid
+               parentsystemstructure
+               parentdevicestructure
+               index
+               description
+               comment
            Name
                x systemgroup_uuid
                x system_uuid
@@ -190,46 +153,35 @@ public class NameElementUtil {
         SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
         System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
         Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+        DeviceType  deviceType  = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
 
-        // get mnemonic path for system structure
-        // compare with system structure part of convention name to find out if parent system structure has changed
-        String systemstructure = null;
-        if (subsystem != null) {
-            system = holderIRepositories.getSystemRepository().findLatestByUuid(subsystem.getParentUuid().toString());
-            if (system == null) {
-                return false;
-            }
-            systemstructure = system.getMnemonic() + "-" + subsystem.getMnemonic();
+        String derivedName = null;
+        if (systemGroup != null) {
+            derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
         } else if (system != null) {
-            systemstructure = system.getMnemonic();
-        } else if (systemGroup != null) {
-            systemstructure = systemGroup.getMnemonic();
-        }
-        if (StringUtils.isEmpty(systemstructure)) {
+            derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
+        } else if (subsystem != null) {
+            derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
+        } else {
             return false;
         }
 
-        if (!hasSameContent(nameElement, (NameStructure) name))
-            return false;
-
-        if (!StringUtils.equals(systemstructure, NamingConventionUtil.extractMnemonicPathSystemStructure(name.getConventionName()))) {
-            return false;
-        }
-        if (nameElement.getParentdevicestructure() == null) {
-            if (name.getDevicetypeUuid() != null)
+        if (nameElement.getUuid() == null) {
+            if (name.getUuid() != null)
                 return false;
-        } else if (!nameElement.getParentdevicestructure().equals(name.getDevicetypeUuid()))
+        } else if (!nameElement.getUuid().equals(name.getUuid()))
             return false;
-        if (nameElement.getIndex() == null) {
-            if (name.getInstanceIndex() != null)
+        if (derivedName == null) {
+            if (name.getConventionName() != null)
                 return false;
-        } else if (!nameElement.getIndex().equals(name.getInstanceIndex()))
+        } else if (!derivedName.equals(name.getConventionName()))
             return false;
-        if (nameElement.getName() == null) {
-            if (name.getConventionName() != null)
+        if (nameElement.getDescription() == null) {
+            if (name.getDescription() != null)
                 return false;
-        } else if (!nameElement.getName().equals(name.getConventionName()))
+        } else if (!nameElement.getDescription().equals(name.getDescription()))
             return false;
+        // no need to compare comment, it is comment to action that is taken, not considered state
 
         return true;
     }
diff --git a/src/main/java/org/openepics/names/util/NameUtil.java b/src/main/java/org/openepics/names/util/NameUtil.java
index d6cff54db4aff4c35c38421850e6a2503bda0648..947524391448715d043694d6cc4c4963f2671319 100644
--- a/src/main/java/org/openepics/names/util/NameUtil.java
+++ b/src/main/java/org/openepics/names/util/NameUtil.java
@@ -18,7 +18,12 @@
 
 package org.openepics.names.util;
 
+import org.apache.commons.lang3.StringUtils;
+import org.openepics.names.repository.model.DeviceType;
 import org.openepics.names.repository.model.Name;
+import org.openepics.names.repository.model.Subsystem;
+import org.openepics.names.repository.model.System;
+import org.openepics.names.repository.model.SystemGroup;
 
 /**
  * Utility class to assist in handling of name content.
@@ -94,6 +99,39 @@ public class NameUtil {
                 : -1;
     }
 
+    public static String getName(SystemGroup systemGroup, DeviceType deviceType, String index, HolderSystemDeviceStructure holderSystemDeviceStructure) {
+        String systemstructure = StructureUtil.getMnemonicPath(systemGroup, holderSystemDeviceStructure);
+        String devicestructure = StructureUtil.getMnemonicPath(deviceType, holderSystemDeviceStructure);
+
+        return !StringUtils.isEmpty(systemstructure)
+                ? !StringUtils.isEmpty(devicestructure) && !StringUtils.isEmpty(index)
+                    ? systemstructure + NamingConventionUtil.DELIMITER_EXTRA + devicestructure + NamingConventionUtil.DELIMITER_INTRA + index
+                    : systemstructure
+                : null;
+    }
+
+    public static String getName(System system, DeviceType deviceType, String index, HolderSystemDeviceStructure holderSystemDeviceStructure) {
+        String systemstructure = StructureUtil.getMnemonicPath(system, holderSystemDeviceStructure);
+        String devicestructure = StructureUtil.getMnemonicPath(deviceType, holderSystemDeviceStructure);
+
+        return !StringUtils.isEmpty(systemstructure)
+                ? !StringUtils.isEmpty(devicestructure) && !StringUtils.isEmpty(index)
+                    ? systemstructure + NamingConventionUtil.DELIMITER_EXTRA + devicestructure + NamingConventionUtil.DELIMITER_INTRA + index
+                    : systemstructure
+                : null;
+    }
+
+    public static String getName(Subsystem subsystem, DeviceType deviceType, String index, HolderSystemDeviceStructure holderSystemDeviceStructure) {
+        String systemstructure = StructureUtil.getMnemonicPath(subsystem, holderSystemDeviceStructure);
+        String devicestructure = StructureUtil.getMnemonicPath(deviceType, holderSystemDeviceStructure);
+
+        return !StringUtils.isEmpty(systemstructure)
+                ? !StringUtils.isEmpty(devicestructure) && !StringUtils.isEmpty(index)
+                    ? systemstructure + NamingConventionUtil.DELIMITER_EXTRA + devicestructure + NamingConventionUtil.DELIMITER_INTRA + index
+                    : systemstructure
+                : null;
+    }
+
 //  /**
 //  * Return system structure mnemonic path for name.
 //  *
diff --git a/src/main/java/org/openepics/names/util/NamingConventionUtil.java b/src/main/java/org/openepics/names/util/NamingConventionUtil.java
index 07e6e36341404733d4f93ff60068af94e90ccbb9..38b59dac824525f11ed3b3ac80b386cd5ce24f84 100644
--- a/src/main/java/org/openepics/names/util/NamingConventionUtil.java
+++ b/src/main/java/org/openepics/names/util/NamingConventionUtil.java
@@ -96,8 +96,8 @@ public class NamingConventionUtil {
     private static final String[] DISCIPLINES_P_ID           = {"Cryo", "EMR", "HVAC", "Proc", "SC", "Vac", "WtrC"};
     private static final String[] MNEMONIC_PATH_P_ID_NUMERIC = {"SC-IOC"};
 
-    private static final String DELIMITER_EXTRA = ":";
-    private static final String DELIMITER_INTRA = "-";
+    public static final String DELIMITER_EXTRA = ":";
+    public static final String DELIMITER_INTRA = "-";
 
     /**
      * This class is not to be instantiated.
diff --git a/src/main/java/org/openepics/names/util/StructureElementUtil.java b/src/main/java/org/openepics/names/util/StructureElementUtil.java
index 04197ebf2ce676eacc6ead30a2942302ecfdceef..f3f140c2ccf68923988b214d0602dcba82ccaaf0 100644
--- a/src/main/java/org/openepics/names/util/StructureElementUtil.java
+++ b/src/main/java/org/openepics/names/util/StructureElementUtil.java
@@ -31,8 +31,8 @@ import org.openepics.names.repository.model.Subsystem;
 import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
 
 import com.google.common.collect.Lists;
 
@@ -558,12 +558,11 @@ public class StructureElementUtil {
             Date when, String who, String comment) {
 
         return new StructureElement(
-                type,
-                uuid,
-                parent,
-                name, mnemonic, mnemonicpath, level,
-                description, status, latest, deleted,
-                when, who, comment);
+                uuid, type, parent, name, mnemonic,
+                description, comment,
+                mnemonicpath, level,
+                status, latest, deleted,
+                when, who);
     }
 
 
diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java
index c3c2f7d89ace7dad0c84656f0df24508e4b55b3d..9113dae6aa1d606973a6c747137db9b36786207c 100644
--- a/src/main/java/org/openepics/names/util/ValidateUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateUtil.java
@@ -32,10 +32,10 @@ import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.FieldName;
 import org.openepics.names.rest.beans.FieldStructure;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.springframework.http.HttpStatus;
 
 /**
@@ -47,14 +47,23 @@ public class ValidateUtil {
 
     // note
     //     handling of system structure, device structure
-    //         parent system structure uuid (system group, system, subsystem) - ability to find structure
+    //         parent system structure uuid (system group, system, subsystem)
     //         parent device structure uuid (device type)
+    //
+    //     NameElementCommand
+    //	       create -       parentsystemstructure, parentdevicestructure (optional), index, description, comment
+    //	       update - uuid, parentsystemstructure, parentdevicestructure (optional), index, description, comment
+    //	       delete - uuid,                                                                              comment
+    //     StructureElementCommand
+    //	       create -       type, parent, name, mnemonic, description, comment
+    //	       update - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete - uuid, type                                       comment
 
     private static enum NameChoice      {CREATE, UPDATE, DELETE};
     private static enum StructureChoice {CREATE, UPDATE, DELETE, APPROVE, REJECT, CANCEL};
 
-    public static final String STRUCTURE               = "structure";
     public static final String NAME                    = "name";
+    public static final String STRUCTURE               = "structure";
     public static final String SYSTEMGROUP             = "system group";
     public static final String SYSTEM                  = "system";
     public static final String SUBSYSTEM               = "subsystem";
@@ -112,6 +121,17 @@ public class ValidateUtil {
                 "description " + ValidateUtil.IS_NOT_AVAILABLE, description);
     }
 
+    /**
+     * Validate index.
+     *
+     * @param index index
+     */
+    public static void validateInputIndex(String index) {
+        // available
+        validateCondition(!StringUtils.isEmpty(index), HttpStatus.BAD_REQUEST,
+                "index " + ValidateUtil.IS_NOT_AVAILABLE, index);
+    }
+
     /**
      * Validate mnemonic.
      *
@@ -260,7 +280,7 @@ public class ValidateUtil {
      *
      * @param nameElement name element
      */
-    public static void validateNameElementInputCreate(NameElement nameElement) {
+    public static void validateNameElementInputCreate(NameElementCommand nameElement) {
         validateNameElementInput(nameElement, NameChoice.CREATE);
     }
 
@@ -269,7 +289,7 @@ public class ValidateUtil {
      *
      * @param nameElement name element
      */
-    public static void validateNameElementInputUpdate(NameElement nameElement) {
+    public static void validateNameElementInputUpdate(NameElementCommand nameElement) {
         validateNameElementInput(nameElement, NameChoice.UPDATE);
     }
 
@@ -278,7 +298,7 @@ public class ValidateUtil {
      *
      * @param nameElement name element
      */
-    public static void validateNameElementInputDelete(NameElement nameElement) {
+    public static void validateNameElementInputDelete(NameElementCommand nameElement) {
         validateNameElementInput(nameElement, NameChoice.DELETE);
     }
 
@@ -288,24 +308,14 @@ public class ValidateUtil {
      * @param nameElement name element
      * @param nameChoice name choice
      */
-    private static void validateNameElementInput(NameElement nameElement, NameChoice nameChoice) {
+    private static void validateNameElementInput(NameElementCommand nameElement, NameChoice nameChoice) {
         // attributes
-        //     not check
-        //    	   uuid                  - n.a set server side
-        //    	   parentdevicestructure - possibly validate uuid also validate data
-        //    	   systemstructure       - n.a system structure mnemonic path
-        //    	   devicestructure       - n.a device structure mnemonic path
-        //    	   index                 - possibly also validate data
-        //    	   name                  - possibly also validate data
-        //    	   status                - n.a. set server side
-        //    	   latest                - n.a. set server side
-        //    	   deleted               - n.a. set server side
-        //    	   when                  - n.a. set server side
-        //    	   who                   - n.a. set server side
-        //     check
-        //         parentsystemstructure - required
-        //    	   description           - required
-        //    	   comment               - required
+        //     uuid
+        //     parentsystemstructure
+        //     parentdevicestructure
+        //     index
+        //     description
+        //     comment
 
         if (nameElement == null || nameChoice == null) {
             return;
@@ -315,11 +325,17 @@ public class ValidateUtil {
             validateInputUuid(nameElement.getUuid() !=  null ? nameElement.getUuid().toString() : null);
         }
 
-        validateInputDescription(nameElement.getDescription());
-        validateInputComment(nameElement.getComment());
+        if (!NameChoice.DELETE.equals(nameChoice)) {
+            ValidateUtil.validateCondition(nameElement.getParentsystemstructure() != null, HttpStatus.BAD_REQUEST,
+                    "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+
+            // parentdevicestructure optional
+
+            // validateInputIndex(nameElement.getIndex()); optional
+            validateInputDescription(nameElement.getDescription());
+        }
 
-        ValidateUtil.validateCondition(nameElement.getParentsystemstructure() != null, HttpStatus.BAD_REQUEST,
-                "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+        validateInputComment(nameElement.getComment());
     }
 
     // ----------------------------------------------------------------------------------------------------
@@ -333,7 +349,7 @@ public class ValidateUtil {
      * @param nameRepository name repository
      * @param holder holder
      */
-    public static void validateNameElementDataCreate(NameElement nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
+    public static void validateNameElementDataCreate(NameElementCommand nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
         validateNameElementData(nameElement, namingConvention, holderIRepositories, nameRepository, holder, NameChoice.CREATE);
     }
 
@@ -346,7 +362,7 @@ public class ValidateUtil {
      * @param nameRepository name repositories
      * @param holder holder
      */
-    public static void validateNameElementDataUpdate(NameElement nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
+    public static void validateNameElementDataUpdate(NameElementCommand nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
         validateNameElementData(nameElement, namingConvention, holderIRepositories, nameRepository, holder, NameChoice.UPDATE);
     }
 
@@ -359,7 +375,7 @@ public class ValidateUtil {
      * @param nameRepository name repositories
      * @param holder holder
      */
-    public static void validateNameElementDataDelete(NameElement nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
+    public static void validateNameElementDataDelete(NameElementCommand nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder) {
         validateNameElementData(nameElement, namingConvention, holderIRepositories, nameRepository, holder, NameChoice.DELETE);
     }
 
@@ -373,49 +389,31 @@ public class ValidateUtil {
      * @param holder holder
      * @param nameChoice name choice
      */
-    private static void validateNameElementData(NameElement nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder, NameChoice nameChoice) {
+    private static void validateNameElementData(NameElementCommand nameElement, EssNamingConvention namingConvention, HolderIRepositories holderIRepositories, NameRepository nameRepository, HolderSystemDeviceStructure holder, NameChoice nameChoice) {
         // attributes
-        //     not check
-        //         uuid
-        //         systemstructure
-        //         devicestructure
-        //         description
-        //         status
-        //         latest
-        //         deleted
-        //         when
-        //         who
-        //         comment
-        //     check
-        //         systemgroup, system, subsystem - in repository
-        //             found
-        //             not deleted
-        //         devicetype                     - possibly, in repository
-        //             found
-        //             not deleted
-        //         index                          - possibly, naming convention rules
-        //             index to match name index
-        //             valid
-        //         name                           - naming convention rules
-        //             mnemonic paths for system structure uuid to match name mnemonic paths
-        //             mnemonic paths for device structure uuid to match name mnemonic paths
-        //             name not exists
-        //             name equivalence not exists
+        //     uuid
+        //     parentsystemstructure
+        //     parentdevicestructure
+        //     index
+        //     description
+        //     comment
+        //
+        // name
+        //      - system structure uuid
+        //    ( - system structure uuid, device structure uuid )
+        //      - system structure uuid, device structure uuid, index
 
         if (nameElement == null || namingConvention == null || holderIRepositories == null || nameRepository == null || holder == null || nameChoice == null) {
             return;
         }
 
         // name
-        //     create or update? same or not?
-        //     update --> retrieve name and check
-        Name name = null;
+        //     update, delete - uuid available, not deleted
+        //     retrieve for uuid and check
         if (NameChoice.UPDATE.equals(nameChoice) || NameChoice.DELETE.equals(nameChoice)) {
             List<Name> names = nameRepository.readNames(false, FieldName.UUID, nameElement.getUuid().toString());
             validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST,
                     ValidateUtil.NAME + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
-
-            name = names.get(0);
         }
 
         SystemGroup systemGroup = null;
@@ -423,116 +421,91 @@ public class ValidateUtil {
         Subsystem   subsystem   = null;
         DeviceType  deviceType  = null;
 
-        String mnemonicPathSystemStructure = null;
-        String mnemonicPathDeviceStructure = null;
+        int countDevicestructureIndex = 0;
+        String derivedName = null;
 
         boolean condition = true;
 
         if (NameChoice.CREATE.equals(nameChoice) || NameChoice.UPDATE.equals(nameChoice)) {
+            // systemgroup, system, subsystem - in repository
+            //     found
+            //     not deleted
+            // devicetype                     - possibly, in repository
+            //     found
+            //     not deleted
+            // name                           - naming convention rules
+            //     derive name from system structure, device structure, index
+            // index                          - possibly, naming convention rules
+            //     valid
+            // name
+            //     name not exists
+            //     name equivalence not exists
+
             // find out system group, system, subsystem
             //     one of the three expected to be non-null, other two expected to be null
             systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
             subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
 
+            // device structure
+            if (nameElement.getParentdevicestructure() != null) {
+                countDevicestructureIndex++;
+                deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
+                ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
+                ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
+            }
+
             // system structure
             if (systemGroup != null) {
                 ValidateUtil.validateCondition(!systemGroup.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
-                mnemonicPathSystemStructure = systemGroup.getMnemonic();
+
+                derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
             } else if (system != null) {
                 ValidateUtil.validateCondition(!system.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(system, holder);
+
+                derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
             } else if (subsystem != null) {
                 ValidateUtil.validateCondition(!subsystem.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(subsystem, holder);
+
+                derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
             } else {
                 throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest("system structure uuid " + IS_NOT_CORRECT, nameElement.toString(), null);
             }
-            // mnemonicPathSystemStructure = NamingConventionUtil.mnemonicPathSystemStructure4Name(mnemonicPathSystemStructure);
-
-            // device structure
-            if (nameElement.getParentdevicestructure() != null) {
-                deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
-                ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
-                ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
-                mnemonicPathDeviceStructure = StructureUtil.getMnemonicPath(deviceType, holder);
-            }
 
             // index
-            String extractedInstanceIndex = NamingConventionUtil.extractInstanceIndex(nameElement.getName());
-
-            if (!StringUtils.isEmpty(nameElement.getIndex()) && StringUtils.isEmpty(extractedInstanceIndex)) {
-                throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest("convention name " + IS_NOT_CORRECT, nameElement.toString(), null);
-            } else if (StringUtils.isEmpty(nameElement.getIndex()) && !StringUtils.isEmpty(extractedInstanceIndex)) {
-                throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest("instance index " + IS_NOT_CORRECT, nameElement.toString(), null);
-            }
-
             if (!StringUtils.isEmpty(nameElement.getIndex())) {
-                condition = StringUtils.equals(nameElement.getIndex(), NamingConventionUtil.extractInstanceIndex(nameElement.getName()));
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "instance index " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
-
+                countDevicestructureIndex++;
                 // TODO overrideRuleset depend on user authority
-                condition = namingConvention.isInstanceIndexValid(nameElement.getName(), false);
+                condition = namingConvention.isInstanceIndexValid(derivedName, false);
                 validateCondition(condition, HttpStatus.BAD_REQUEST, "instance index " + ValidateUtil.IS_NOT_VALID, nameElement.toString());
             }
 
-            // name
-            //     system structure
-            //     device structure
-            if (!StringUtils.isEmpty(nameElement.getName())) {
-                condition = StringUtils.equals(mnemonicPathSystemStructure, NamingConventionUtil.extractMnemonicPathSystemStructure(nameElement.getName()));
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
-                condition = StringUtils.equals(mnemonicPathDeviceStructure, NamingConventionUtil.extractMnemonicPathDeviceStructure(nameElement.getName()));
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
-            } else {
-                // if no name, then no index, we're left with system structure, possibly also device structure
-                if (!StringUtils.isEmpty(mnemonicPathSystemStructure) && !StringUtils.isEmpty(mnemonicPathDeviceStructure)) {
-                    nameElement.setName(mnemonicPathSystemStructure + ":" + mnemonicPathDeviceStructure);
-                } else if (!StringUtils.isEmpty(mnemonicPathSystemStructure)) {
-                    nameElement.setName(mnemonicPathSystemStructure);
-                }
-            }
+            condition = countDevicestructureIndex == 0 || countDevicestructureIndex == 2;
+            ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + "or instance index " + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
 
             // name
-            // name equivalence
-            //     check if (create || update && name not same)
-            //     may also trace & trace, and check name through its parents and index, should result in same name as in nameelement
-            if (NameChoice.CREATE.equals(nameChoice) || (NameChoice.UPDATE.equals(nameChoice) && !StringUtils.equals(nameElement.getName(), name.getConventionName()))) {
-                List<Name> names = nameRepository.readNames(false, FieldName.NAME, nameElement.getName());
-                condition = names == null || names.isEmpty();
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.EXISTS, nameElement.toString());
-
-                names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(nameElement.getName()));
+            //     ok with same name, name equivalence if same uuid
+            List<Name> names = nameRepository.readNames(false, FieldName.NAME, derivedName);
+            if (NameChoice.CREATE.equals(nameChoice)) {
                 condition = names == null || names.isEmpty();
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString());
-            }
-        } else if (NameChoice.DELETE.equals(nameChoice)) {
-            // find out parent
-            //     system group, system, subsystem
-            //         maximum one of the three expected to be non-null, other two expected to be null
-            // parent mnemonic path expected to match extracted system structure mnemonic path (extracted from name)
-            // parent may be deleted - legacy name
-
-            systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
-            system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
-            subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
-
-            if (systemGroup != null) {
-                mnemonicPathSystemStructure = systemGroup.getMnemonic();
-            } else if (system != null) {
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(system, holder);
-            } else if (subsystem != null) {
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(subsystem, holder);
             } else {
-                throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest("parent system structure uuid " + IS_NOT_CORRECT, nameElement.toString(), null);
+                // NameChoice.UPDATE.equals(nameChoice)
+                condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid());
             }
+            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.EXISTS, nameElement.toString());
 
-            // name
-            //     system structure
-            if (!StringUtils.isEmpty(nameElement.getName())) {
-                condition = StringUtils.equals(mnemonicPathSystemStructure, NamingConventionUtil.extractMnemonicPathSystemStructure(nameElement.getName()));
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+            names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(derivedName));
+            if (NameChoice.CREATE.equals(nameChoice)) {
+                condition = names == null || names.isEmpty();
+            } else {
+                // NameChoice.UPDATE.equals(nameChoice)
+                condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid());
             }
+            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString());
+        } else if (NameChoice.DELETE.equals(nameChoice)) {
+            // n.a.
+            //     uuid    - already handled
+            //     comment - already handled
         }
     }
 
@@ -590,12 +563,13 @@ public class ValidateUtil {
         Subsystem subsystem     = null;
         DeviceType deviceType   = null;
 
-        String mnemonicPathSystemStructure = null;
-        String mnemonicPathDeviceStructure = null;
+        String derivedName = null;
 
         boolean condition = true;
 
         // ensure that system structure parents and device structure parents are available, latest and not deleted
+        //    if (device type) {
+        //    }
         //    if (system group) {
         //    } else {
         //        if (system) {
@@ -605,21 +579,28 @@ public class ValidateUtil {
         //        if (subsystem) {
         //        }
         //    }
-        //    if (device type) {
-        //    }
+
+        // device structure
+        if (!StringUtils.isEmpty(dt)) {
+            deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByMnemonic(dt);
+            ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST,
+                    ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+        }
 
         // system structure
         if (!StringUtils.isEmpty(sg)) {
             systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(sg);
             ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST,
                     ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
-            mnemonicPathSystemStructure = systemGroup.getMnemonic();
+
+            derivedName = NameUtil.getName(systemGroup, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
         } else {
             if (!StringUtils.isEmpty(sys)) {
                 system = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(sys);
                 ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST,
                         ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(system, holder);
+
+                derivedName = NameUtil.getName(system, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
             } else {
                 throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(
                         ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
@@ -631,16 +612,9 @@ public class ValidateUtil {
                 subsystem = holderIRepositories.getSubsystemRepository().findLatestNotDeletedByParentAndMnemonic(system.getUuid().toString(), sub);
                 ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST,
                         ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
-                mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(subsystem, holder);
-            }
-        }
 
-        // device structure
-        if (!StringUtils.isEmpty(dt)) {
-            deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByMnemonic(dt);
-            ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST,
-                    ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
-            mnemonicPathDeviceStructure = StructureUtil.getMnemonicPath(deviceType, holder);
+                derivedName = NameUtil.getName(subsystem, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
+            }
         }
 
         // index
@@ -652,15 +626,10 @@ public class ValidateUtil {
         }
 
         // name
-        //     mnemonic paths for found system structure to end with extracted mnemonic path for system structure
-        //     mnemonic paths for found device structure to end with extracted mnemonic path for device structure
+        //     name corresponds to derived name
         //     convention name not exists
         //     convention name equivalence not exists
-        condition = StringUtils.endsWith(mnemonicPathSystemStructure, NamingConventionUtil.extractMnemonicPathSystemStructure(name));
-        validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "convention name " + ValidateUtil.IS_NOT_CORRECT, name);
-
-        condition = StringUtils.endsWith(mnemonicPathDeviceStructure, NamingConventionUtil.extractMnemonicPathDeviceStructure(name));
+        condition = StringUtils.equals(name, derivedName);
         validateCondition(condition, HttpStatus.BAD_REQUEST,
                 "convention name " + ValidateUtil.IS_NOT_CORRECT, name);
 
@@ -725,7 +694,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputCreate(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputCreate(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.CREATE);
     }
 
@@ -734,7 +703,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputUpdate(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputUpdate(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.UPDATE);
     }
 
@@ -743,7 +712,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputDelete(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputDelete(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.DELETE);
     }
 
@@ -752,7 +721,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputApprove(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputApprove(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.APPROVE);
     }
 
@@ -761,7 +730,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputCancel(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputCancel(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.CANCEL);
     }
 
@@ -770,7 +739,7 @@ public class ValidateUtil {
      *
      * @param structureElement structure element
      */
-    public static void validateStructureElementInputReject(StructureElement structureElement, EssNamingConvention namingConvention) {
+    public static void validateStructureElementInputReject(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
         validateStructureElementInput(structureElement, namingConvention, StructureChoice.REJECT);
     }
 
@@ -780,7 +749,7 @@ public class ValidateUtil {
      * @param structureElement structure element
      * @param structureChoice structure choice
      */
-    private static void validateStructureElementInput(StructureElement structureElement, EssNamingConvention namingConvention, StructureChoice structureChoice) {
+    private static void validateStructureElementInput(StructureElementCommand structureElement, EssNamingConvention namingConvention, StructureChoice structureChoice) {
         // check structure element input
         //     parent uuid            - also validate data, parent uuid available if type is system, subsystem, device group, device type
         //     name                   - required
@@ -798,29 +767,32 @@ public class ValidateUtil {
 
         validateInputType(structureElement.getType());
 
-        if (Type.SYSTEM.equals(structureElement.getType())) {
-            validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
-            ValidateUtil.validateInputUuid(structureElement.getParent().toString());
-        } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-            validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
-            ValidateUtil.validateInputUuid(structureElement.getParent().toString());
-        } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-            validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
-            ValidateUtil.validateInputUuid(structureElement.getParent().toString());
-        } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-            validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
-            ValidateUtil.validateInputUuid(structureElement.getParent().toString());
-        }
+        if (!StructureChoice.DELETE.equals(structureChoice)) {
+            if (Type.SYSTEM.equals(structureElement.getType())) {
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                ValidateUtil.validateInputUuid(structureElement.getParent().toString());
+            } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                ValidateUtil.validateInputUuid(structureElement.getParent().toString());
+            } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                ValidateUtil.validateInputUuid(structureElement.getParent().toString());
+            } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                ValidateUtil.validateInputUuid(structureElement.getParent().toString());
+            }
 
-        validateInputName(structureElement.getName());
+            validateInputName(structureElement.getName());
 
-        // validate mnemonic
-        //     validate mnemonic input (value itself, not in relation to other values)
-        //     validateMnemonic takes isMnemonicRequired into account
-        MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(structureElement.getType(), structureElement.getMnemonic());
-        validateCondition(MnemonicValidation.VALID.equals(mnemonicValidation), HttpStatus.BAD_REQUEST, "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString());
+            // validate mnemonic
+            //     validate mnemonic input (value itself, not in relation to other values)
+            //     validateMnemonic takes isMnemonicRequired into account
+            MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(structureElement.getType(), structureElement.getMnemonic());
+            validateCondition(MnemonicValidation.VALID.equals(mnemonicValidation), HttpStatus.BAD_REQUEST, "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString());
+
+            validateInputDescription(structureElement.getDescription());
+        }
 
-        validateInputDescription(structureElement.getDescription());
         validateInputComment(structureElement.getComment());
     }
 
@@ -834,7 +806,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataCreate(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataCreate(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.CREATE);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.CREATE);
     }
@@ -847,7 +819,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataUpdate(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataUpdate(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.UPDATE);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.UPDATE);
     }
@@ -860,7 +832,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataDelete(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataDelete(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.DELETE);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.DELETE);
     }
@@ -873,7 +845,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataApprove(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataApprove(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.APPROVE);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.APPROVE);
     }
@@ -886,7 +858,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataCancel(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataCancel(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.CANCEL);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.CANCEL);
     }
@@ -899,7 +871,7 @@ public class ValidateUtil {
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataReject(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+    public static void validateStructureElementDataReject(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
         validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureChoice.REJECT);
         validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureChoice.REJECT);
     }
@@ -913,7 +885,7 @@ public class ValidateUtil {
      * @param holder
      * @param structureChoice
      */
-    public static void validateStructureElementDataInItself(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureChoice structureChoice) {
+    public static void validateStructureElementDataInItself(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureChoice structureChoice) {
         // check structure element data in itself
         //     update, delete
         //         definitely (not possibly)
@@ -1020,7 +992,7 @@ public class ValidateUtil {
      * @param holder holder
      * @param structureChoice structure choice
      */
-    public static void validateStructureElementDataRelativeOtherData(StructureElement structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureChoice structureChoice) {
+    public static void validateStructureElementDataRelativeOtherData(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureChoice structureChoice) {
         // check structure element data in relation to other data
         //     create, update
         //         parent uuid          - (if applicable) approved, latest, not deleted
diff --git a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
index fbeba62342d3a7865736c29baeca51f8f8bec5e0..da3d4709566eff49363ea225d7fa65701a40359b 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
@@ -30,11 +30,12 @@ import java.util.UUID;
 
 import org.openepics.names.docker.ITUtil.AuthorizationChoice;
 import org.openepics.names.docker.ITUtil.EndpointChoice;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageNameElements;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
 import org.openepics.names.util.EnumUtil.NameChoice;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -164,6 +165,24 @@ public class ITUtilNameElement {
         assertEquals(expectedComment, actual.getComment());
     }
 
+    /**
+     * Assert content of name element.
+     *
+     * @param actual name element
+     * @param expected name element command
+     */
+    static void assertContent(NameElement actual, NameElementCommand expected) {
+        assertNotNull(actual);
+        if (expected != null) {
+            assertEquals(expected.getUuid(), actual.getUuid());
+            assertEquals(expected.getParentsystemstructure(), actual.getParentsystemstructure());
+            assertEquals(expected.getParentdevicestructure(), actual.getParentdevicestructure());
+            assertEquals(expected.getIndex(), actual.getIndex());
+            assertEquals(expected.getDescription(), actual.getDescription());
+            assertEquals(expected.getComment(), actual.getComment());
+        }
+    }
+
     // ----------------------------------------------------------------------------------------------------
 
     /**
@@ -331,16 +350,15 @@ public class ITUtilNameElement {
     }
 
     /**
-     * Utility method to set name element attributes name and index and then validate create and assert expected response.
+     * Utility method to validate and assert expected response.
      *
      * @param nameElement name element
      * @param nameChoice name choice
-     * @param name name
      * @param index index
      * @param expected expected response
      */
-    public static void assertValidate(NameElement nameElement, NameChoice nameChoice, String name, String index, Boolean expected) {
-        nameElement.setNameAndIndex(name, index);
+    public static void assertValidate(NameElementCommand nameElement, NameChoice nameChoice, String index, Boolean expected) {
+        nameElement.setIndex(index);
         assertValidate(nameElement, nameChoice, expected);
     }
 
@@ -351,7 +369,7 @@ public class ITUtilNameElement {
      * @param nameChoice name choice
      * @param expected expected response
      */
-    public static void assertValidate(NameElement nameElement, NameChoice nameChoice, Boolean expected) {
+    public static void assertValidate(NameElementCommand nameElement, NameChoice nameChoice, Boolean expected) {
         String validatePath = getValidatePath(nameChoice);
 
         try {
@@ -405,7 +423,7 @@ public class ITUtilNameElement {
      * @param responseCode response code
      * @throws JsonProcessingException
      */
-    public static void assertCreate(NameElement nameElement, int responseCode) throws JsonProcessingException {
+    public static void assertCreate(NameElementCommand nameElement, int responseCode) throws JsonProcessingException {
         ObjectMapper mapper = new ObjectMapper();
         assertCreate("[" + mapper.writeValueAsString(nameElement) + "]", responseCode);
     }
@@ -438,7 +456,7 @@ public class ITUtilNameElement {
      * @param nameElement name element
      * @return created name element
      */
-    static NameElement assertCreate(NameElement nameElement) {
+    static NameElement assertCreate(NameElementCommand nameElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -460,12 +478,9 @@ public class ITUtilNameElement {
             uuid = createdNameElement.getUuid();
             nameElement.setUuid(uuid);
 
-            ITUtilNameElement.assertContent(createdNameElement,
-                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
-                    nameElement.getSystemstructure(), nameElement.getDevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(),
-                    nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.FALSE,
-                    "test who", nameElement.getComment());
+            ITUtilNameElement.assertContent(createdNameElement, nameElement);
+            assertEquals(Boolean.TRUE, createdNameElement.isLatest());
+            assertEquals(Boolean.FALSE, createdNameElement.isDeleted());
             assertNotNull(createdNameElement.getWhen());
 
             return createdNameElement;
@@ -486,7 +501,7 @@ public class ITUtilNameElement {
      * @param nameElement name element
      * @return updated name element
      */
-    static NameElement assertUpdate(NameElement nameElement) {
+    static NameElement assertUpdate(NameElementCommand nameElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -508,12 +523,9 @@ public class ITUtilNameElement {
             uuid = updatedNameElement.getUuid();
             nameElement.setUuid(uuid);
 
-            ITUtilNameElement.assertContent(updatedNameElement,
-                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
-                    nameElement.getSystemstructure(), nameElement.getDevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(),
-                    nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.FALSE,
-                    "test who", nameElement.getComment());
+            ITUtilNameElement.assertContent(updatedNameElement, nameElement);
+            assertEquals(Boolean.TRUE, updatedNameElement.isLatest());
+            assertEquals(Boolean.FALSE, updatedNameElement.isDeleted());
             assertNotNull(updatedNameElement.getWhen());
 
             return updatedNameElement;
@@ -534,7 +546,7 @@ public class ITUtilNameElement {
      * @param nameElement name element
      * @return deleted name element
      */
-    static NameElement assertDelete(NameElement nameElement) {
+    static NameElement assertDelete(NameElementCommand nameElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -556,12 +568,9 @@ public class ITUtilNameElement {
             uuid = deletedNameElement.getUuid();
             nameElement.setUuid(uuid);
 
-            ITUtilNameElement.assertContent(deletedNameElement,
-                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
-                    nameElement.getSystemstructure(), nameElement.getDevicestructure(),
-                    nameElement.getIndex(), nameElement.getName(),
-                    nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.TRUE,
-                    "test who", nameElement.getComment());
+            ITUtilNameElement.assertContent(deletedNameElement, nameElement);
+            assertEquals(Boolean.TRUE, deletedNameElement.isLatest());
+            assertEquals(Boolean.TRUE, deletedNameElement.isDeleted());
             assertNotNull(deletedNameElement.getWhen());
 
             return deletedNameElement;
diff --git a/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java b/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
index 350602c7ce33e868bf0c0ea84bafbb8f80ca637f..830d2167a379436422b987ee9d7f312ac489030e 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
@@ -31,11 +31,12 @@ import java.util.UUID;
 import org.openepics.names.docker.ITUtil.AuthorizationChoice;
 import org.openepics.names.docker.ITUtil.EndpointChoice;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
@@ -164,6 +165,26 @@ public class ITUtilStructureElement {
         assertEquals(expectedComment, actual.getComment());
     }
 
+    /**
+     * Assert content of structure element.
+     *
+     * @param actual structure element
+     * @param expected structure element command
+     */
+    static void assertContent(StructureElement actual, StructureElementCommand expected) {
+        assertNotNull(actual);
+        if (expected != null) {
+            assertEquals(expected.getUuid(), actual.getUuid());
+            assertEquals(expected.getType(), actual.getType());
+            assertEquals(expected.getParent(), actual.getParent());
+            assertEquals(expected.getName(), actual.getName());
+            assertEquals(expected.getMnemonic(), actual.getMnemonic());
+            assertEquals(expected.getDescription(), actual.getDescription());
+            assertEquals(expected.getComment(), actual.getComment());
+        }
+    }
+
+
     // ----------------------------------------------------------------------------------------------------
 
     /**
@@ -310,7 +331,7 @@ public class ITUtilStructureElement {
      * @param structureChoice structure choice
      * @param expected expected response
      */
-    public static void assertValidate(StructureElement structureElement, StructureChoice structureChoice, Boolean expected) {
+    public static void assertValidate(StructureElementCommand structureElement, StructureChoice structureChoice, Boolean expected) {
         String validatePath = getValidatePath(structureChoice);
 
         try {
@@ -373,7 +394,7 @@ public class ITUtilStructureElement {
      * @param responseCode response code
      * @throws JsonProcessingException
      */
-    public static void assertCreate(StructureElement structureElement, int responseCode) throws JsonProcessingException {
+    public static void assertCreate(StructureElementCommand structureElement, int responseCode) throws JsonProcessingException {
         ObjectMapper mapper = new ObjectMapper();
         assertCreate("[" + mapper.writeValueAsString(structureElement) + "]", responseCode);
     }
@@ -406,7 +427,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return created structure element
      */
-    public static StructureElement assertCreate(StructureElement structureElement) {
+    public static StructureElement assertCreate(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -428,11 +449,10 @@ public class ITUtilStructureElement {
             uuid = createdStructureElement.getUuid();
             structureElement.setUuid(uuid);
 
-            ITUtilStructureElement.assertContent(createdStructureElement,
-                    structureElement.getType(), uuid, structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    "test who", structureElement.getComment());
+            ITUtilStructureElement.assertContent(createdStructureElement, structureElement);
+            assertEquals(Status.PENDING, createdStructureElement.getStatus());
+            assertEquals(Boolean.FALSE, createdStructureElement.isLatest());
+            assertEquals(Boolean.FALSE, createdStructureElement.isDeleted());
             assertNotNull(createdStructureElement.getWhen());
 
             return createdStructureElement;
@@ -453,7 +473,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return updated structure element
      */
-    public static StructureElement assertUpdate(StructureElement structureElement) {
+    public static StructureElement assertUpdate(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -475,11 +495,10 @@ public class ITUtilStructureElement {
             uuid = updatedStructureElement.getUuid();
             structureElement.setUuid(uuid);
 
-            ITUtilStructureElement.assertContent(updatedStructureElement,
-                    structureElement.getType(), uuid, structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    "test who", structureElement.getComment());
+            ITUtilStructureElement.assertContent(updatedStructureElement, structureElement);
+            assertEquals(Status.PENDING, updatedStructureElement.getStatus());
+            assertEquals(Boolean.FALSE, updatedStructureElement.isLatest());
+            assertEquals(Boolean.FALSE, updatedStructureElement.isDeleted());
             assertNotNull(updatedStructureElement.getWhen());
 
             return updatedStructureElement;
@@ -500,7 +519,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return deleted structure element
      */
-    public static StructureElement assertDelete(StructureElement structureElement) {
+    public static StructureElement assertDelete(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -522,11 +541,10 @@ public class ITUtilStructureElement {
             uuid = deletedStructureElement.getUuid();
             structureElement.setUuid(uuid);
 
-            ITUtilStructureElement.assertContent(deletedStructureElement,
-                    structureElement.getType(), uuid, structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                    "test who", structureElement.getComment());
+            ITUtilStructureElement.assertContent(deletedStructureElement, structureElement);
+            assertEquals(Status.PENDING, deletedStructureElement.getStatus());
+            assertEquals(Boolean.FALSE, deletedStructureElement.isLatest());
+            assertEquals(Boolean.TRUE, deletedStructureElement.isDeleted());
             assertNotNull(deletedStructureElement.getWhen());
 
             return deletedStructureElement;
@@ -547,7 +565,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return approved structure element
      */
-    public static StructureElement assertApprove(StructureElement structureElement) {
+    public static StructureElement assertApprove(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -563,11 +581,11 @@ public class ITUtilStructureElement {
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             approvedStructureElements = mapper.readValue(response[1], StructureElement[].class);
             approvedStructureElement = ITUtilStructureElement.assertContentLengthOne(approvedStructureElements);
-            ITUtilStructureElement.assertContent(approvedStructureElement,
-                    structureElement.getType(), structureElement.getUuid(), structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.APPROVED, Boolean.TRUE, structureElement.isDeleted(),
-                    "test who", "test comment");
+
+            ITUtilStructureElement.assertContent(approvedStructureElement, structureElement);
+            assertEquals(Status.APPROVED, approvedStructureElement.getStatus());
+            assertEquals(Boolean.TRUE, approvedStructureElement.isLatest());
+            // not known if deleted
             assertNotNull(approvedStructureElement.getWhen());
 
             return approvedStructureElement;
@@ -588,7 +606,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return cancelled structure element
      */
-    public static StructureElement assertCancel(StructureElement structureElement) {
+    public static StructureElement assertCancel(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -604,11 +622,11 @@ public class ITUtilStructureElement {
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             cancelledStructureElements = mapper.readValue(response[1], StructureElement[].class);
             cancelledStructureElement = ITUtilStructureElement.assertContentLengthOne(cancelledStructureElements);
-            ITUtilStructureElement.assertContent(cancelledStructureElement,
-                    structureElement.getType(), structureElement.getUuid(), structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.CANCELLED, Boolean.FALSE, structureElement.isDeleted(),
-                    "test who", "test comment");
+
+            ITUtilStructureElement.assertContent(cancelledStructureElement, structureElement);
+            assertEquals(Status.CANCELLED, cancelledStructureElement.getStatus());
+            assertEquals(Boolean.FALSE, cancelledStructureElement.isLatest());
+            // not known if deleted
             assertNotNull(cancelledStructureElement.getWhen());
 
             return cancelledStructureElement;
@@ -629,7 +647,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return rejected structure element
      */
-    public static StructureElement assertReject(StructureElement structureElement) {
+    public static StructureElement assertReject(StructureElementCommand structureElement) {
         try {
             ObjectMapper mapper = new ObjectMapper();
             String[] response = null;
@@ -645,11 +663,11 @@ public class ITUtilStructureElement {
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             rejectedStructureElements = mapper.readValue(response[1], StructureElement[].class);
             rejectedStructureElement = ITUtilStructureElement.assertContentLengthOne(rejectedStructureElements);
-            ITUtilStructureElement.assertContent(rejectedStructureElement,
-                    structureElement.getType(), structureElement.getUuid(), structureElement.getParent(),
-                    structureElement.getName(), structureElement.getMnemonic(), structureElement.getMnemonicpath(), structureElement.getLevel(),
-                    structureElement.getDescription(), Status.REJECTED, Boolean.FALSE, structureElement.isDeleted(),
-                    "test who", "test comment");
+
+            ITUtilStructureElement.assertContent(rejectedStructureElement, structureElement);
+            assertEquals(Status.REJECTED, rejectedStructureElement.getStatus());
+            assertEquals(Boolean.FALSE, rejectedStructureElement.isLatest());
+            // not known if deleted
             assertNotNull(rejectedStructureElement.getWhen());
 
             return rejectedStructureElement;
@@ -670,7 +688,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return approved structure element (after create)
      */
-    public static StructureElement assertCreateApprove(StructureElement structureElement) {
+    public static StructureElement assertCreateApprove(StructureElementCommand structureElement) {
         return assertApprove(assertCreate(structureElement));
     }
 
@@ -680,7 +698,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return cancelled structure element (after create)
      */
-    public static StructureElement assertCreateCancel(StructureElement structureElement) {
+    public static StructureElement assertCreateCancel(StructureElementCommand structureElement) {
         return assertCancel(assertCreate(structureElement));
     }
 
@@ -690,7 +708,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return rejected structure element (after create)
      */
-    public static StructureElement assertCreateReject(StructureElement structureElement) {
+    public static StructureElement assertCreateReject(StructureElementCommand structureElement) {
         return assertReject(assertCreate(structureElement));
     }
 
@@ -700,7 +718,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return approved structure element (after update)
      */
-    public static StructureElement assertUpdateApprove(StructureElement structureElement) {
+    public static StructureElement assertUpdateApprove(StructureElementCommand structureElement) {
         return assertApprove(assertUpdate(structureElement));
     }
 
@@ -710,7 +728,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return cancelled structure element (after update)
      */
-    public static StructureElement assertUpdateCancel(StructureElement structureElement) {
+    public static StructureElement assertUpdateCancel(StructureElementCommand structureElement) {
         return assertCancel(assertUpdate(structureElement));
     }
 
@@ -720,7 +738,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return rejected structure element (after update)
      */
-    public static StructureElement assertUpdateReject(StructureElement structureElement) {
+    public static StructureElement assertUpdateReject(StructureElementCommand structureElement) {
         return assertReject(assertUpdate(structureElement));
     }
 
@@ -730,7 +748,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return approved structure element (after delete)
      */
-    public static StructureElement assertDeleteApprove(StructureElement structureElement) {
+    public static StructureElement assertDeleteApprove(StructureElementCommand structureElement) {
         return assertApprove(assertDelete(structureElement));
     }
 
@@ -740,7 +758,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return cancelled structure element (after delete)
      */
-    public static StructureElement assertDeleteCancel(StructureElement structureElement) {
+    public static StructureElement assertDeleteCancel(StructureElementCommand structureElement) {
         return assertCancel(assertDelete(structureElement));
     }
 
@@ -750,7 +768,7 @@ public class ITUtilStructureElement {
      * @param structureElement structure element
      * @return rejected structure element (after delete)
      */
-    public static StructureElement assertDeleteReject(StructureElement structureElement) {
+    public static StructureElement assertDeleteReject(StructureElementCommand structureElement) {
         return assertReject(assertDelete(structureElement));
     }
 
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index 8b393d4367fa633e7ceb33f71c14e971491c25d9..c1e296870cce0f65a2b667c1dbbd60d45a9fee8b 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -27,10 +27,11 @@ import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.NameElement;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.NameElement;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.NameChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -52,6 +53,12 @@ import com.fasterxml.jackson.databind.ObjectMapper;
 @Testcontainers
 public class NamesIT {
 
+    // note
+    //     NameElement extends NameElementCommand, StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send
+    //     NameElement, StructureElement
+
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
         new DockerComposeContainer<>(new File("docker-compose-it-db-schema-migration.yml"))
@@ -73,86 +80,76 @@ public class NamesIT {
     public static void initAll() {
         // init system group, system, subsystem, discipline, device group, device type
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "Accelerator", "Acc", "Acc", 1,
-                "The ESS Linear Accelerator", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "approved by alfio");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "Accelerator", "Acc",
+                "The ESS Linear Accelerator", "approved by alfio");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupAcc,
-                "Radio Frequency Quadrupole", "RFQ", "RFQ", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupAcc,
+                "Radio Frequency Quadrupole", "RFQ",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemRFQ = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "01 Phase Reference Line", "010PRL", "RFQ-010PRL", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "01 Phase Reference Line", "010PRL",
+                "empty", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystem010PRL = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "RFQ-010", "010", "RFQ-010", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "RFQ-010", "010",
+                "empty", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystem010 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "Power switch board 01", "N1U1", "RFQ-N1U1", 3,
-                "Electrical power cabinets", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "Power switch board 01", "N1U1",
+                "Electrical power cabinets", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystemN1U1 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Electromagnetic Resonators", "EMR", "EMR", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Electromagnetic Resonators", "EMR",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineEMR,
-                "Control", null, "EMR", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "These names are needed now, so I am approving, but please add a description to these later.");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineEMR,
+                "Control", null,
+                "empty", "These names are needed now, so I am approving, but please add a description to these later.");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "Flow Switch", "FS", "EMR-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approve names added from misc device group");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "Flow Switch", "FS",
+                "empty", "Approve names added from misc device group");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceTypeFS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "RF Antenna", "RFA", "EMR-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approve names added from misc device group");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "RF Antenna", "RFA",
+                "empty", "Approve names added from misc device group");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceTypeRFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "Temperature Transmitter", "TT", "EMR-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approve names added from misc device group");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "Temperature Transmitter", "TT",
+                "empty", "Approve names added from misc device group");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceTypeTT = approvedStructureElement.getUuid();
     }
@@ -212,9 +209,16 @@ public class NamesIT {
         //     read        is legacy name
         //     read        is valid to create
         //     read        validate create
+        //
+        // validate create
+        //         system structure
+        //     or  system structure + device structure + index
+        //     +
+        //     description
+        //     comment
 
         try {
-            NameElement nameElement = new NameElement();
+            NameElementCommand nameElement = new NameElementCommand();
 
             ITUtilNameElement.assertExists("RFQ-010PRL:EMR-RFA-051", Boolean.FALSE);
             ITUtilNameElement.assertIsLegacy("RFQ-010PRL:EMR-RFA-051", Boolean.FALSE);
@@ -228,6 +232,12 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
+            // ----------
+            // system structure
+            //     subsystem
+            // description
+            // comment
+
             nameElement.setDescription("description");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
@@ -239,14 +249,11 @@ public class NamesIT {
             nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
-            nameElement.setName("RFQ-010PRL");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
-
             // ----------
-
-            nameElement.setName("RFQ-010PRL:EMR-RFA-051");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
-            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+            // system structure + device structure + index
+            //     subsystem, device type
+            // description
+            // comment
 
             nameElement.setIndex("051");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
@@ -258,23 +265,26 @@ public class NamesIT {
             // ----------
 
             nameElement.setParentsystemstructure(null);
-            nameElement.setName(null);
             nameElement.setIndex(null);
             nameElement.setParentdevicestructure(null);
 
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
+            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+
             // ----------
+            // system structure
+            //     system
+            // description
+            // comment
 
             nameElement.setParentsystemstructure(systemRFQ);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
-            nameElement.setName("RFQ");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
-
             // ----------
-
-            nameElement.setName("RFQ:EMR-RFA-051");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
-            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+            // system structure + device structure + index
+            //     system, device type
+            // description
+            // comment
 
             nameElement.setIndex("051");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
@@ -286,32 +296,59 @@ public class NamesIT {
             // ----------
 
             nameElement.setParentsystemstructure(null);
-            nameElement.setName(null);
             nameElement.setIndex(null);
             nameElement.setParentdevicestructure(null);
 
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
+            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+
             // ----------
+            // system structure
+            //     system group
+            // description
+            // comment
 
             nameElement.setParentsystemstructure(systemGroupAcc);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
-            nameElement.setName("Acc");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
-
             // ----------
-
-            nameElement.setName("Acc:EMR-RFA-051");
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
-            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+            // system structure + device structure + index
+            //     system group, device type
+            // description
+            // comment
 
             nameElement.setIndex("051");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
             nameElement.setParentdevicestructure(deviceTypeTT);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
+
+            nameElement.setParentdevicestructure(deviceTypeRFA);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
+
+            // ----------
+
+            nameElement.setParentsystemstructure(null);
+            nameElement.setIndex(null);
+            nameElement.setParentdevicestructure(null);
+
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
+            ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
+
+            // ----------
+            // system structure + device structure
+            //     system, device type
+            // description
+            // comment
+
+            nameElement.setParentsystemstructure(systemRFQ);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             nameElement.setParentdevicestructure(deviceTypeRFA);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
+
+            nameElement.setIndex("051");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
         } catch (IOException e) {
             fail();
@@ -338,25 +375,16 @@ public class NamesIT {
         try {
             ObjectMapper mapper = new ObjectMapper();
 
-            NameElement nameElement        = null;
-            NameElement nameElement2       = null;
-            NameElement createdNameElement = null;
+            NameElementCommand nameElement  = null;
+            NameElementCommand nameElement2 = null;
+
+            nameElement = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "052",
+                    "description", "comment");
 
-            nameElement = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "052", "RFQ-010PRL:EMR-RFA-052",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
-
-            nameElement2 = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "062", "RFQ-010PRL:EMR-RFA-061",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
+            nameElement2 = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "061",
+                    "description", "comment");
 
             ITUtilNameElement.assertExists("RFQ-010PRL:EMR-RFA-052", Boolean.FALSE);
             ITUtilNameElement.assertIsLegacy("RFQ-010PRL:EMR-RFA-052", Boolean.FALSE);
@@ -364,13 +392,13 @@ public class NamesIT {
 
             ITUtilNameElement.assertValidate(
                     "[" + mapper.writeValueAsString(nameElement) + ","+mapper.writeValueAsString(nameElement2) +"]",
-                    NameChoice.CREATE, HttpURLConnection.HTTP_OK, Boolean.FALSE, Boolean.FALSE);
+                    NameChoice.CREATE, HttpURLConnection.HTTP_OK, Boolean.TRUE, Boolean.TRUE);
 
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
+            ITUtilNameElement.assertValidate(nameElement,  NameChoice.CREATE, Boolean.TRUE);
+            ITUtilNameElement.assertValidate(nameElement2, NameChoice.CREATE, Boolean.TRUE);
 
             // create
-            createdNameElement = ITUtilNameElement.assertCreate(nameElement);
-            nameElement = createdNameElement;
+            ITUtilNameElement.assertCreate(nameElement);
 
             ITUtilNameElement.assertExists("RFQ-010PRL:EMR-RFA-052", Boolean.TRUE);
             ITUtilNameElement.assertIsLegacy("RFQ-010PRL:EMR-RFA-052", Boolean.FALSE);
@@ -397,25 +425,33 @@ public class NamesIT {
         //
         // note
         //     create in order to update
+        //
+        // validate update
+        //     uuid
+        //     +
+        //         system structure
+        //     or  system structure + device structure + index
+        //     +
+        //     description
+        //     comment
 
         try {
-            NameElement nameElement        = null;
+            NameElementCommand nameElement = null;
             NameElement createdNameElement = null;
 
-            nameElement = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "053", "RFQ-010PRL:EMR-RFA-053",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
+            nameElement = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "053",
+                    "description", "comment");
 
             // create
             createdNameElement = ITUtilNameElement.assertCreate(nameElement);
-            nameElement = createdNameElement;
 
             // validate update
 
+            nameElement.setUuid(null);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
+
+            nameElement.setUuid(createdNameElement.getUuid());
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
             nameElement.setDescription(null);
@@ -430,42 +466,50 @@ public class NamesIT {
             nameElement.setComment("checkUpdate");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
+            // ----------
+
             nameElement.setParentsystemstructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
             nameElement.setParentsystemstructure(systemGroupAcc);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
             nameElement.setParentsystemstructure(null);
-            nameElement.setParentsystemstructure(systemRFQ);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
+            nameElement.setParentsystemstructure(systemRFQ);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
+
             nameElement.setParentsystemstructure(null);
-            nameElement.setParentsystemstructure(subsystemN1U1);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
+            nameElement.setParentsystemstructure(subsystemN1U1);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
+
             nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
+            // ----------
+
             nameElement.setParentdevicestructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setParentdevicestructure(deviceGroupEMR);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
+            nameElement.setIndex(null);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
-            nameElement.setParentdevicestructure(deviceTypeFS);
+            nameElement.setIndex("053");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setParentdevicestructure(deviceTypeTT);
+            nameElement.setParentdevicestructure(deviceGroupEMR);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setParentdevicestructure(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeFS);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
-            nameElement.setName(null);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
+            nameElement.setParentdevicestructure(deviceTypeTT);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
-            nameElement.setName("RFQ-010PRL:EMR-RFA-053");
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
             nameElement.setIndex(null);
@@ -495,23 +539,16 @@ public class NamesIT {
         //     create in order to update
 
         try {
-            NameElement nameElement        = null;
-            NameElement createdNameElement = null;
-            NameElement updatedNameElement = null;
+            NameElementCommand nameElement = null;
 
-            nameElement = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "054", "RFQ-010PRL:EMR-RFA-054",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
+            nameElement = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "054",
+                    "description", "comment");
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
             // create
-            createdNameElement = ITUtilNameElement.assertCreate(nameElement);
-            nameElement = createdNameElement;
+            ITUtilNameElement.assertCreate(nameElement);
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
@@ -521,8 +558,9 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
             // update
-            updatedNameElement = ITUtilNameElement.assertUpdate(nameElement);
-            nameElement = updatedNameElement;
+            ITUtilNameElement.assertUpdate(nameElement);
+            nameElement.setDescription("another description");
+            nameElement.setComment("another comment");
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
@@ -543,29 +581,27 @@ public class NamesIT {
         //
         // note
         //     create in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     comment
 
         try {
-            NameElement nameElement        = null;
-            NameElement createdNameElement = null;
+            NameElementCommand nameElement = null;
 
-            nameElement = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "055", "RFQ-010PRL:EMR-RFA-055",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
+            nameElement = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "055",
+                    "description", "comment");
 
             // create
-            createdNameElement = ITUtilNameElement.assertCreate(nameElement);
-            nameElement = createdNameElement;
+            ITUtilNameElement.assertCreate(nameElement);
 
             // validate delete
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setDescription(null);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setDescription("checkDelete");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
@@ -576,17 +612,19 @@ public class NamesIT {
             nameElement.setComment("checkDelete");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
+            // system structure not used for validation
+
             nameElement.setParentsystemstructure(systemGroupAcc);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setParentsystemstructure(null);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setParentsystemstructure(systemRFQ);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setParentsystemstructure(null);
-            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
@@ -596,9 +634,13 @@ public class NamesIT {
             nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
-            // name, index not used for validation
+            // index not used for validation
 
-            // system structure, device structure not used for validation
+            nameElement.setIndex(null);
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
+
+            nameElement.setIndex("055");
+            ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -619,17 +661,13 @@ public class NamesIT {
         //     create in order to delete
 
         try {
-            NameElement nameElement        = null;
+            NameElementCommand nameElement = null;
             NameElement createdNameElement = null;
             NameElement deletedNameElement = null;
 
-            nameElement = new NameElement(
-                    null,
-                    subsystem010PRL, deviceTypeRFA,
-                    "RFQ-010PRL", "EMR-RFA",
-                    "056", "RFQ-010PRL:EMR-RFA-056",
-                    "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                    null, "test who", "comment");
+            nameElement = new NameElementCommand(
+                    null, subsystem010PRL, deviceTypeRFA, "056",
+                    "description", "comment");
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
 
@@ -641,7 +679,6 @@ public class NamesIT {
 
             nameElement.setDescription("deleted description");
             nameElement.setComment("deleted comment");
-            nameElement.setDeleted(Boolean.TRUE);
 
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
@@ -667,88 +704,56 @@ public class NamesIT {
         // note
         //     create (and more) to read (with content)
 
-        NameElement nameElement         = null;
+        NameElementCommand nameElement  = null;
         NameElement responseNameElement = null;
         UUID uuid, uuid2 = null;
 
         NameElement nameElement1, nameElement7, nameElement8 = null;
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "001", "RFQ-010:EMR-FS-001",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "001",
+                "description", "comment");
 
         // create
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
         nameElement1 = responseNameElement;
         uuid = responseNameElement.getUuid();
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "002", "RFQ-010:EMR-FS-002",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "002",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
         uuid2 = responseNameElement.getUuid();
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "003", "RFQ-010:EMR-FS-003",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "003",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "004", "RFQ-010:EMR-FS-004",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "004",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "005", "RFQ-010:EMR-FS-005",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "005",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "006", "RFQ-010:EMR-FS-006",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "006",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "007", "RFQ-010:EMR-FS-007",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "007",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
         nameElement7 = responseNameElement;
 
-        nameElement = new NameElement(
-                null,
-                subsystem010, deviceTypeFS,
-                "RFQ-010", "EMR-FS",
-                "008", "RFQ-010:EMR-FS-008",
-                "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
-                null, "test who", "comment");
+        nameElement = new NameElementCommand(
+                null, subsystem010, deviceTypeFS, "008",
+                "description", "comment");
         responseNameElement = ITUtilNameElement.assertCreate(nameElement);
         nameElement8 = responseNameElement;
 
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
index 34669241748e240a01edcbdea41017390b823688..e0752d90dbe0eee8acc34081faefe8f767c9478f 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
@@ -29,9 +29,9 @@ import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -68,6 +68,10 @@ public class StructuresDeviceGroupIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -81,24 +85,22 @@ public class StructuresDeviceGroupIT {
     public static void initAll() {
         // init discipline
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-              Type.DISCIPLINE, null, null,
-              "name", "Di", "Di", 1,
-              "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-              null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "Di",
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "Di2", "Di2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
-          approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-          discipline2Uuid = approvedStructureElement.getUuid();
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "Di2",
+                "description", "comment");
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        discipline2Uuid = approvedStructureElement.getUuid();
     }
 
     @Test
@@ -122,9 +124,17 @@ public class StructuresDeviceGroupIT {
         //     read        exists in structure
         //     read        is valid to create
         //     read        validate create
+        //
+        // validate create
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "CC", Boolean.FALSE);
@@ -181,7 +191,7 @@ public class StructuresDeviceGroupIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.DEVICEGROUP);
             structureElement.setParent(disciplineUuid);
@@ -296,38 +306,33 @@ public class StructuresDeviceGroupIT {
         //     create in order to approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -351,38 +356,33 @@ public class StructuresDeviceGroupIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -406,38 +406,33 @@ public class StructuresDeviceGroupIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -461,27 +456,40 @@ public class StructuresDeviceGroupIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElementCommand();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -491,12 +499,6 @@ public class StructuresDeviceGroupIT {
             structureElement.setType(Type.DEVICEGROUP);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setParent(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -548,18 +550,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update approve check");
 
@@ -567,14 +565,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -602,19 +599,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update cancel check");
 
@@ -622,15 +614,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -658,19 +648,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update reject check");
 
@@ -678,15 +663,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -710,27 +693,36 @@ public class StructuresDeviceGroupIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -740,32 +732,26 @@ public class StructuresDeviceGroupIT {
             structureElement.setType(Type.DEVICEGROUP);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setParent(disciplineUuid);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -797,18 +783,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -816,15 +798,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -852,19 +832,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -872,15 +847,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -908,19 +881,14 @@ public class StructuresDeviceGroupIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICEGROUP, null, disciplineUuid,
-                    "name", null, "Di", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -928,15 +896,13 @@ public class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -957,20 +923,18 @@ public class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", -1, 1);
@@ -1041,20 +1005,18 @@ public class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", -1, 1);
@@ -1125,20 +1087,18 @@ public class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICEGROUP, null, disciplineUuid,
-                  "name", null, "Di", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICEGROUP, disciplineUuid,
+                    "name", null,
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", -1, 1);
@@ -1227,43 +1187,39 @@ public class StructuresDeviceGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1333,112 +1289,108 @@ public class StructuresDeviceGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1493,149 +1445,114 @@ public class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1643,11 +1560,10 @@ public class StructuresDeviceGroupIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1658,14 +1574,12 @@ public class StructuresDeviceGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1676,14 +1590,12 @@ public class StructuresDeviceGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1694,14 +1606,12 @@ public class StructuresDeviceGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1712,14 +1622,12 @@ public class StructuresDeviceGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1730,107 +1638,86 @@ public class StructuresDeviceGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, discipline2Uuid,
-                "name", null, "Di2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, discipline2Uuid,
+                "name", null,
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 device group entries
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
index 22d5449d823dd4b6678002c9fe54079dbbc91823..bccffd7efead7f38c9fd2222cd63590a20b8f231 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
@@ -29,9 +29,9 @@ import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -68,6 +68,10 @@ public class StructuresDeviceTypeIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -81,22 +85,20 @@ public class StructuresDeviceTypeIT {
     public static void initAll() {
         // init discipline, device group
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-              Type.DISCIPLINE, null, null,
-              "name", "Di", "Di", 1,
-              "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-              null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "Di",
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineUuid,
-                "name", null, "Di", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineUuid,
+                "name", null,
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupUuid = approvedStructureElement.getUuid();
     }
@@ -122,9 +124,17 @@ public class StructuresDeviceTypeIT {
         //     read        exists in structure
         //     read        is valid to create
         //     read        validate create
+        //
+        // validate create
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "CC", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Cc", Boolean.FALSE);
@@ -193,7 +203,7 @@ public class StructuresDeviceTypeIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.DEVICETYPE);
             structureElement.setParent(deviceGroupUuid);
@@ -308,38 +318,33 @@ public class StructuresDeviceTypeIT {
         //     create in order to approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Ca", "Di-Ca", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Ca",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -363,38 +368,33 @@ public class StructuresDeviceTypeIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Cc", "Di-Cc", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Cc",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -418,38 +418,33 @@ public class StructuresDeviceTypeIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Cr", "Di-Cr", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Cr",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -473,27 +468,40 @@ public class StructuresDeviceTypeIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElement();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Cu", "Di-Cu", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Cu",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -503,12 +511,6 @@ public class StructuresDeviceTypeIT {
             structureElement.setType(Type.DEVICETYPE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setParent(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -560,18 +562,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Ua", "Di-Ua", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Ua",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update approve check");
 
@@ -579,14 +577,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -614,19 +611,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Uc", "Di-Uc", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Uc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update cancel check");
 
@@ -634,15 +626,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -670,19 +660,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Ur", "Di-Ur", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Ur",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update reject check");
 
@@ -690,15 +675,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -722,27 +705,36 @@ public class StructuresDeviceTypeIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Cd", "Di-Cd", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Cd",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -752,32 +744,26 @@ public class StructuresDeviceTypeIT {
             structureElement.setType(Type.DEVICETYPE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setParent(deviceGroupUuid);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic("Cd");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -809,18 +795,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Da", "Di-Da", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Da",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -828,15 +810,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -864,19 +844,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Dc", "Di-Dc", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Dc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -884,15 +859,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -920,19 +893,14 @@ public class StructuresDeviceTypeIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupUuid,
-                    "name", "Dr", "Di-Dr", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Dr",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -940,15 +908,13 @@ public class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -969,20 +935,18 @@ public class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Rsha", "Di-Rsha", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Rsha",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", -1, 1);
@@ -1055,20 +1019,18 @@ public class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Rshc", "Di-Rshc", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Rshc",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", -1, 1);
@@ -1141,20 +1103,18 @@ public class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DEVICETYPE, null, deviceGroupUuid,
-                  "name", "Rshr", "Di-Rshr", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupUuid,
+                    "name", "Rshr",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", -1, 1);
@@ -1245,43 +1205,39 @@ public class StructuresDeviceTypeIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "P1", "Di-P1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "P1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "C1", "Di-C1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "C1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "R1", "Di-R1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "R1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "A1", "Di-A1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "A1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1354,112 +1310,108 @@ public class StructuresDeviceTypeIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "P9", "Di-P9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "P9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "C9", "Di-C9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "C9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "R9", "Di-R9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "R9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "A9", "Di-A9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "A9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1517,149 +1469,114 @@ public class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AA1", "Di-AA1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AA1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AA2", "Di-AA2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AA2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AA3", "Di-AA3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AA3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AA4", "Di-AA4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AA4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AA5", "Di-AA5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AA5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AB1", "Di-AB1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AB1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AB2", "Di-AB2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AB2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AB3", "Di-AB3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AB3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AB4", "Di-AB4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AB4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AB5", "Di-AB5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AB5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AC1", "Di-AC1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AC1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AC2", "Di-AC2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AC2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AC3", "Di-AC3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AC3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AC4", "Di-AC4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AC4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AC5", "Di-AC5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AC5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AD1", "Di-AD1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AD1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AD2", "Di-AD2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AD2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AD3", "Di-AD3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AD3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AD4", "Di-AD4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AD4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AD5", "Di-AD5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AD5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1667,11 +1584,10 @@ public class StructuresDeviceTypeIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AE1", "Di-AE1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AE1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1682,14 +1598,12 @@ public class StructuresDeviceTypeIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AE2", "Di-AE2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AE2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1700,14 +1614,12 @@ public class StructuresDeviceTypeIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AE3", "Di-AE3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AE3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1718,14 +1630,12 @@ public class StructuresDeviceTypeIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AE4", "Di-AE4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AE4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1736,14 +1646,12 @@ public class StructuresDeviceTypeIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AE5", "Di-AE5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AE5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1754,107 +1662,86 @@ public class StructuresDeviceTypeIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AF1", "Di-AF1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AF2", "Di-AF2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AF3", "Di-AF3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AF3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AF4", "Di-AF4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AF4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AF5", "Di-AF5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AF5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AG1", "Di-AG1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AG1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AG2", "Di-AG2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AG2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AG3", "Di-AG3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AG3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AG4", "Di-AG4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AG4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupUuid,
-                "name", "AG5", "Di-AG5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupUuid,
+                "name", "AG5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 device type entries
diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
index 6a44197f18e003ed3a4f4560fc61d96cad5ffca6..5356f0c1e7512cfbd710635a2f0c7d09e013ed8e 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
@@ -28,9 +28,9 @@ import java.net.HttpURLConnection;
 import java.util.UUID;
 
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -67,6 +67,10 @@ public class StructuresDisciplineIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -94,9 +98,16 @@ public class StructuresDisciplineIT {
         //     read        exists in structure
         //     read        is valid to create
         //     read        validate create
+        //
+        // validate create
+        //     type
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "CC", Boolean.FALSE);
@@ -149,7 +160,7 @@ public class StructuresDisciplineIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.DISCIPLINE);
             structureElement.setName("name");
@@ -263,38 +274,33 @@ public class StructuresDisciplineIT {
         //     create in order to approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Ca", "Ca", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Ca",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -318,38 +324,33 @@ public class StructuresDisciplineIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Cc", "Cc", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Cc",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -373,38 +374,33 @@ public class StructuresDisciplineIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Cr", "Cr", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Cr",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -428,27 +424,39 @@ public class StructuresDisciplineIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElementCommand();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Cu", "Cu", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Cu",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -458,12 +466,6 @@ public class StructuresDisciplineIT {
             structureElement.setType(Type.DISCIPLINE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setName(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -509,18 +511,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Ua", "Ua", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Ua",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update approve check");
 
@@ -528,14 +526,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -563,19 +560,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Uc", "Uc", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Uc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update cancel check");
 
@@ -583,15 +575,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -619,19 +609,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Ur", "Ur", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Ur",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update reject check");
 
@@ -639,15 +624,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -671,27 +654,36 @@ public class StructuresDisciplineIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Cd", "Cd", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Cd",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -701,26 +693,20 @@ public class StructuresDisciplineIT {
             structureElement.setType(Type.DISCIPLINE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic("Cd");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -752,18 +738,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Da", "Da", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Da",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -771,15 +753,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -807,19 +787,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Dc", "Dc", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Dc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -827,15 +802,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -863,19 +836,14 @@ public class StructuresDisciplineIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.DISCIPLINE, null, null,
-                    "name", "Dr", "Dr", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Dr",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -883,15 +851,13 @@ public class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -912,20 +878,18 @@ public class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Rsha", "Rsha", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Rsha",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", -1, 1);
@@ -988,20 +952,18 @@ public class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Rshc", "Rshc", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Rshc",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", -1, 1);
@@ -1064,20 +1026,18 @@ public class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.DISCIPLINE, null, null,
-                  "name", "Rshr", "Rshr", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.DISCIPLINE, null,
+                    "name", "Rshr",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", -1, 1);
@@ -1158,43 +1118,39 @@ public class StructuresDisciplineIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "P1", "P1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "P1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "C1", "C1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "C1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "R1", "R1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "R1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "A1", "A1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "A1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1263,112 +1219,108 @@ public class StructuresDisciplineIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "P9", "P9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "P9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "C9", "C9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "C9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "R9", "R9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "R9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "A9", "A9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "A9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1422,149 +1374,114 @@ public class StructuresDisciplineIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AA1", "AA1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AA1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AA2", "AA2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AA2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AA3", "AA3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AA3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AA4", "AA4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AA4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AA5", "AA5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AA5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AB1", "AB1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AB1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AB2", "AB2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AB2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AB3", "AB3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AB3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AB4", "AB4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AB4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AB5", "AB5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AB5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AC1", "AC1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AC1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AC2", "AC2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AC2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AC3", "AC3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AC3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AC4", "AC4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AC4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AC5", "AC5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AC5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AD1", "AD1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AD1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AD2", "AD2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AD2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AD3", "AD3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AD3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AD4", "AD4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AD4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AD5", "AD5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AD5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1572,11 +1489,10 @@ public class StructuresDisciplineIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AE1", "AE1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AE1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1587,14 +1503,12 @@ public class StructuresDisciplineIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AE2", "AE2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AE2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1605,14 +1519,12 @@ public class StructuresDisciplineIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AE3", "AE3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AE3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1623,14 +1535,12 @@ public class StructuresDisciplineIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AE4", "AE4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AE4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1641,14 +1551,12 @@ public class StructuresDisciplineIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AE5", "AE5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AE5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1659,107 +1567,86 @@ public class StructuresDisciplineIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AF1", "AF1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AF2", "AF2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AF2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AF3", "AF3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AF3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AF4", "AF4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AF4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AF5", "AF5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AF5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AG1", "AG1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AG1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AG2", "AG2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AG2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AG3", "AG3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AG3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AG4", "AG4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AG4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "name", "AG5", "AG5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "name", "AG5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 discipline entries
diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
index 02c0348de3c4e094eb7a9c44ac8b9acbb490f644..17786f6edf4508d386d13b14503fdae2941cddb9 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
@@ -29,9 +29,9 @@ import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -68,6 +68,10 @@ public class StructuresSubsystemIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -81,22 +85,20 @@ public class StructuresSubsystemIT {
     public static void initAll() {
         // init system group, system
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-              Type.SYSTEMGROUP, null, null,
-              "name", "Sg", "Sg", 1,
-              "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-              null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "Sg",
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemGroupUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "Sys", "Sys", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "Sys",
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemUuid = approvedStructureElement.getUuid();
     }
@@ -124,11 +126,16 @@ public class StructuresSubsystemIT {
         //     read        is valid to create
         //     read        validate create
         //
-        // StructureElement attributes
-        //     type, name, mnemonic, description, comment
+        // validate create
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "CC", Boolean.FALSE);
@@ -198,7 +205,7 @@ public class StructuresSubsystemIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.SUBSYSTEM);
             structureElement.setParent(systemUuid);
@@ -313,38 +320,33 @@ public class StructuresSubsystemIT {
         //     create in order to approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Ca", "Sys-Ca", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Ca",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -368,38 +370,33 @@ public class StructuresSubsystemIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Cc", "Sys-Cc", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Cc",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -423,38 +420,33 @@ public class StructuresSubsystemIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Cr", "Sys-Cr", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Cr",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -478,27 +470,40 @@ public class StructuresSubsystemIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElementCommand();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Cu", "Sys-Cu", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Cu",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -508,12 +513,6 @@ public class StructuresSubsystemIT {
             structureElement.setType(Type.SUBSYSTEM);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setParent(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -565,18 +564,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Ua", "Sys-Ua", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Ua",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update approve check");
 
@@ -584,14 +579,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -619,19 +613,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Uc", "Sys-Uc", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Uc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update cancel check");
 
@@ -639,15 +628,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -675,19 +662,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Ur", "Sys-Ur", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Ur",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update reject check");
 
@@ -695,15 +677,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -727,27 +707,36 @@ public class StructuresSubsystemIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Cd", "Sys-Cd", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Cd",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -757,32 +746,26 @@ public class StructuresSubsystemIT {
             structureElement.setType(Type.SUBSYSTEM);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setParent(systemGroupUuid);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic("Cd");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -814,18 +797,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Da", "Sys-Da", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Da",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -833,15 +812,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -869,19 +846,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Dc", "Sys-Dc", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Dc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -889,15 +861,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -925,19 +895,14 @@ public class StructuresSubsystemIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemUuid,
-                    "name", "Dr", "Sys-Dr", 3,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Dr",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -945,15 +910,13 @@ public class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -974,20 +937,18 @@ public class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Rsha", "Sys-Rsha", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Rsha",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", -1, 1);
@@ -1074,20 +1035,18 @@ public class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Rshc", "Sys-Rshc", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Rshc",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", -1, 1);
@@ -1174,20 +1133,18 @@ public class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SUBSYSTEM, null, systemUuid,
-                  "name", "Rshr", "Sys-Rshr", 3,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemUuid,
+                    "name", "Rshr",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", -1, 1);
@@ -1292,43 +1249,39 @@ public class StructuresSubsystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "P1", "Sys-P1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "P1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "C1", "Sys-C1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "C1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "R1", "Sys-R1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "R1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "A1", "Sys-A1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "A1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1405,112 +1358,108 @@ public class StructuresSubsystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "P9", "Sys-P9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "P9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "C9", "Sys-C9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "C9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "R9", "Sys-R9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "R9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "A9", "Sys-A9", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "A9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1572,149 +1521,114 @@ public class StructuresSubsystemIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AA1", "Sys-AA1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AA1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AA2", "Sys-AA2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AA2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AA3", "Sys-AA3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AA3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AA4", "Sys-AA4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AA4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AA5", "Sys-AA5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AA5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AB1", "Sys-AB1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AB1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AB2", "Sys-AB2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AB2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AB3", "Sys-AB3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AB3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AB4", "Sys-AB4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AB4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AB5", "Sys-AB5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AB5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AC1", "Sys-AC1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AC1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AC2", "Sys-AC2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AC2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AC3", "Sys-AC3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AC3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AC4", "Sys-AC4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AC4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AC5", "Sys-AC5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AC5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AD1", "Sys-AD1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AD1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AD2", "Sys-AD2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AD2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AD3", "Sys-AD3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AD3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AD4", "Sys-AD4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AD4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AD5", "Sys-AD5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AD5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1722,11 +1636,10 @@ public class StructuresSubsystemIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AE1", "Sys-AE1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AE1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1737,14 +1650,12 @@ public class StructuresSubsystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AE2", "Sys-AE2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AE2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1755,14 +1666,12 @@ public class StructuresSubsystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AE3", "Sys-AE3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AE3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1773,14 +1682,12 @@ public class StructuresSubsystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AE4", "Sys-AE4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AE4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1791,14 +1698,12 @@ public class StructuresSubsystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AE5", "Sys-AE5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AE5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1809,107 +1714,86 @@ public class StructuresSubsystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AF1", "Sys-AF1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AF2", "Sys-AF2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AF2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AF3", "Sys-AF3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AF3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AF4", "Sys-AF4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AF4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AF5", "Sys-AF5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AF5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AG1", "Sys-AG1", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AG1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AG2", "Sys-AG2", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AG2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AG3", "Sys-AG3", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AG3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AG4", "Sys-AG4", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AG4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemUuid,
-                "name", "AG5", "Sys-AG5", 3,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemUuid,
+                "name", "AG5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 subsystem entries
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
index 2ee4ad178b1e878c12cbf271d34a0adc52171780..e83fc7e4a8d93fb76d1a297b5fd48b1f85e5ec29 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
@@ -29,9 +29,9 @@ import java.net.HttpURLConnection;
 import java.util.UUID;
 
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -68,6 +68,10 @@ public class StructuresSystemGroupIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -98,9 +102,16 @@ public class StructuresSystemGroupIT {
         //
         // note
         //     with and without mnemonic
+        //
+        // validate create
+        //     type
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "CC", Boolean.FALSE);
@@ -161,7 +172,7 @@ public class StructuresSystemGroupIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.SYSTEMGROUP);
             structureElement.setName("name");
@@ -282,59 +293,53 @@ public class StructuresSystemGroupIT {
         //     with and without mnemonic
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
+            StructureElement createdStructureElement = null;
             UUID uuid, uuid2, uuid3 = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Ca", "Ca", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Ca",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
             uuid = createdStructureElement.getUuid();
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name2", null, null, 1,
-                    "description2", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "comment2");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name2", null,
+                    "description2", "comment2");
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
             uuid2 = createdStructureElement.getUuid();
 
             // create
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name3", null, null, 1,
-                    "description3", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "comment3");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name3", null,
+                    "description3", "comment3");
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
             uuid3 = createdStructureElement.getUuid();
 
@@ -361,38 +366,33 @@ public class StructuresSystemGroupIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Cc", "Cc", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Cc",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -416,38 +416,33 @@ public class StructuresSystemGroupIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Cr", "Cr", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Cr",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -471,27 +466,39 @@ public class StructuresSystemGroupIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElementCommand();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Cu", "Cu", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Cu",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -501,12 +508,6 @@ public class StructuresSystemGroupIT {
             structureElement.setType(Type.SYSTEMGROUP);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setName(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -552,18 +553,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Ua", "Ua", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Ua",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setDescription("description update approve check");
             structureElement.setComment("comment update approve check");
@@ -572,14 +569,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -607,19 +603,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Uc", "Uc", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Uc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setDescription("description update cancel check");
             structureElement.setComment("comment update cancel check");
@@ -628,15 +619,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -664,19 +653,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Ur", "Ur", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Ur",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setDescription("description update reject check");
             structureElement.setComment("comment update reject check");
@@ -685,15 +669,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -717,27 +699,36 @@ public class StructuresSystemGroupIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Cd", "Cd", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Cd",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -747,14 +738,8 @@ public class StructuresSystemGroupIT {
             structureElement.setType(Type.SYSTEMGROUP);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -766,7 +751,7 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -798,18 +783,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Da", "Da", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Da",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -817,15 +798,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -853,19 +832,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Dc", "Dc", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Dc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -873,15 +847,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -909,19 +881,14 @@ public class StructuresSystemGroupIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEMGROUP, null, null,
-                    "name", "Dr", "Dr", 1,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Dr",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -929,15 +896,13 @@ public class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -958,20 +923,18 @@ public class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Rsha", "Rsha", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Rsha",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", -1, 1);
@@ -1034,20 +997,18 @@ public class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Rshc", "Rshc", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Rshc",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", -1, 1);
@@ -1110,20 +1071,18 @@ public class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEMGROUP, null, null,
-                  "name", "Rshr", "Rshr", 1,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEMGROUP, null,
+                    "name", "Rshr",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", -1, 1);
@@ -1204,43 +1163,39 @@ public class StructuresSystemGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "P1", "P1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "P1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "C1", "C1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "C1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "R1", "R1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "R1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "A1", "A1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "A1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1309,112 +1264,108 @@ public class StructuresSystemGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "P9", "P9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "P9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "C9", "C9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "C9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "R9", "R9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "R9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "A9", "A9", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "A9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1468,149 +1419,114 @@ public class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AA1", "AA1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AA1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AA2", "AA2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AA2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AA3", "AA3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AA3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AA4", "AA4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AA4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AA5", "AA5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AA5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AB1", "AB1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AB1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AB2", "AB2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AB2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AB3", "AB3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AB3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AB4", "AB4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AB4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AB5", "AB5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AB5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AC1", "AC1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AC1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AC2", "AC2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AC2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AC3", "AC3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AC3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AC4", "AC4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AC4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AC5", "AC5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AC5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AD1", "AD1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AD1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AD2", "AD2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AD2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AD3", "AD3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AD3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AD4", "AD4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AD4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AD5", "AD5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AD5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1618,11 +1534,10 @@ public class StructuresSystemGroupIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AE1", "AE1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AE1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1633,14 +1548,12 @@ public class StructuresSystemGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AE2", "AE2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AE2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1651,14 +1564,12 @@ public class StructuresSystemGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AE3", "AE3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AE3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1669,14 +1580,12 @@ public class StructuresSystemGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AE4", "AE4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AE4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1687,14 +1596,12 @@ public class StructuresSystemGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AE5", "AE5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AE5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1705,107 +1612,86 @@ public class StructuresSystemGroupIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AF1", "AF1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AF2", "AF2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AF2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AF3", "AF3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AF3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AF4", "AF4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AF4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AF5", "AF5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AF5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AG1", "AG1", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AG1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AG2", "AG2", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AG2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AG3", "AG3", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AG3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AG4", "AG4", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AG4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "name", "AG5", "AG5", 1,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "AG5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 system group entries
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
index 674a76698c345975133e6965ea90503768c22a02..b23a1c480fba35b2df191c1a984176121f70908c 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
@@ -29,9 +29,9 @@ import java.util.UUID;
 
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.StructureChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -68,6 +68,10 @@ public class StructuresSystemIT {
     //         may be set client side for test purposes
     //     order of methods in test not known
     //         therefore mnemonic values chosen to not interfere with mnemonic values in other methods
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -80,14 +84,13 @@ public class StructuresSystemIT {
     public static void initAll() {
         // init system group
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-              Type.SYSTEMGROUP, null, null,
-              "name", "Sg", "Sg", 1,
-              "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-              null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "name", "Sg",
+                "description", "comment");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemGroupUuid = approvedStructureElement.getUuid();
     }
@@ -114,11 +117,16 @@ public class StructuresSystemIT {
         //     read        is valid to create
         //     read        validate create
         //
-        // StructureElement attributes
-        //     type, name, mnemonic, description, comment
+        // validate create
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             ITUtilStructureElement.assertExists(Type.SYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM, "CC", Boolean.FALSE);
@@ -181,7 +189,7 @@ public class StructuresSystemIT {
         // note
         //     mnemonic
         try {
-            StructureElement structureElement = new StructureElement();
+            StructureElementCommand structureElement = new StructureElementCommand();
 
             structureElement.setType(Type.SYSTEM);
             structureElement.setParent(systemGroupUuid);
@@ -295,38 +303,33 @@ public class StructuresSystemIT {
         //     create in order to approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Ca", "Ca", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Ca",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
-            structureElement = approvedStructureElement;
+            ITUtilStructureElement.assertApprove(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.TRUE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.FALSE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -350,38 +353,33 @@ public class StructuresSystemIT {
         //     create in order to cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement createdStructureElement   = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Cc", "Cc", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Cc",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -405,38 +403,33 @@ public class StructuresSystemIT {
         //     create in order to reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement createdStructureElement  = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Cr", "Cr", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Cr",
+                    "description", "comment");
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
+            ITUtilStructureElement.assertCreate(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.FALSE);
-            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, structureElement.getMnemonicpath(), Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CREATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -460,27 +453,40 @@ public class StructuresSystemIT {
         //
         // note
         //     create, approve in order to update
+        //
+        // validate update
+        //     uuid
+        //     type
+        //     parent
+        //     name
+        //     mnemonic
+        //     description
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement structureElement         = new StructureElement();
+            StructureElementCommand structureElement  = new StructureElementCommand();
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Cu", "Cu", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Cu",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -490,12 +496,6 @@ public class StructuresSystemIT {
             structureElement.setType(Type.SYSTEM);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
-
             structureElement.setParent(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
 
@@ -547,18 +547,14 @@ public class StructuresSystemIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Ua", "Ua", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Ua",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update approve check");
 
@@ -566,14 +562,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE,  Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -601,19 +596,14 @@ public class StructuresSystemIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement updatedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Uc", "Uc", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Uc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update cancel check");
 
@@ -621,15 +611,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -657,19 +645,14 @@ public class StructuresSystemIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement updatedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Ur", "Ur", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Ur",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update reject check");
 
@@ -677,15 +660,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // update
-            updatedStructureElement = ITUtilStructureElement.assertUpdate(structureElement);
-            structureElement = updatedStructureElement;
+            ITUtilStructureElement.assertUpdate(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.UPDATE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -709,27 +690,36 @@ public class StructuresSystemIT {
         //
         // note
         //     create, approve in order to delete
+        //
+        // validate delete
+        //     uuid
+        //     type
+        //     comment
 
         try {
             UUID uuid = null;
 
-            StructureElement   structureElement         = new StructureElement();
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Cd", "Cd", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Cd",
+                    "description", "comment");
             approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
+            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+
+            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
+
             structureElement.setType(null);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
 
@@ -739,32 +729,26 @@ public class StructuresSystemIT {
             structureElement.setType(Type.SYSTEM);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
-
             structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setParent(systemGroupUuid);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setName("name");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setMnemonic("Cd");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
 
             structureElement.setDescription("description");
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
@@ -796,18 +780,14 @@ public class StructuresSystemIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Da", "Da", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Da",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete approve check");
 
@@ -815,15 +795,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
 
             // delete
-            structureElement.setDeleted(Boolean.TRUE);
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.TRUE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE,  Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.APPROVE, Boolean.FALSE);
@@ -851,19 +829,14 @@ public class StructuresSystemIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElement structureElement          = null;
-            StructureElement deletedStructureElement   = null;
-            StructureElement approvedStructureElement  = null;
-            StructureElement cancelledStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Dc", "Dc", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Dc",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment update delete check");
 
@@ -871,15 +844,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.TRUE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
-            structureElement = cancelledStructureElement;
+            ITUtilStructureElement.assertCancel(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.CANCEL, Boolean.FALSE);
@@ -907,19 +878,14 @@ public class StructuresSystemIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElement structureElement         = null;
-            StructureElement deletedStructureElement  = null;
-            StructureElement approvedStructureElement = null;
-            StructureElement rejectedStructureElement = null;
+            StructureElementCommand structureElement = null;
 
             // create, approve
-            structureElement = new StructureElement(
-                    Type.SYSTEM, null, systemGroupUuid,
-                    "name", "Dr", "Dr", 2,
-                    "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "test comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement = approvedStructureElement;
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Dr",
+                    "description", "comment");
+            ITUtilStructureElement.assertCreateApprove(structureElement);
 
             structureElement.setComment("comment delete reject check");
 
@@ -927,15 +893,13 @@ public class StructuresSystemIT {
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
 
             // delete
-            deletedStructureElement = ITUtilStructureElement.assertDelete(structureElement);
-            structureElement = deletedStructureElement;
+            ITUtilStructureElement.assertDelete(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.FALSE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.TRUE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
-            structureElement = rejectedStructureElement;
+            ITUtilStructureElement.assertReject(structureElement);
 
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.DELETE, Boolean.TRUE);
             ITUtilStructureElement.assertValidate(structureElement, StructureChoice.REJECT, Boolean.FALSE);
@@ -956,20 +920,18 @@ public class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   approvedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Rsha", "Rsha", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Rsha",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", -1, 1);
@@ -1042,20 +1004,18 @@ public class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement          = null;
-            StructureElement   createdStructureElement   = null;
-            StructureElement   cancelledStructureElement = null;
+            StructureElementCommand structureElement   = null;
+            StructureElement createdStructureElement   = null;
+            StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Rshc", "Rshc", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Rshc",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", -1, 1);
@@ -1128,20 +1088,18 @@ public class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElement   structureElement         = null;
-            StructureElement   createdStructureElement  = null;
-            StructureElement   rejectedStructureElement = null;
+            StructureElementCommand structureElement  = null;
+            StructureElement createdStructureElement  = null;
+            StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElement(
-                  Type.SYSTEM, null, systemGroupUuid,
-                  "name", "Rshr", "Rshr", 2,
-                  "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                  null, "test who", "comment");
+            structureElement = new StructureElementCommand(
+                    null, Type.SYSTEM, systemGroupUuid,
+                    "name", "Rshr",
+                    "description", "comment");
 
             // create
             createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement = createdStructureElement;
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", -1, 1);
@@ -1232,43 +1190,39 @@ public class StructuresSystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "P1", "P1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "P1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "C1", "C1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "C1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "R1", "R1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "R1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "A1", "A1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "A1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
@@ -1341,112 +1295,108 @@ public class StructuresSystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "P9", "P9", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "P9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "C9", "C9", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "C9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "R9", "R9", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "R9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "A9", "A9", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment 1");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "A9",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("test comment 2");
+        responseStructureElement.setComment("comment 2");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 3");
+        responseStructureElement.setComment("comment 3");
         responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("test comment 4");
+        responseStructureElement.setComment("comment 4");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 5");
+        responseStructureElement.setComment("comment 5");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 6");
+        responseStructureElement.setComment("comment 6");
         responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("test comment 7");
+        responseStructureElement.setComment("comment 7");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 8");
+        responseStructureElement.setComment("comment 8");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("test comment 9");
+        responseStructureElement.setComment("comment 9");
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
 
         try {
@@ -1504,149 +1454,114 @@ public class StructuresSystemIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AA1", "AA1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AA1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AA2", "AA2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AA2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AA3", "AA3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AA3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AA4", "AA4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AA4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AA5", "AA5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AA5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AB1", "AB1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AB1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AB2", "AB2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AB2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AB3", "AB3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AB3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AB4", "AB4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AB4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AB5", "AB5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AB5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AC1", "AC1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AC1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AC2", "AC2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AC2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AC3", "AC3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AC3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AC4", "AC4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AC4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AC5", "AC5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AC5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AD1", "AD1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AD1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AD2", "AD2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AD2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AD3", "AD3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AD3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AD4", "AD4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AD4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AD5", "AD5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AD5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
 
         String description2 = "some other description";
@@ -1654,11 +1569,10 @@ public class StructuresSystemIT {
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AE1", "AE1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AE1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1669,14 +1583,12 @@ public class StructuresSystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AE2", "AE2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AE2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1687,14 +1599,12 @@ public class StructuresSystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AE3", "AE3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AE3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1705,14 +1615,12 @@ public class StructuresSystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AE4", "AE4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AE4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1723,14 +1631,12 @@ public class StructuresSystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AE5", "AE5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AE5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
         structureElement.setDescription(description2);
@@ -1741,107 +1647,86 @@ public class StructuresSystemIT {
         structureElement.setComment(comment3);
         responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AF1", "AF1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AF1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AF2", "AF2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AF2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AF3", "AF3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AF3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AF4", "AF4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AF4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AF5", "AF5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AF5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AG1", "AG1", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AG1",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AG2", "AG2", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AG2",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AG3", "AG3", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AG3",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AG4", "AG4", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AG4",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupUuid,
-                "name", "AG5", "AG5", 2,
-                "description", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "test comment");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupUuid,
+                "name", "AG5",
+                "description", "comment");
         responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         structureElement = responseStructureElement;
-        structureElement.setDeleted(Boolean.FALSE);
         responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
 
         // 60 system entries
diff --git a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
index 8839b7fadeff9bac46247cb6a3970eb7eab1f660..6b38b0ef8d4e41f0d3602d688502fcacf61d03d9 100644
--- a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
@@ -26,10 +26,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.docker.ITUtil;
 import org.openepics.names.docker.ITUtilNameElement;
 import org.openepics.names.docker.ITUtilStructureElement;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.NameElementCommand;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.openepics.names.util.EnumUtil.NameChoice;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -59,6 +60,11 @@ public class NamesInstanceIndexIT {
     //         Scientific
     //     mnemonic path P&ID numeric
     //     see NamingConventionUtil
+    //
+    //     NameElement extends NameElementCommand, StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send
+    //     NameElement, StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -133,451 +139,398 @@ public class NamesInstanceIndexIT {
     public static void initAll() {
         // init system group, system, subsystem, discipline, device group, device type
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "Accelerator", "Acc", "Acc", 1,
-                "The ESS Linear Accelerator", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "approved by alfio");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "Accelerator", "Acc",
+                "The ESS Linear Accelerator", "approved by alfio");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupAcc,
-                "Radio Frequency Quadrupole", "RFQ", "RFQ", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupAcc,
+                "Radio Frequency Quadrupole", "RFQ",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemRFQ = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "01 Phase Reference Line", "010PRL", "RFQ-010PRL", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "01 Phase Reference Line", "010PRL",
+                "empty", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystem010PRL = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "RFQ-010", "010", "RFQ-010", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "RFQ-010", "010",
+                "empty", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystem010 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SUBSYSTEM, null, systemRFQ,
-                "Power switch board 01", "N1U1", "RFQ-N1U1", 3,
-                "Electrical power cabinets", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "Approved by Daniel Piso");
+        structureElement = new StructureElementCommand(
+                null, Type.SUBSYSTEM, systemRFQ,
+                "Power switch board 01", "N1U1",
+                "Electrical power cabinets", "Approved by Daniel Piso");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         subsystemN1U1 = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Cryogenics", "Cryo", "Cryo", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Cryogenics", "Cryo",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Electromagnetic Resonators", "EMR", "EMR", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Electromagnetic Resonators", "EMR",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Heating, Cooling and Air Conditioning", "HVAC", "HVAC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Heating, Cooling and Air Conditioning", "HVAC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "General Process Control", "Proc", "Proc", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "General Process Control", "Proc",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Software Controllers", "SC", "SC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Software Controllers", "SC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Vacuum", "Vac", "Vac", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Vacuum", "Vac",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Water Cooling", "WtrC", "WtrC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Water Cooling", "WtrC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Beam Magnets and Deflectors", "BMD", "BMD", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Beam Magnets and Deflectors", "BMD",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineBMD = approvedStructureElement.getUuid();
 
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineCryo,
-                "empty", null, "Cryo", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineCryo,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineEMR,
-                "empty", null, "EMR", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineEMR,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineHVAC,
-                "empty", null, "HVAC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineHVAC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineProc,
-                "empty", null, "Proc", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineProc,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineSC,
-                "empty", null, "SC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineSC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineVac,
-                "empty", null, "Vac", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineVac,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineWtrC,
-                "empty", null, "WtrC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineWtrC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineBMD,
-                "empty", null, "BMD", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineBMD,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupBMD = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupCryo,
-                "Flow Switch", "FS", "Cryo-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupCryo,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Cryo_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupCryo,
-                "Input Output Controller", "IOC", "Cryo-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupCryo,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Cryo_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupCryo,
-                "RF Antenna", "RFA", "Cryo-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupCryo,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Cryo_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupCryo,
-                "Temperature Transmitter", "TT", "Cryo-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupCryo,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Cryo_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "Input Output Controller", "IOC", "EMR-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        deviceType_EMR_IOC = approvedStructureElement.getUuid();
+        deviceType_EMR_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "Flow Switch", "FS", "EMR-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        deviceType_EMR_FS = approvedStructureElement.getUuid();
+        deviceType_EMR_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "RF Antenna", "RFA", "EMR-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_EMR_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupEMR,
-                "Temperature Transmitter", "TT", "EMR-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupEMR,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_EMR_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupHVAC,
-                "Flow Switch", "FS", "HVAC-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupHVAC,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_HVAC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupHVAC,
-                "Input Output Controller", "IOC", "HVAC-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupHVAC,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_HVAC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupHVAC,
-                "RF Antenna", "RFA", "HVAC-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupHVAC,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_HVAC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupHVAC,
-                "Temperature Transmitter", "TT", "HVAC-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupHVAC,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_HVAC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupProc,
-                "Flow Switch", "FS", "Proc-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupProc,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Proc_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupProc,
-                "Input Output Controller", "IOC", "Proc-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupProc,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Proc_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupProc,
-                "RF Antenna", "RFA", "Proc-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupProc,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Proc_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupProc,
-                "Temperature Transmitter", "TT", "Proc-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupProc,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Proc_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupSC,
-                "Flow Switch", "FS", "SC-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupSC,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_SC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupSC,
-                "Input Output Controller", "IOC", "SC-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupSC,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_SC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupSC,
-                "RF Antenna", "RFA", "SC-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupSC,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_SC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupSC,
-                "Temperature Transmitter", "TT", "SC-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupSC,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_SC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupVac,
-                "Flow Switch", "FS", "Vac-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupVac,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Vac_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupVac,
-                "Input Output Controller", "IOC", "Vac-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupVac,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Vac_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupVac,
-                "RF Antenna", "RFA", "Vac-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupVac,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Vac_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupVac,
-                "Temperature Transmitter", "TT", "Vac-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupVac,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_Vac_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupWtrC,
-                "Flow Switch", "FS", "WtrC-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupWtrC,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_WtrC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupWtrC,
-                "Input Output Controller", "IOC", "WtrC-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupWtrC,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_WtrC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupWtrC,
-                "RF Antenna", "RFA", "WtrC-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupWtrC,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_WtrC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupWtrC,
-                "Temperature Transmitter", "TT", "WtrC-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupWtrC,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_WtrC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupBMD,
-                "Flow Switch", "FS", "BMD-FS", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupBMD,
+                "Flow Switch", "FS",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_BMD_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupBMD,
-                "Input Output Controller", "IOC", "BMD-IOC", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupBMD,
+                "Input Output Controller", "IOC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_BMD_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupBMD,
-                "RF Antenna", "RFA", "BMD-RFA", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupBMD,
+                "RF Antenna", "RFA",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_BMD_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICETYPE, null, deviceGroupBMD,
-                "Temperature Transmitter", "TT", "BMD-TT", 3,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICETYPE, deviceGroupBMD,
+                "Temperature Transmitter", "TT",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceType_BMD_TT = approvedStructureElement.getUuid();
     }
@@ -595,7 +548,7 @@ public class NamesInstanceIndexIT {
       //     discipline Cryo
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -604,121 +557,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_Cryo_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_Cryo_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -734,7 +687,7 @@ public class NamesInstanceIndexIT {
       //     discipline EMR
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -743,121 +696,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_EMR_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_EMR_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -873,7 +826,7 @@ public class NamesInstanceIndexIT {
       //     discipline HVAC
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -882,121 +835,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_HVAC_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_HVAC_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -1012,7 +965,7 @@ public class NamesInstanceIndexIT {
       //     discipline Proc
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -1021,121 +974,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_Proc_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_Proc_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -1151,7 +1104,7 @@ public class NamesInstanceIndexIT {
       //     discipline SC
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -1160,121 +1113,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_SC_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000a",       "000a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000ab",      "000ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000abc",     "000abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123a",       "123a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123ab",      "123ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123abc",     "123abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_SC_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -1290,7 +1243,7 @@ public class NamesInstanceIndexIT {
       //     discipline Vac
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -1299,121 +1252,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_Vac_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_Vac_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -1429,7 +1382,7 @@ public class NamesInstanceIndexIT {
       //     discipline WtrC
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -1438,121 +1391,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_WtrC_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_WtrC_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-12",         "12",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-1234",       "1234",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000a",       "000a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000ab",      "000ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000abc",     "000abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123a",       "123a",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123ab",      "123ab",     Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123abc",     "123abc",    Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-1",          "1",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-01",         "01",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-0001",       "0001",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-0110",       "0110",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-10",         "10",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-1000",       "1000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
   @Test
@@ -1568,7 +1521,7 @@ public class NamesInstanceIndexIT {
       //     discipline BMD
       //     instance index
 
-      NameElement nameElement = new NameElement();
+      NameElementCommand nameElement = new NameElementCommand();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
       nameElement.setParentsystemstructure(subsystem010PRL);
@@ -1577,121 +1530,121 @@ public class NamesInstanceIndexIT {
 
       nameElement.setParentdevicestructure(deviceType_BMD_IOC);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-1",          "1",         Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-12",         "12",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-1234",       "1234",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000a",       "000a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000ab",      "000ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000abc",     "000abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123a",       "123a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123ab",      "123ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123abc",     "123abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-1",          "1",         Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-01",         "01",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-0001",       "0001",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-0110",       "0110",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-10",         "10",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-1000",       "1000",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
 
       nameElement.setParentdevicestructure(deviceType_BMD_RFA);
 
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-051",        "051",       Boolean.TRUE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-0",          "0",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-00",         "00",        Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000",        "000",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-0000",       "0000",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-00000",      "00000",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000000",     "000000",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-0000000",    "0000000",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-00000000",   "00000000",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000000000",  "000000000", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-1",          "1",         Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-12",         "12",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123",        "123",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-1234",       "1234",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-12345",      "12345",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123456",     "123456",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-1234567",    "1234567",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-12345678",   "12345678",  Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123456789",  "123456789", Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000a",       "000a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000ab",      "000ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000abc",     "000abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000abcd",    "000abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000A",       "000A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000AB",      "000AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000ABC",     "000ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-000ABCD",    "000ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123a",       "123a",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123ab",      "123ab",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123abc",     "123abc",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123abcd",    "123abcd",   Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123A",       "123A",      Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123AB",      "123AB",     Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123ABC",     "123ABC",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-123ABCD",    "123ABCD",   Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-1",          "1",         Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-01",         "01",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-001",        "001",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-0001",       "0001",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-0110",       "0110",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-10",         "10",        Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-100",        "100",       Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-1000",       "1000",      Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-10001",      "10001",     Boolean.FALSE);
-
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA",            "",          Boolean.TRUE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA ",           " ",         Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-Idx",        "Idx",       Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-abcdef",     "abcdef",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-abc123",     "abc123",    Boolean.FALSE);
-      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-a!",         "a!",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "051",       Boolean.TRUE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00",        Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0000000",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "00000000",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000000000", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1234567",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "12345678",  Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123456789", Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "000ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123a",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ab",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abc",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123abcd",   Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123A",      Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123AB",     Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABC",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "123ABCD",   Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1",         Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "01",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "001",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0001",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "0110",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10",        Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "100",       Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "1000",      Boolean.TRUE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "10001",     Boolean.FALSE);
+
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "",          Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, " ",         Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "Idx",       Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abcdef",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "abc123",    Boolean.FALSE);
+      ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "a!",        Boolean.FALSE);
   }
 
 }
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresCreateLevel3IT.java b/src/test/java/org/openepics/names/docker/complex/StructuresCreateLevel3IT.java
index 03ee09faad7fc4fc23f9c3a6a7ccab82e52bc7e9..4e31020be0e56aee04b55a2ef2c794f69da6803d 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresCreateLevel3IT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresCreateLevel3IT.java
@@ -28,9 +28,9 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.openepics.names.docker.ITUtil;
 import org.openepics.names.docker.ITUtilStructureElement;
-import org.openepics.names.rest.beans.Status;
-import org.openepics.names.rest.beans.StructureElement;
 import org.openepics.names.rest.beans.Type;
+import org.openepics.names.rest.beans.simplified.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElementCommand;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -49,8 +49,14 @@ import org.testcontainers.junit.jupiter.Testcontainers;
  */
 @Testcontainers
 public class StructuresCreateLevel3IT {
+
+    // note
     //     create in order to approve
     //     all create first, all approve separately after all create
+    //
+    //     StructureElement extends StructureElementCommand
+    //     -->
+    //     for such operations that send Command objects to backend, it is also possible to send StructureElement
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -125,155 +131,136 @@ public class StructuresCreateLevel3IT {
     public static void initAll() {
         // init system group, system, discipline, device group
 
-        StructureElement structureElement         = null;
+        StructureElementCommand structureElement  = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElement(
-                Type.SYSTEMGROUP, null, null,
-                "Accelerator", "Acc", "Acc", 1,
-                "The ESS Linear Accelerator", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "approved by alfio");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEMGROUP, null,
+                "Accelerator", "Acc",
+                "The ESS Linear Accelerator", "approved by alfio");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.SYSTEM, null, systemGroupAcc,
-                "Radio Frequency Quadrupole", "RFQ", "RFQ", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.SYSTEM, systemGroupAcc,
+                "Radio Frequency Quadrupole", "RFQ",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         systemRFQ = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Cryogenics", "Cryo", "Cryo", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Cryogenics", "Cryo",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Electromagnetic Resonators", "EMR", "EMR", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Electromagnetic Resonators", "EMR",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Heating, Cooling and Air Conditioning", "HVAC", "HVAC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Heating, Cooling and Air Conditioning", "HVAC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "General Process Control", "Proc", "Proc", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "General Process Control", "Proc",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Software Controllers", "SC", "SC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Software Controllers", "SC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Vacuum", "Vac", "Vac", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Vacuum", "Vac",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Water Cooling", "WtrC", "WtrC", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Water Cooling", "WtrC",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DISCIPLINE, null, null,
-                "Beam Magnets and Deflectors", "BMD", "BMD", 1,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DISCIPLINE, null,
+                "Beam Magnets and Deflectors", "BMD",
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         disciplineBMD = approvedStructureElement.getUuid();
 
-
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineCryo,
-                "empty", null, "Cryo", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineCryo,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineEMR,
-                "empty", null, "EMR", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineEMR,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineHVAC,
-                "empty", null, "HVAC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineHVAC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineProc,
-                "empty", null, "Proc", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineProc,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineSC,
-                "empty", null, "SC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineSC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineVac,
-                "empty", null, "Vac", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineVac,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineWtrC,
-                "empty", null, "WtrC", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineWtrC,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElement(
-                Type.DEVICEGROUP, null, disciplineBMD,
-                "empty", null, "BMD", 2,
-                "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                null, "test who", "empty");
+        structureElement = new StructureElementCommand(
+                null, Type.DEVICEGROUP, disciplineBMD,
+                "empty", null,
+                "empty", "empty");
         approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
         deviceGroupBMD = approvedStructureElement.getUuid();
     }
@@ -295,33 +282,31 @@ public class StructuresCreateLevel3IT {
         //     all create first, all approve separately after all create
 
         try {
-            StructureElement structureElement               = null;
+            StructureElementCommand structureElement        = null;
             StructureElement createdStructureElement_010PRL = null;
             StructureElement createdStructureElement_010    = null;
             StructureElement createdStructureElement_N1U1   = null;
             StructureElement approvedStructureElement       = null;
 
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemRFQ,
-                    "01 Phase Reference Line", "010PRL", "RFQ-010PRL", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "Approved by Daniel Piso");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemRFQ,
+                    "01 Phase Reference Line", "010PRL",
+                    "empty", "Approved by Daniel Piso");
             createdStructureElement_010PRL = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemRFQ,
-                    "RFQ-010", "010", "RFQ-010", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "Approved by Daniel Piso");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemRFQ,
+                    "RFQ-010", "010",
+                    "empty", "Approved by Daniel Piso");
             createdStructureElement_010 = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.SUBSYSTEM, null, systemRFQ,
-                    "Power switch board 01", "N1U1", "RFQ-N1U1", 3,
-                    "Electrical power cabinets", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "Approved by Daniel Piso");
+            structureElement = new StructureElementCommand(
+                    null, Type.SUBSYSTEM, systemRFQ,
+                    "Power switch board 01", "N1U1",
+                    "Electrical power cabinets", "Approved by Daniel Piso");
             createdStructureElement_N1U1 = ITUtilStructureElement.assertCreate(structureElement);
 
+
             approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_010PRL);
             subsystem010PRL = approvedStructureElement.getUuid();
 
@@ -356,7 +341,7 @@ public class StructuresCreateLevel3IT {
         //     all create first, all approve separately after all create
 
         try {
-            StructureElement structureElement                 = null;
+            StructureElementCommand structureElement          = null;
 
             StructureElement createdStructureElement_Cryo_FS  = null;
             StructureElement createdStructureElement_Cryo_IOC = null;
@@ -402,242 +387,210 @@ public class StructuresCreateLevel3IT {
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupCryo,
-                    "Flow Switch", "FS", "Cryo-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupCryo,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_Cryo_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupCryo,
-                    "Input Output Controller", "IOC", "Cryo-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupCryo,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_Cryo_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupCryo,
-                    "RF Antenna", "RFA", "Cryo-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupCryo,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_Cryo_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupCryo,
-                    "Temperature Transmitter", "TT", "Cryo-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupCryo,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_Cryo_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupEMR,
-                    "Input Output Controller", "IOC", "EMR-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupEMR,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_EMR_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupEMR,
-                    "Flow Switch", "FS", "EMR-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupEMR,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_EMR_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupEMR,
-                    "RF Antenna", "RFA", "EMR-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupEMR,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_EMR_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupEMR,
-                    "Temperature Transmitter", "TT", "EMR-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupEMR,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_EMR_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupHVAC,
-                    "Flow Switch", "FS", "HVAC-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupHVAC,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_HVAC_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupHVAC,
-                    "Input Output Controller", "IOC", "HVAC-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupHVAC,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_HVAC_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupHVAC,
-                    "RF Antenna", "RFA", "HVAC-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupHVAC,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_HVAC_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupHVAC,
-                    "Temperature Transmitter", "TT", "HVAC-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupHVAC,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_HVAC_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupProc,
-                    "Flow Switch", "FS", "Proc-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupProc,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_Proc_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupProc,
-                    "Input Output Controller", "IOC", "Proc-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupProc,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_Proc_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupProc,
-                    "RF Antenna", "RFA", "Proc-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupProc,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_Proc_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupProc,
-                    "Temperature Transmitter", "TT", "Proc-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupProc,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_Proc_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupSC,
-                    "Flow Switch", "FS", "SC-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupSC,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_SC_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupSC,
-                    "Input Output Controller", "IOC", "SC-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupSC,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_SC_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupSC,
-                    "RF Antenna", "RFA", "SC-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupSC,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_SC_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupSC,
-                    "Temperature Transmitter", "TT", "SC-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupSC,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_SC_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupVac,
-                    "Flow Switch", "FS", "Vac-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupVac,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_Vac_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupVac,
-                    "Input Output Controller", "IOC", "Vac-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupVac,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_Vac_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupVac,
-                    "RF Antenna", "RFA", "Vac-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupVac,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_Vac_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupVac,
-                    "Temperature Transmitter", "TT", "Vac-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupVac,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_Vac_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupWtrC,
-                    "Flow Switch", "FS", "WtrC-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupWtrC,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_WtrC_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupWtrC,
-                    "Input Output Controller", "IOC", "WtrC-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupWtrC,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_WtrC_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupWtrC,
-                    "RF Antenna", "RFA", "WtrC-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupWtrC,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_WtrC_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupWtrC,
-                    "Temperature Transmitter", "TT", "WtrC-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupWtrC,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_WtrC_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupBMD,
-                    "Flow Switch", "FS", "BMD-FS", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupBMD,
+                    "Flow Switch", "FS",
+                    "empty", "empty");
             createdStructureElement_BMD_FS = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupBMD,
-                    "Input Output Controller", "IOC", "BMD-IOC", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupBMD,
+                    "Input Output Controller", "IOC",
+                    "empty", "empty");
             createdStructureElement_BMD_IOC = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupBMD,
-                    "RF Antenna", "RFA", "BMD-RFA", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupBMD,
+                    "RF Antenna", "RFA",
+                    "empty", "empty");
             createdStructureElement_BMD_RFA = ITUtilStructureElement.assertCreate(structureElement);
 
-            structureElement = new StructureElement(
-                    Type.DEVICETYPE, null, deviceGroupBMD,
-                    "Temperature Transmitter", "TT", "BMD-TT", 3,
-                    "empty", Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                    null, "test who", "empty");
+            structureElement = new StructureElementCommand(
+                    null, Type.DEVICETYPE, deviceGroupBMD,
+                    "Temperature Transmitter", "TT",
+                    "empty", "empty");
             createdStructureElement_BMD_TT = ITUtilStructureElement.assertCreate(structureElement);
 
             // ----------------------------------------------------------------------------------------------------
diff --git a/src/test/java/org/openepics/names/util/NameElementUtilTest.java b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
index 1751b8856dca62a033c74e1a45a7ef6c8dbc2046..7424047f15498b1ef2598c8cb21d86cc1e238551 100644
--- a/src/test/java/org/openepics/names/util/NameElementUtilTest.java
+++ b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
@@ -24,8 +24,8 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 
 import org.junit.jupiter.api.Test;
 import org.openepics.names.repository.model.Name;
-import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
+import org.openepics.names.rest.beans.simplified.NameElement;
 
 /**
  * Unit tests for NameElementUtil class.
diff --git a/src/test/java/org/openepics/names/util/StructureElementUtilTest.java b/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
index b0fca7edf937d71d187594b92c49030e8f207a1b..08edd6b746c93a3d814395de0546815fa7e05299 100644
--- a/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
+++ b/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
@@ -23,7 +23,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import org.junit.jupiter.api.Test;
-import org.openepics.names.rest.beans.StructureElement;
+import org.openepics.names.rest.beans.simplified.StructureElement;
 
 /**
  * Unit tests for StructureElementUtil class.