From 178a5590c6651c4afa8cfc5bcf9487c790c3cd90 Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Fri, 27 Jan 2023 09:03:49 +0100
Subject: [PATCH] Update schemas and json handling for structures with content
 more closely suited for operations

Update schemas and json handling for structures with content more closely suited for operations.
Update api, controller, service, validation, integration tests.
---
 .../names/rest/api/v1/IStructures.java        |  152 +-
 .../StructureElementCommandConfirm.java       |  121 ++
 .../StructureElementCommandCreate.java        |  171 +++
 .../StructureElementCommandUpdate.java        |  102 ++
 .../rest/controller/NamesController.java      |   15 +-
 .../rest/controller/StructuresController.java |  107 +-
 .../names/service/DeviceGroupService.java     |   84 +-
 .../names/service/DeviceTypeService.java      |   72 +-
 .../names/service/DisciplineService.java      |   82 +-
 .../names/service/StructuresService.java      |    5 +-
 .../names/service/SubsystemService.java       |   72 +-
 .../names/service/SystemGroupService.java     |   82 +-
 .../names/service/SystemService.java          |   84 +-
 .../org/openepics/names/util/ExcelUtil.java   |    4 +-
 .../openepics/names/util/NameElementUtil.java |  357 +++--
 .../names/util/StructureElementUtil.java      |  311 +++-
 .../names/util/ValidateNameElementUtil.java   |   37 +-
 .../util/ValidateStructureElementUtil.java    |  329 +++--
 .../names/docker/ITUtilNameElement.java       |   87 --
 .../names/docker/ITUtilStructureElement.java  |  338 +++--
 .../org/openepics/names/docker/NamesIT.java   |  155 +-
 .../names/docker/StructuresDeviceGroupIT.java | 1274 +++++++++--------
 .../names/docker/StructuresDeviceTypeIT.java  | 1222 ++++++++--------
 .../names/docker/StructuresDisciplineIT.java  | 1188 +++++++--------
 .../names/docker/StructuresSubsystemIT.java   | 1222 ++++++++--------
 .../names/docker/StructuresSystemGroupIT.java | 1242 ++++++++--------
 .../names/docker/StructuresSystemIT.java      | 1214 ++++++++--------
 .../docker/complex/NamesInstanceIndexIT.java  |  321 ++---
 .../names/docker/complex/NamesMultipleIT.java |  372 ++---
 .../docker/complex/StructuresCUDDeleteIT.java |  205 +--
 .../complex/StructuresCUDNamesLegacyIT.java   |  307 ++--
 .../docker/complex/StructuresCUDUpdateIT.java |  267 ++--
 .../docker/complex/StructuresLevel3IT.java    |  398 ++---
 .../docker/complex/StructuresMultipleIT.java  | 1090 ++++++++------
 .../names/util/NameElementUtilTest.java       |  304 +++-
 .../names/util/StructureElementUtilTest.java  |  331 ++++-
 36 files changed, 7881 insertions(+), 5843 deletions(-)
 create mode 100644 src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java
 create mode 100644 src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java
 create mode 100644 src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandUpdate.java

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 2a7ee586..2b1f9ccc 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
@@ -24,7 +24,9 @@ import org.openepics.names.rest.beans.FieldStructure;
 import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
-import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
@@ -65,6 +67,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 public interface IStructures {
 
     /*
+       StructureElementCommandCreate  -       type, parent, name, mnemonic, description, comment
+       StructureElementCommandUpdate  - uuid, type, parent, name, mnemonic, description, comment
+       StructureElementCommandConfirm - uuid, type,                                      comment
+       ----------------------------------------------------------------------------------------------------
+       converted into StructureElementCommand
+       ----------------------------------------------------------------------------------------------------
        StructureElementCommand - subset of StructureElement attributes
        StructureElement
                           uuid            (UUID)
@@ -84,7 +92,7 @@ public interface IStructures {
                           who             (String)
 
        Methods
-           create    POST   /structures                                       - createStructures               (List<StructureElementCommand>)
+           create    POST   /structures                                       - createStructures               (List<StructureElementCommandCreate>)
            create    POST   /structures/upload                                - createStructures               (MultipartFile)
            ----------------------------------------------------------------------------------------------------
            read      GET    /structures/{type}                                - readStructures                 (Type, Status[], Boolean, String, String, String, String, String, String, String, FieldStructure, Boolean, Integer, Integer)
@@ -98,24 +106,24 @@ 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<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>)
+           read      GET    /structures/validateCreate                        - validateStructuresCreate       (List<StructureElementCommandCreate>)
+           read      GET    /structures/validateUpdate                        - validateStructuresUpdate       (List<StructureElementCommandUpdate>)
+           read      GET    /structures/validateDelete                        - validateStructuresDelete       (List<StructureElementCommandConfirm>)
+           read      GET    /structures/validateApprove                       - validateStructuresApprove      (List<StructureElementCommandConfirm>)
+           read      GET    /structures/validateCancel                        - validateStructuresCancel       (List<StructureElementCommandConfirm>)
+           read      GET    /structures/validateReject                        - validateStructuresReject       (List<StructureElementCommandConfirm>)
            ----------------------------------------------------------------------------------------------------
-           update    PUT    /structures                                       - updateStructures               (List<StructureElementCommand>)
+           update    PUT    /structures                                       - updateStructures               (List<StructureElementCommandUpdate>)
            update    PUT    /structures/upload                                - updateStructures               (MultipartFile)
            ----------------------------------------------------------------------------------------------------
-           delete    DELETE /structures                                       - deleteStructures               (List<StructureElementCommand>)
+           delete    DELETE /structures                                       - deleteStructures               (List<StructureElementCommandConfirm>)
            delete    DELETE /structures/upload                                - deleteStructures               (MultipartFile)
            ----------------------------------------------------------------------------------------------------
-           update    PATCH  /structures/approve                               - approveStructures              (List<StructureElementCommand>)
+           update    PATCH  /structures/approve                               - approveStructures              (List<StructureElementCommandConfirm>)
            update    PATCH  /structures/approve/upload                        - approveStructures              (MultipartFile)
-           update    PATCH  /structures/cancel                                - cancelStructures               (List<StructureElementCommand>)
+           update    PATCH  /structures/cancel                                - cancelStructures               (List<StructureElementCommandConfirm>)
            update    PATCH  /structures/cancel/upload                         - cancelStructures               (MultipartFile)
-           update    PATCH  /structures/reject                                - rejectStructures               (List<StructureElementCommand>)
+           update    PATCH  /structures/reject                                - rejectStructures               (List<StructureElementCommandConfirm>)
            update    PATCH  /structures/reject/upload                         - rejectStructures               (MultipartFile)
 
        Note
@@ -201,9 +209,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandCreate.class,
+                                            requiredProperties = {"type","name","description","comment"}))))
+            @RequestBody List<StructureElementCommandCreate> structureElementCommands);
 
     /**
      * Create (propose) structures by upload Excel file.
@@ -710,6 +718,14 @@ public interface IStructures {
      * </ul>
      * </p>
      *
+     * <p>
+     * Note that method will always return false for DeviceGroup. Because DeviceGroup does not have mnemonic,
+     * its mnemonic path is the mnemonic of its parent (Discipline).  However a query for mnemonic path
+     * for DeviceGroup is ambiguous as it lacks mnemonic. Purpose of method is to check is a particular entry
+     * exists in hierarchy of structures. Purpose of method is not to check if multiple entries match mnemonic path.
+     * Therefor method returns false for DeviceGroup.
+     * </p>
+     *
      * @param type type of structure to search in
      * @param mnemonicPath mnemonic path to find structure for
      * @return if mnemonic path exists in structure
@@ -719,6 +735,12 @@ public interface IStructures {
             description = """
                           Return if mnemonic path exists in structure (exact match).
                           Response is true if mnemonic path exists, false otherwise.
+
+                          Note that method will always return false for DeviceGroup. Because DeviceGroup does not have mnemonic,
+                          its mnemonic path is the mnemonic of its parent (Discipline).  However a query for mnemonic path
+                          for DeviceGroup is ambiguous as it lacks mnemonic. Purpose of method is to check is a particular entry
+                          exists in hierarchy of structures. Purpose of method is not to check if multiple entries match mnemonic path.
+                          Therefor method returns false for DeviceGroup.
                           """
     )
     @ApiResponses(value = {
@@ -909,9 +931,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandCreate.class,
+                                            requiredProperties = {"type","name","description","comment"}))))
+            @RequestBody List<StructureElementCommandCreate> structureElementCommands);
 
     /**
      * Return if structures are valid to update (propose) by list of structure element commands.
@@ -996,9 +1018,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandUpdate.class,
+                                            requiredProperties = {"uuid","type","name","description","comment"}))))
+            @RequestBody List<StructureElementCommandUpdate> structureElementCommands);
 
     /**
      * Return if structures are valid to delete (propose) by list of structure element commands.
@@ -1079,9 +1101,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
+                                            implementation = StructureElementCommandConfirm.class,
                                             requiredProperties = {"uuid","type","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Return if structures are valid to approve by list of structure element commands.
@@ -1111,10 +1133,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1166,9 +1184,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Return if structures are valid to cancel by list of structure element commands.
@@ -1198,10 +1216,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1253,9 +1267,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Return if structures are valid to reject by list of structure element commands.
@@ -1285,10 +1299,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1340,9 +1350,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     // ----------------------------------------------------------------------------------------------------
 
@@ -1413,9 +1423,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandUpdate.class,
+                                            requiredProperties = {"uuid","type","name","description","comment"}))))
+            @RequestBody List<StructureElementCommandUpdate> structureElementCommands);
 
     /**
      * Update (propose) structures by upload Excel file.
@@ -1551,9 +1561,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
+                                            implementation = StructureElementCommandConfirm.class,
                                             requiredProperties = {"uuid","type","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Delete (propose) structures by upload Excel file.
@@ -1643,10 +1653,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1695,9 +1701,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Approve structures (proposals) by upload Excel file.
@@ -1723,10 +1729,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1788,10 +1790,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
 )
@@ -1840,9 +1838,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Cancel structures (proposals) by upload Excel file.
@@ -1862,10 +1860,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
 )
@@ -1927,10 +1921,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
@@ -1979,9 +1969,9 @@ public interface IStructures {
                             mediaType = "application/json",
                             array = @ArraySchema(
                                     schema = @Schema(
-                                            implementation = StructureElementCommand.class,
-                                            requiredProperties = {"uuid","type","parent","name","mnemonic","description","comment"}))))
-            @RequestBody List<StructureElementCommand> structureElements);
+                                            implementation = StructureElementCommandConfirm.class,
+                                            requiredProperties = {"uuid","type","comment"}))))
+            @RequestBody List<StructureElementCommandConfirm> structureElementCommands);
 
     /**
      * Reject structures (proposals) by upload Excel file.
@@ -2001,10 +1991,6 @@ public interface IStructures {
                           Required attributes:
                           - uuid
                           - type
-                          - parent (System, Subsystem, DeviceGroup, DeviceType)(uuid)
-                          - name
-                          - mnemonic (System, Subsystem, Discipline, DeviceType, may be set for SystemGroup, not allowed for DeviceGroup)
-                          - description
                           - comment
                           """
     )
diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java
new file mode 100644
index 00000000..736d78c3
--- /dev/null
+++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandConfirm.java
@@ -0,0 +1,121 @@
+package org.openepics.names.rest.beans.element;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.UUID;
+
+import org.openepics.names.rest.beans.Type;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+public class StructureElementCommandConfirm implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 4363449987852744536L;
+
+    @Schema(description = "Identity (uuid) of the structure entry. Value is created server-side.")
+    private UUID uuid;
+    @Schema(description = "Type of the structure entry. Valid values - SYSTEMGROUP, SYSTEM, SUBSYSTEM, DISCIPLINE, DEVICEGROUP, DEVICETYPE.")
+    private Type type;
+    @Schema(description = "Comment of the structure entry command.")
+    private String comment;
+
+    /**
+     * Public constructor.
+     */
+    public StructureElementCommandConfirm() {
+    }
+
+    /**
+     * Public constructor.
+     *
+     * @param uuid uuid
+     * @param type type
+     * @param comment comment
+     */
+    public StructureElementCommandConfirm(
+            UUID uuid, Type type, String comment) {
+        super();
+        this.uuid = uuid;
+        this.type = type;
+        this.comment = comment;
+    }
+
+    public UUID getUuid() {
+        return uuid;
+    }
+    public void setUuid(UUID uuid) {
+        this.uuid = uuid;
+    }
+    public Type getType() {
+        return type;
+    }
+    public void setType(Type type) {
+        this.type = type;
+    }
+    public String getComment() {
+        return comment;
+    }
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+
+        return equals ((StructureElementCommandConfirm) obj);
+    }
+
+    public boolean equals(StructureElementCommandConfirm other) {
+        if (other == null)
+            return false;
+
+        if (!super.equals(other)) {
+            return false;
+        }
+
+        if (getUuid() == null) {
+            if (other.getUuid() != null)
+                return false;
+        } else if (!getUuid().equals(other.getUuid()))
+            return false;
+        if (getType() == null) {
+            if (other.getType() != null)
+                return false;
+        } else if (!getType().equals(other.getType()))
+            return false;
+        if (getComment() == null) {
+            if (other.getComment() != null)
+                return false;
+        } else if (!getComment().equals(other.getComment()))
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getUuid());
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("{");
+        sb.append("\"uuid\": "                    + getUuid());
+        sb.append(", \"type\": "                  + getType());
+        sb.append(", \"comment\": "               + getComment());
+        sb.append("}");
+        return sb.toString();
+    }
+
+}
diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java
new file mode 100644
index 00000000..190680a5
--- /dev/null
+++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandCreate.java
@@ -0,0 +1,171 @@
+package org.openepics.names.rest.beans.element;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.UUID;
+
+import org.openepics.names.rest.beans.Type;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+public class StructureElementCommandCreate implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = 7866856977382945426L;
+
+    @Schema(description = "Type of the structure entry. Valid values - SYSTEMGROUP, SYSTEM, SUBSYSTEM, DISCIPLINE, DEVICEGROUP, DEVICETYPE.")
+    private Type type;
+    @Schema(description = "Identity (uuid) for the structure entry parent (if the structure entry has a parent).")
+    private UUID parent;
+    @Schema(description = "Name of the structure entry.")
+    private String name;
+    @Schema(description = "Mnemonic of the structure entry.")
+    private String mnemonic;
+    @Schema(description = "Description of the structure entry.")
+    private String description;
+    @Schema(description = "Comment of the structure entry command.")
+    private String comment;
+
+    /**
+     * Public constructor.
+     */
+    public StructureElementCommandCreate() {
+    }
+
+    /**
+     * Public constructor.
+     *
+     * @param type type
+     * @param parent parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param description description
+     * @param comment comment
+     */
+    public StructureElementCommandCreate(
+            Type type, UUID parent,
+            String name, String mnemonic,
+            String description, String comment) {
+        super();
+        this.type = type;
+        this.parent = parent;
+        this.name = name;
+        this.mnemonic = mnemonic;
+        this.description = description;
+        this.comment = comment;
+    }
+
+    public Type getType() {
+        return type;
+    }
+    public void setType(Type type) {
+        this.type = type;
+    }
+    public UUID getParent() {
+        return parent;
+    }
+    public void setParent(UUID parent) {
+        this.parent = parent;
+    }
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getMnemonic() {
+        return mnemonic;
+    }
+    public void setMnemonic(String mnemonic) {
+        this.mnemonic = mnemonic;
+    }
+    public String getDescription() {
+        return description;
+    }
+    public void setDescription(String description) {
+        this.description = description;
+    }
+    public String getComment() {
+        return comment;
+    }
+    public void setComment(String comment) {
+        this.comment = comment;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+
+        return equals ((StructureElementCommandCreate) obj);
+    }
+
+    public boolean equals(StructureElementCommandCreate other) {
+        if (other == null)
+            return false;
+
+        if (!super.equals(other)) {
+            return false;
+        }
+
+        if (getType() == null) {
+            if (other.getType() != null)
+                return false;
+        } else if (!getType().equals(other.getType()))
+            return false;
+        if (getParent() == null) {
+            if (other.getParent() != null)
+                return false;
+        } else if (!getParent().equals(other.getParent()))
+            return false;
+        if (getName() == null) {
+            if (other.getName() != null)
+                return false;
+        } else if (!getName().equals(other.getName()))
+            return false;
+        if (getMnemonic() == null) {
+            if (other.getMnemonic() != null)
+                return false;
+        } else if (!getMnemonic().equals(other.getMnemonic()))
+            return false;
+        if (getDescription() == null) {
+            if (other.getDescription() != null)
+                return false;
+        } else if (!getDescription().equals(other.getDescription()))
+            return false;
+        if (getComment() == null) {
+            if (other.getComment() != null)
+                return false;
+        } else if (!getComment().equals(other.getComment()))
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(
+                getType(), getParent(), getName(), getMnemonic(), getDescription(), getComment());
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("{");
+        sb.append("\"type\": "                    + getType());
+        sb.append(", \"parent\": "                + getParent());
+        sb.append(", \"name\": "                  + getName());
+        sb.append(", \"mnemonic\": "              + getMnemonic());
+        sb.append(", \"description\": "           + getDescription());
+        sb.append(", \"comment\": "               + getComment());
+        sb.append("}");
+        return sb.toString();
+    }
+
+}
diff --git a/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandUpdate.java b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandUpdate.java
new file mode 100644
index 00000000..141bcc2c
--- /dev/null
+++ b/src/main/java/org/openepics/names/rest/beans/element/StructureElementCommandUpdate.java
@@ -0,0 +1,102 @@
+package org.openepics.names.rest.beans.element;
+
+import java.io.Serializable;
+import java.util.Objects;
+import java.util.UUID;
+
+import org.openepics.names.rest.beans.Type;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+
+public class StructureElementCommandUpdate extends StructureElementCommandCreate implements Serializable {
+
+    /**
+     *
+     */
+    private static final long serialVersionUID = -3346987084345524300L;
+
+    @Schema(description = "Identity (uuid) of the structure entry. Value is created server-side.")
+    private UUID uuid;
+
+    /**
+     * Public constructor.
+     */
+    public StructureElementCommandUpdate() {
+    }
+
+    /**
+     * Public constructor.
+     *
+     * @param uuid uuid
+     * @param type type
+     * @param parent parent uuid
+     * @param name name
+     * @param mnemonic mnemonic
+     * @param description description
+     * @param comment comment
+     */
+    public StructureElementCommandUpdate(
+            UUID uuid, Type type, UUID parent,
+            String name, String mnemonic,
+            String description, String comment) {
+        super(type, parent, name, mnemonic, description, comment);
+        this.uuid = uuid;
+    }
+
+    public UUID getUuid() {
+        return uuid;
+    }
+    public void setUuid(UUID uuid) {
+        this.uuid = uuid;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+
+        return equals ((StructureElementCommandUpdate) obj);
+    }
+
+    public boolean equals(StructureElementCommandUpdate other) {
+        if (other == null)
+            return false;
+
+        if (!super.equals(other)) {
+            return false;
+        }
+
+        if (getUuid() == null) {
+            if (other.getUuid() != null)
+                return false;
+        } else if (!getUuid().equals(other.getUuid()))
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getUuid());
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append("{");
+        sb.append("\"uuid\": "                    + getUuid());
+        sb.append(", \"type\": "                  + getType());
+        sb.append(", \"parent\": "                + getParent());
+        sb.append(", \"name\": "                  + getName());
+        sb.append(", \"mnemonic\": "              + getMnemonic());
+        sb.append(", \"description\": "           + getDescription());
+        sb.append(", \"comment\": "               + getComment());
+        sb.append("}");
+        return sb.toString();
+    }
+
+}
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 24c13f22..9b1cc613 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -100,7 +100,7 @@ public class NamesController implements INames {
         // create names
 
         try {
-            List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForCreate(nameElementCommands);
+            List<NameElementCommand> commands = NameElementUtil.convertCommandCreate2Command(nameElementCommands);
             namesService.validateNamesCreate(commands);
             return new ResponseEntity<>(namesService.createNames(commands, TextUtil.TEST_WHO), Response.getHeaderJson(), HttpStatus.CREATED);
         } catch (ServiceException e) {
@@ -352,9 +352,10 @@ public class NamesController implements INames {
 
     @Override
     public ResponseEntity<ResponseBooleanList> validateNamesCreate(List<NameElementCommandCreate> nameElementCommands) {
+        // convert
         // validate
 
-        List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForCreate(nameElementCommands);
+        List<NameElementCommand> commands = NameElementUtil.convertCommandCreate2Command(nameElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
@@ -384,9 +385,10 @@ public class NamesController implements INames {
 
     @Override
     public ResponseEntity<ResponseBooleanList> validateNamesUpdate(List<NameElementCommandUpdate> nameElementCommands) {
+        // convert
         // validate
 
-        List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForUpdate(nameElementCommands);
+        List<NameElementCommand> commands = NameElementUtil.convertCommandUpdate2Command(nameElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
@@ -416,9 +418,10 @@ public class NamesController implements INames {
 
     @Override
     public ResponseEntity<ResponseBooleanList> validateNamesDelete(List<NameElementCommandConfirm> nameElementCommands) {
+        // convert
         // validate
 
-        List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForConfirm(nameElementCommands);
+        List<NameElementCommand> commands = NameElementUtil.convertCommandConfirm2Command(nameElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
@@ -456,7 +459,7 @@ public class NamesController implements INames {
         // update names
 
         try {
-            List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForUpdate(nameElementCommands);
+            List<NameElementCommand> commands = NameElementUtil.convertCommandUpdate2Command(nameElementCommands);
             namesService.validateNamesUpdate(commands);
             return namesService.updateNames(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
@@ -514,7 +517,7 @@ public class NamesController implements INames {
         // delete names
 
         try {
-            List<NameElementCommand> commands = NameElementUtil.getNameElementCommandsForConfirm(nameElementCommands);
+            List<NameElementCommand> commands = NameElementUtil.convertCommandConfirm2Command(nameElementCommands);
             namesService.validateNamesDelete(commands);
             return namesService.deleteNames(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
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 7f99ea79..57649677 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -30,6 +30,9 @@ import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.rest.beans.response.Response;
 import org.openepics.names.rest.beans.response.ResponseBoolean;
 import org.openepics.names.rest.beans.response.ResponseBooleanList;
@@ -37,6 +40,7 @@ import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
 import org.openepics.names.service.LogService;
 import org.openepics.names.service.StructuresService;
 import org.openepics.names.util.ExcelUtil;
+import org.openepics.names.util.StructureElementUtil;
 import org.openepics.names.util.TextUtil;
 import org.openepics.names.util.ValidateStructureElementUtil;
 import org.openepics.names.util.ValidateUtil;
@@ -90,14 +94,16 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<List<StructureElement>> createStructures(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<List<StructureElement>> createStructures(List<StructureElementCommandCreate> structureElementCommands) {
         // validate authority - user & admin
+        // convert
         // validate
         // create structures
 
         try {
-            structuresService.validateStructuresCreate(structureElements);
-            return new ResponseEntity<>(structuresService.createStructures(structureElements, TextUtil.TEST_WHO), Response.getHeaderJson(), HttpStatus.CREATED);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandCreate2Command(structureElementCommands);
+            structuresService.validateStructuresCreate(commands);
+            return new ResponseEntity<>(structuresService.createStructures(commands, TextUtil.TEST_WHO), Response.getHeaderJson(), HttpStatus.CREATED);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -112,6 +118,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> createStructures(MultipartFile file) {
         // validate authority - user & admin
         // convert from input
+        // ( convert )
         // validate
         // create structures
         // convert to output
@@ -327,15 +334,19 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresCreate(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresCreate(List<StructureElementCommandCreate> structureElementCommands) {
+        // convert
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandCreate2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        LOGGER.log(Level.INFO, "validateStructuresCreate, commands.size: " + commands.size());
+        for (StructureElementCommand command : commands) {
+            LOGGER.log(Level.INFO, "validateStructuresCreate, command: " + command);
             try {
-                structuresService.validateStructuresCreate(structureElement);
+                structuresService.validateStructuresCreate(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -358,15 +369,17 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresUpdate(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresUpdate(List<StructureElementCommandUpdate> structureElementCommands) {
+        // convert
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandUpdate2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        for (StructureElementCommand command : commands) {
             try {
-                structuresService.validateStructuresUpdate(structureElement);
+                structuresService.validateStructuresUpdate(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -389,15 +402,17 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresDelete(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresDelete(List<StructureElementCommandConfirm> structureElementCommands) {
+        // convert
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        for (StructureElementCommand command : commands) {
             try {
-                structuresService.validateStructuresDelete(structureElement);
+                structuresService.validateStructuresDelete(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -420,15 +435,17 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresApprove(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresApprove(List<StructureElementCommandConfirm> structureElementCommands) {
+        // convert
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        for (StructureElementCommand command : commands) {
             try {
-                structuresService.validateStructuresApprove(structureElement);
+                structuresService.validateStructuresApprove(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -451,15 +468,16 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresCancel(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresCancel(List<StructureElementCommandConfirm> structureElementCommands) {
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        for (StructureElementCommand command : commands) {
             try {
-                structuresService.validateStructuresCancel(structureElement);
+                structuresService.validateStructuresCancel(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -482,15 +500,17 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponseEntity<ResponseBooleanList> validateStructuresReject(List<StructureElementCommand> structureElements) {
+    public ResponseEntity<ResponseBooleanList> validateStructuresReject(List<StructureElementCommandConfirm> structureElementCommands) {
+        // convert
         // validate
 
+        List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
         boolean response = true;
         String reason = "";
         List<ResponseBoolean> responses = Lists.newArrayList();
-        for (StructureElementCommand structureElement : structureElements) {
+        for (StructureElementCommand command : commands) {
             try {
-                structuresService.validateStructuresReject(structureElement);
+                structuresService.validateStructuresReject(command);
                 responses.add(new ResponseBoolean(Boolean.TRUE));
             } catch (ServiceException e) {
                 logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -515,14 +535,16 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> updateStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> updateStructures(List<StructureElementCommandUpdate> structureElementCommands) {
         // validate authority - user & admin
+        // convert
         // validate
         // update structures
 
         try {
-            structuresService.validateStructuresUpdate(structureElements);
-            return structuresService.updateStructures(structureElements, TextUtil.TEST_WHO);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandUpdate2Command(structureElementCommands);
+            structuresService.validateStructuresUpdate(commands);
+            return structuresService.updateStructures(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -537,6 +559,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> updateStructures(MultipartFile file) {
         // validate authority - user & admin
         // convert from input
+        // ( convert )
         // validate
         // update structures
         // convert to output
@@ -570,14 +593,16 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> deleteStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> deleteStructures(List<StructureElementCommandConfirm> structureElementCommands) {
         // validate authority - user & admin
+        // convert
         // validate
         // delete structures
 
         try {
-            structuresService.validateStructuresDelete(structureElements);
-            return structuresService.deleteStructures(structureElements, TextUtil.TEST_WHO);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
+            structuresService.validateStructuresDelete(commands);
+            return structuresService.deleteStructures(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -592,6 +617,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> deleteStructures(MultipartFile file) {
         // validate authority - user & admin
         // convert from input
+        // ( convert )
         // validate
         // delete structures
         // convert to output
@@ -625,14 +651,16 @@ public class StructuresController implements IStructures {
     // ----------------------------------------------------------------------------------------------------
 
     @Override
-    public List<StructureElement> approveStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> approveStructures(List<StructureElementCommandConfirm> structureElementCommands) {
         // validate authority - admin
+        // convert
         // validate
         // approve structures
 
         try {
-            structuresService.validateStructuresApprove(structureElements);
-            return structuresService.approveStructures(structureElements, TextUtil.TEST_WHO);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
+            structuresService.validateStructuresApprove(commands);
+            return structuresService.approveStructures(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -647,6 +675,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> approveStructures(MultipartFile file) {
         // validate authority - admin
         // convert from input
+        // ( convert )
         // validate
         // approve structures
         // convert to output
@@ -678,14 +707,16 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public List<StructureElement> cancelStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> cancelStructures(List<StructureElementCommandConfirm> structureElementCommands) {
         // validate authority - admin
+        // convert
         // validate
         // cancel structures
 
         try {
-            structuresService.validateStructuresCancel(structureElements);
-            return structuresService.cancelStructures(structureElements, TextUtil.TEST_WHO);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
+            structuresService.validateStructuresCancel(commands);
+            return structuresService.cancelStructures(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -700,6 +731,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> cancelStructures(MultipartFile file) {
         // validate authority - admin
         // convert from input
+        // ( convert )
         // validate
         // cancel structures
         // convert to output
@@ -731,14 +763,16 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public List<StructureElement> rejectStructures(List<StructureElementCommand> structureElements) {
+    public List<StructureElement> rejectStructures(List<StructureElementCommandConfirm> structureElementCommands) {
         // validate authority - admin
+        // convert
         // validate
         // reject structures
 
         try {
-            structuresService.validateStructuresReject(structureElements);
-            return structuresService.rejectStructures(structureElements, TextUtil.TEST_WHO);
+            List<StructureElementCommand> commands = StructureElementUtil.convertCommandConfirm2Command(structureElementCommands);
+            structuresService.validateStructuresReject(commands);
+            return structuresService.rejectStructures(commands, TextUtil.TEST_WHO);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -753,6 +787,7 @@ public class StructuresController implements IStructures {
     public ResponseEntity<Resource> rejectStructures(MultipartFile file) {
         // validate authority - admin
         // convert from input
+        // ( convert )
         // validate
         // reject structures
         // convert to output
diff --git a/src/main/java/org/openepics/names/service/DeviceGroupService.java b/src/main/java/org/openepics/names/service/DeviceGroupService.java
index 06a6e151..f945cba2 100644
--- a/src/main/java/org/openepics/names/service/DeviceGroupService.java
+++ b/src/main/java/org/openepics/names/service/DeviceGroupService.java
@@ -83,28 +83,32 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        DeviceGroup deviceGroup = new DeviceGroup(UUID.randomUUID(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        DeviceGroup deviceGroup = new DeviceGroup(UUID.randomUUID(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         deviceGroupRepository.createDeviceGroup(deviceGroup);
 
         return new StructureElementNotification(
@@ -113,29 +117,33 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        DeviceGroup deviceGroup = new DeviceGroup(structureElement.getUuid(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        DeviceGroup deviceGroup = new DeviceGroup(structureElementCommand.getUuid(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         deviceGroupRepository.createDeviceGroup(deviceGroup);
 
         // previous
@@ -148,18 +156,22 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null, null);
+        List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(deviceGroups, 1)) {
             return null;
         }
@@ -169,7 +181,7 @@ public class DeviceGroupService {
         DeviceGroup deviceGroup = new DeviceGroup(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         deviceGroupRepository.createDeviceGroup(deviceGroup);
 
         return new StructureElementNotification(
@@ -178,10 +190,11 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -204,8 +217,11 @@ public class DeviceGroupService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -226,7 +242,7 @@ public class DeviceGroupService {
         deviceGroup = deviceGroups.get(0);
 
         // approve
-        deviceGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        deviceGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         deviceGroup.setLatest(Boolean.TRUE);
         deviceGroupRepository.updateDeviceGroup(deviceGroup);
 
@@ -239,16 +255,16 @@ public class DeviceGroupService {
         if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
-            List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+            List<StructureElementCommand> commands = Lists.newArrayList();
             List<DeviceType> deviceTypes = iDeviceTypeRepository.findLatestNotDeletedByParent(uuid);
             for (DeviceType deviceType : deviceTypes) {
-                structureElementCommands.add(new StructureElementCommand(deviceType.getUuid(), Type.DEVICETYPE, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
+                commands.add(new StructureElementCommand(deviceType.getUuid(), Type.DEVICETYPE, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceTypeService.deleteStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                deviceTypeService.deleteStructure(command, when, username, holder);
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceTypeService.approveStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                deviceTypeService.approveStructure(command, when, username, holder);
             }
         }
 
@@ -260,18 +276,22 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -281,7 +301,7 @@ public class DeviceGroupService {
         DeviceGroup deviceGroup = deviceGroups.get(0);
 
         // cancel
-        deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        deviceGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         deviceGroupRepository.updateDeviceGroup(deviceGroup);
 
         // previous
@@ -297,18 +317,22 @@ public class DeviceGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<DeviceGroup> deviceGroups = deviceGroupRepository.readDeviceGroups(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -318,7 +342,7 @@ public class DeviceGroupService {
         DeviceGroup deviceGroup = deviceGroups.get(0);
 
         // reject
-        deviceGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        deviceGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         deviceGroupRepository.updateDeviceGroup(deviceGroup);
 
         // previous
diff --git a/src/main/java/org/openepics/names/service/DeviceTypeService.java b/src/main/java/org/openepics/names/service/DeviceTypeService.java
index ca6defa6..3a2756b0 100644
--- a/src/main/java/org/openepics/names/service/DeviceTypeService.java
+++ b/src/main/java/org/openepics/names/service/DeviceTypeService.java
@@ -76,28 +76,32 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        DeviceType deviceType = new DeviceType(UUID.randomUUID(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        DeviceType deviceType = new DeviceType(UUID.randomUUID(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         deviceTypeRepository.createDeviceType(deviceType);
 
         return new StructureElementNotification(
@@ -106,29 +110,33 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        DeviceType deviceType = new DeviceType(structureElement.getUuid(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        DeviceType deviceType = new DeviceType(structureElementCommand.getUuid(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         deviceTypeRepository.createDeviceType(deviceType);
 
         // previous
@@ -141,18 +149,22 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null, null);
+        List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
             return null;
         }
@@ -162,7 +174,7 @@ public class DeviceTypeService {
         DeviceType deviceType = new DeviceType(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         deviceTypeRepository.createDeviceType(deviceType);
 
         return new StructureElementNotification(
@@ -171,10 +183,11 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -197,8 +210,11 @@ public class DeviceTypeService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -219,7 +235,7 @@ public class DeviceTypeService {
         deviceType = deviceTypes.get(0);
 
         // approve
-        deviceType.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        deviceType.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         deviceType.setLatest(Boolean.TRUE);
         deviceTypeRepository.updateDeviceType(deviceType);
 
@@ -243,18 +259,22 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.PENDING, null, uuid, null, null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(deviceTypes, 1)) {
@@ -263,7 +283,7 @@ public class DeviceTypeService {
         DeviceType deviceType = deviceTypes.get(0);
 
         // cancel
-        deviceType.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        deviceType.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         deviceTypeRepository.updateDeviceType(deviceType);
 
         // previous
@@ -279,18 +299,22 @@ public class DeviceTypeService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<DeviceType> deviceTypes = deviceTypeRepository.readDeviceTypes(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -300,7 +324,7 @@ public class DeviceTypeService {
         DeviceType deviceType = deviceTypes.get(0);
 
         // reject
-        deviceType.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        deviceType.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         deviceTypeRepository.updateDeviceType(deviceType);
 
         // previous
diff --git a/src/main/java/org/openepics/names/service/DisciplineService.java b/src/main/java/org/openepics/names/service/DisciplineService.java
index c84e3621..b6d4100c 100644
--- a/src/main/java/org/openepics/names/service/DisciplineService.java
+++ b/src/main/java/org/openepics/names/service/DisciplineService.java
@@ -86,28 +86,32 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
         Discipline discipline = new Discipline(UUID.randomUUID(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         disciplineRepository.createDiscipline(discipline);
 
         return new StructureElementNotification(
@@ -116,29 +120,33 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        Discipline discipline = new Discipline(structureElement.getUuid(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        Discipline discipline = new Discipline(structureElementCommand.getUuid(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         disciplineRepository.createDiscipline(discipline);
 
         // previous
@@ -151,18 +159,22 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null);
+        List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(disciplines, 1)) {
             return null;
         }
@@ -172,7 +184,7 @@ public class DisciplineService {
         Discipline discipline = new Discipline(toBeDeleted.getUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         disciplineRepository.createDiscipline(discipline);
 
         return new StructureElementNotification(
@@ -181,10 +193,11 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -207,8 +220,11 @@ public class DisciplineService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null);
         Discipline discipline = null;
@@ -228,7 +244,7 @@ public class DisciplineService {
         discipline = disciplines.get(0);
 
         // approve
-        discipline.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        discipline.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         discipline.setLatest(Boolean.TRUE);
         disciplineRepository.updateDiscipline(discipline);
 
@@ -243,16 +259,16 @@ public class DisciplineService {
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
-            List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+            List<StructureElementCommand> commands = Lists.newArrayList();
             List<DeviceGroup> deviceGroups = iDeviceGroupRepository.findLatestNotDeletedByParent(uuid);
             for (DeviceGroup deviceGroup : deviceGroups) {
-                structureElementCommands.add(new StructureElementCommand(deviceGroup.getUuid(), Type.DEVICEGROUP, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
+                commands.add(new StructureElementCommand(deviceGroup.getUuid(), Type.DEVICEGROUP, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceGroupService.deleteStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                deviceGroupService.deleteStructure(command, when, username, holder);
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                deviceGroupService.approveStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                deviceGroupService.approveStructure(command, when, username, holder);
             }
         }
 
@@ -264,18 +280,22 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.PENDING, null, uuid, null, null, null, null, null);
@@ -285,7 +305,7 @@ public class DisciplineService {
         Discipline discipline = disciplines.get(0);
 
         // cancel
-        discipline.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        discipline.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         disciplineRepository.updateDiscipline(discipline);
 
         // previous
@@ -301,18 +321,22 @@ public class DisciplineService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<Discipline> disciplines = disciplineRepository.readDisciplines(Status.PENDING, null, uuid, null, null, null, null, null);
@@ -322,7 +346,7 @@ public class DisciplineService {
         Discipline discipline = disciplines.get(0);
 
         // reject
-        discipline.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        discipline.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         disciplineRepository.updateDiscipline(discipline);
 
         // previous
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 02b6d4d1..befbaef6 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -553,8 +553,9 @@ public class StructuresService {
             List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, null, null, null, null, mnemonicPath, null);
             return !disciplines.isEmpty();
         } else if (Type.DEVICEGROUP.equals(type)) {
-            List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, null, null, null, null, null, mnemonicPath, null);
-            return !deviceGroups.isEmpty();
+//            List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, null, null, null, null, null, mnemonicPath, null);
+//            return !deviceGroups.isEmpty();
+            return Boolean.FALSE;
         } else if (Type.DEVICETYPE.equals(type)) {
             List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, null, null, null, null, null, mnemonicPath, null);
             return !deviceTypes.isEmpty();
diff --git a/src/main/java/org/openepics/names/service/SubsystemService.java b/src/main/java/org/openepics/names/service/SubsystemService.java
index e35fe8ad..2a05eca7 100644
--- a/src/main/java/org/openepics/names/service/SubsystemService.java
+++ b/src/main/java/org/openepics/names/service/SubsystemService.java
@@ -77,28 +77,32 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        Subsystem subsystem = new Subsystem(UUID.randomUUID(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        Subsystem subsystem = new Subsystem(UUID.randomUUID(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         subsystemRepository.createSubsystem(subsystem);
 
         return new StructureElementNotification(
@@ -107,29 +111,33 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        Subsystem subsystem = new Subsystem(structureElement.getUuid(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        Subsystem subsystem = new Subsystem(structureElementCommand.getUuid(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         subsystemRepository.createSubsystem(subsystem);
 
         // previous
@@ -142,18 +150,22 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null, null);
+        List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(subsystems, 1)) {
             return null;
         }
@@ -163,7 +175,7 @@ public class SubsystemService {
         Subsystem subsystem = new Subsystem(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         subsystemRepository.createSubsystem(subsystem);
 
         return new StructureElementNotification(
@@ -172,10 +184,11 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -198,8 +211,11 @@ public class SubsystemService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -220,7 +236,7 @@ public class SubsystemService {
         subsystem = subsystems.get(0);
 
         // approve
-        subsystem.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        subsystem.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         subsystem.setLatest(Boolean.TRUE);
         subsystemRepository.updateSubsystem(subsystem);
 
@@ -251,18 +267,22 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -272,7 +292,7 @@ public class SubsystemService {
         Subsystem subsystem = subsystems.get(0);
 
         // cancel
-        subsystem.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        subsystem.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         subsystemRepository.updateSubsystem(subsystem);
 
         // previous
@@ -288,18 +308,22 @@ public class SubsystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<Subsystem> subsystems = subsystemRepository.readSubsystems(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -309,7 +333,7 @@ public class SubsystemService {
         Subsystem subsystem = subsystems.get(0);
 
         // reject
-        subsystem.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        subsystem.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         subsystemRepository.updateSubsystem(subsystem);
 
         // previous
diff --git a/src/main/java/org/openepics/names/service/SystemGroupService.java b/src/main/java/org/openepics/names/service/SystemGroupService.java
index 60897d1f..77925e28 100644
--- a/src/main/java/org/openepics/names/service/SystemGroupService.java
+++ b/src/main/java/org/openepics/names/service/SystemGroupService.java
@@ -87,28 +87,32 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
         SystemGroup systemGroup = new SystemGroup(UUID.randomUUID(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         systemGroupRepository.createSystemGroup(systemGroup);
 
         return new StructureElementNotification(
@@ -117,29 +121,33 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        SystemGroup systemGroup = new SystemGroup(structureElement.getUuid(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        SystemGroup systemGroup = new SystemGroup(structureElementCommand.getUuid(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         systemGroupRepository.createSystemGroup(systemGroup);
 
         // previous
@@ -152,18 +160,22 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null);
+        List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(systemGroups, 1)) {
             return null;
         }
@@ -173,7 +185,7 @@ public class SystemGroupService {
         SystemGroup systemGroup = new SystemGroup(toBeDeleted.getUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         systemGroupRepository.createSystemGroup(systemGroup);
 
         return new StructureElementNotification(
@@ -182,10 +194,11 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -208,8 +221,11 @@ public class SystemGroupService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null);
@@ -230,7 +246,7 @@ public class SystemGroupService {
         systemGroup = systemGroups.get(0);
 
         // approve
-        systemGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        systemGroup.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         systemGroup.setLatest(Boolean.TRUE);
         systemGroupRepository.updateSystemGroup(systemGroup);
 
@@ -252,16 +268,16 @@ public class SystemGroupService {
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
-            List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+            List<StructureElementCommand> commands = Lists.newArrayList();
             List<System> systems = iSystemRepository.findLatestNotDeletedByParent(uuid);
             for (System system : systems) {
-                structureElementCommands.add(new StructureElementCommand(system.getUuid(), Type.SYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
+                commands.add(new StructureElementCommand(system.getUuid(), Type.SYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                systemService.deleteStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                systemService.deleteStructure(command, when, username, holder);
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                systemService.approveStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                systemService.approveStructure(command, when, username, holder);
             }
         }
 
@@ -273,18 +289,22 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.PENDING, null, uuid, null, null, null, null, null);
@@ -294,7 +314,7 @@ public class SystemGroupService {
         SystemGroup systemGroup = systemGroups.get(0);
 
         // cancel
-        systemGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        systemGroup.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         systemGroupRepository.updateSystemGroup(systemGroup);
 
         // previous
@@ -310,18 +330,22 @@ public class SystemGroupService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<SystemGroup> systemGroups = systemGroupRepository.readSystemGroups(Status.PENDING, null, uuid, null, null, null, null, null);
@@ -331,7 +355,7 @@ public class SystemGroupService {
         SystemGroup systemGroup = systemGroups.get(0);
 
         // reject
-        systemGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        systemGroup.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         systemGroupRepository.updateSystemGroup(systemGroup);
 
         // previous
diff --git a/src/main/java/org/openepics/names/service/SystemService.java b/src/main/java/org/openepics/names/service/SystemService.java
index dd471d15..2e18c69d 100644
--- a/src/main/java/org/openepics/names/service/SystemService.java
+++ b/src/main/java/org/openepics/names/service/SystemService.java
@@ -87,28 +87,32 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification createStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification createStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        System system = new System(UUID.randomUUID(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        System system = new System(UUID.randomUUID(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         systemRepository.createSystem(system);
 
         return new StructureElementNotification(
@@ -117,29 +121,33 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification updateStructure(StructureElementCommand structureElement, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification updateStructure(StructureElementCommand structureElementCommand, Date when, String username, EssNamingConvention namingConvention, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     create structure to pending, not latest, not deleted, with data
         //     find out previous
         //     return
         //         structure element for updated structure
         //         notification
+        //
+        // attributes
+        //     uuid, type, parent, name, mnemonic, description, comment
 
         // note
         //     namingConvention.equivalenceClassRepresentative return null for null input
         //     rules for mnemonic
 
-        String mnemonic = structureElement.getMnemonic();
+        String mnemonic = structureElementCommand.getMnemonic();
         mnemonic = StringUtils.isEmpty(mnemonic) ? null : mnemonic;
         String equivalenceClassRepresentative = namingConvention.equivalenceClassRepresentative(mnemonic);
 
         // create
-        System system = new System(structureElement.getUuid(), structureElement.getParent(),
-                structureElement.getName(), mnemonic, equivalenceClassRepresentative,
-                structureElement.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
-                when, username, structureElement.getComment());
+        System system = new System(structureElementCommand.getUuid(), structureElementCommand.getParent(),
+                structureElementCommand.getName(), mnemonic, equivalenceClassRepresentative,
+                structureElementCommand.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.FALSE,
+                when, username, structureElementCommand.getComment());
         systemRepository.createSystem(system);
 
         // previous
@@ -152,18 +160,22 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification deleteStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification deleteStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     create structure to pending, not latest, deleted, with data
         //     return
         //         structure element for deleted structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
         // find
-        List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, structureElement.getUuid().toString(), null, null, null, null, null, null);
+        List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, structureElementCommand.getUuid().toString(), null, null, null, null, null, null);
         if (ValidateUtil.isNullOrNotSize(systems, 1)) {
             return null;
         }
@@ -173,7 +185,7 @@ public class SystemService {
         System system = new System(toBeDeleted.getUuid(), toBeDeleted.getParentUuid(),
                 toBeDeleted.getName(), toBeDeleted.getMnemonic(), toBeDeleted.getMnemonicEquivalence(),
                 toBeDeleted.getDescription(), Status.PENDING, Boolean.FALSE, Boolean.TRUE,
-                when, username, structureElement.getComment());
+                when, username, structureElementCommand.getComment());
         systemRepository.createSystem(system);
 
         return new StructureElementNotification(
@@ -182,10 +194,11 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification approveStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification approveStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     update not latest
         //     find
@@ -208,8 +221,11 @@ public class SystemService {
         //     return
         //         structure element for approved structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<System> systems = systemRepository.readSystems(Status.APPROVED, Boolean.FALSE, uuid, null, null, null, null, null, null);
@@ -230,7 +246,7 @@ public class SystemService {
         system = systems.get(0);
 
         // approve
-        system.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElement.getComment());
+        system.setAttributesStatusProcessed(Status.APPROVED, when, username, structureElementCommand.getComment());
         system.setLatest(Boolean.TRUE);
         systemRepository.updateSystem(system);
 
@@ -252,16 +268,16 @@ public class SystemService {
         } else if (StructureCommand.DELETE.equals(structureCommandCUD)) {
             // not delete names - legacy names
             // delete sub structures - delete, approve
-            List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+            List<StructureElementCommand> commands = Lists.newArrayList();
             List<Subsystem> subsystems = iSubsystemRepository.findLatestNotDeletedByParent(uuid);
             for (Subsystem subsystem : subsystems) {
-                structureElementCommands.add(new StructureElementCommand(subsystem.getUuid(), Type.SUBSYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
+                commands.add(new StructureElementCommand(subsystem.getUuid(), Type.SUBSYSTEM, null, null, null, null, StructuresService.DELETE_AFTER_APPROVE_STRUCTURE_CHANGE));
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                subsystemService.deleteStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                subsystemService.deleteStructure(command, when, username, holder);
             }
-            for (StructureElementCommand structureElementCommand : structureElementCommands) {
-                subsystemService.approveStructure(structureElementCommand, when, username, holder);
+            for (StructureElementCommand command : commands) {
+                subsystemService.approveStructure(command, when, username, holder);
             }
         }
 
@@ -273,18 +289,22 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification cancelStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification cancelStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     cancel - update structure to status CANCELLED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<System> systems = systemRepository.readSystems(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -294,7 +314,7 @@ public class SystemService {
         System system = systems.get(0);
 
         // cancel
-        system.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElement.getComment());
+        system.setAttributesStatusProcessed(Status.CANCELLED, when, username, structureElementCommand.getComment());
         systemRepository.updateSystem(system);
 
         // previous
@@ -310,18 +330,22 @@ public class SystemService {
     }
 
     @Transactional(propagation = Propagation.MANDATORY)
-    public StructureElementNotification rejectStructure(StructureElementCommand structureElement, Date when, String username, HolderSystemDeviceStructure holder) {
+    public StructureElementNotification rejectStructure(StructureElementCommand structureElementCommand, Date when, String username, HolderSystemDeviceStructure holder) {
         // validation outside method
         // transaction
         //     support a current transaction, throw an exception if none exists
+        //     attributes
         //     find
         //     reject - update structure to status REJECTED
         //     find out previous
         //     return
         //         structure element for created structure
         //         notification
+        //
+        // attributes
+        //     uuid, comment
 
-        String uuid = structureElement.getUuid().toString();
+        String uuid = structureElementCommand.getUuid().toString();
 
         // find
         List<System> systems = systemRepository.readSystems(Status.PENDING, null, uuid, null, null, null, null, null, null);
@@ -331,7 +355,7 @@ public class SystemService {
         System system = systems.get(0);
 
         // reject
-        system.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElement.getComment());
+        system.setAttributesStatusProcessed(Status.REJECTED, when, username, structureElementCommand.getComment());
         systemRepository.updateSystem(system);
 
         // previous
diff --git a/src/main/java/org/openepics/names/util/ExcelUtil.java b/src/main/java/org/openepics/names/util/ExcelUtil.java
index 5dfb471e..b7863e2f 100644
--- a/src/main/java/org/openepics/names/util/ExcelUtil.java
+++ b/src/main/java/org/openepics/names/util/ExcelUtil.java
@@ -264,8 +264,8 @@ public class ExcelUtil {
 
         // StructureElementCommand
         //     create -       type, parent, name, mnemonic, description, comment
-        //	   update - uuid, type, parent, name, mnemonic, description, comment
-        //	   delete - uuid, type                                       comment
+        //     update - uuid, type, parent, name, mnemonic, description, comment
+        //     delete - uuid, type                                       comment
 
         int rowIndex = 0;
         int columnIndex = 0;
diff --git a/src/main/java/org/openepics/names/util/NameElementUtil.java b/src/main/java/org/openepics/names/util/NameElementUtil.java
index de09deda..b39cf466 100644
--- a/src/main/java/org/openepics/names/util/NameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/NameElementUtil.java
@@ -136,97 +136,6 @@ public class NameElementUtil {
                 when, who);
     }
 
-    /**
-     * Populate and return list of name element commands given list of name element commands for create.
-     *
-     * @param commands name element commands for create
-     * @return list of name element commands
-     */
-    public static List<NameElementCommand> getNameElementCommandsForCreate(List<NameElementCommandCreate> commands) {
-        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
-        for (NameElementCommandCreate command : commands) {
-            nameElementCommands.add(NameElementUtil.getNameElementCommand(command));
-        }
-        return nameElementCommands;
-    }
-
-    /**
-     * Populate and return list of name element commands given list of name element commands for update.
-     *
-     * @param commands name element commands for create
-     * @return list of name element commands
-     */
-    public static List<NameElementCommand> getNameElementCommandsForUpdate(List<NameElementCommandUpdate> commands) {
-        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
-        for (NameElementCommandUpdate command : commands) {
-            nameElementCommands.add(NameElementUtil.getNameElementCommand(command));
-        }
-        return nameElementCommands;
-    }
-
-    /**
-     * Populate and return list of name element commands given list of name element commands for confirm.
-     *
-     * @param commands name element commands for create
-     * @return list of name element commands
-     */
-    public static List<NameElementCommand> getNameElementCommandsForConfirm(List<NameElementCommandConfirm> commands) {
-        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
-        for (NameElementCommandConfirm command : commands) {
-            nameElementCommands.add(NameElementUtil.getNameElementCommand(command));
-        }
-        return nameElementCommands;
-    }
-
-
-    /**
-     * Return name element command given name element command for create.
-     *
-     * @param nameElementCommand name element command
-     * @return name element command
-     */
-    public static NameElementCommand getNameElementCommand(NameElementCommandCreate nameElementCommand) {
-        return new NameElementCommand(
-                null,
-                nameElementCommand.getParentSystemStructure(),
-                nameElementCommand.getParentDeviceStructure(),
-                nameElementCommand.getIndex(),
-                nameElementCommand.getDescription(),
-                nameElementCommand.getComment());
-    }
-
-    /**
-     * Return name element command given name element command for update.
-     *
-     * @param nameElementCommand name element command
-     * @return name element command
-     */
-    public static NameElementCommand getNameElementCommand(NameElementCommandUpdate nameElementCommand) {
-        return new NameElementCommand(
-                nameElementCommand.getUuid(),
-                nameElementCommand.getParentSystemStructure(),
-                nameElementCommand.getParentDeviceStructure(),
-                nameElementCommand.getIndex(),
-                nameElementCommand.getDescription(),
-                nameElementCommand.getComment());
-    }
-
-    /**
-     * Return name element command given name element command for confirm.
-     *
-     * @param nameElementCommand name element command
-     * @return name element command
-     */
-    public static NameElementCommand getNameElementCommand(NameElementCommandConfirm nameElementCommand) {
-        return new NameElementCommand(
-                nameElementCommand.getUuid(),
-                null,
-                null,
-                null,
-                null,
-                nameElementCommand.getComment());
-    }
-
     /**
      * Check if name element and name have same content.
      *
@@ -299,4 +208,270 @@ public class NameElementUtil {
         return true;
     }
 
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert name element command for create to name element command.
+     *
+     * @param command name element command for create
+     * @return name element command
+     */
+    public static NameElementCommand convertCommandCreate2Command(NameElementCommandCreate command) {
+        return new NameElementCommand(
+                null,
+                command.getParentSystemStructure(),
+                command.getParentDeviceStructure(),
+                command.getIndex(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert list of name element commands for create to list of name element commands.
+     *
+     * @param commands list of name element commands for create
+     * @return list of name element commands
+     */
+    public static List<NameElementCommand> convertCommandCreate2Command(List<NameElementCommandCreate> commands) {
+        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
+        for (NameElementCommandCreate command : commands) {
+            nameElementCommands.add(NameElementUtil.convertCommandCreate2Command(command));
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element command for update to name element command.
+     *
+     * @param command name element command for update
+     * @return name element command
+     */
+    public static NameElementCommand convertCommandUpdate2Command(NameElementCommandUpdate command) {
+        return new NameElementCommand(
+                command.getUuid(),
+                command.getParentSystemStructure(),
+                command.getParentDeviceStructure(),
+                command.getIndex(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert list of name element commands for update to list of name element commands.
+     *
+     * @param commands list of name element commands for update
+     * @return list of name element commands
+     */
+    public static List<NameElementCommand> convertCommandUpdate2Command(List<NameElementCommandUpdate> commands) {
+        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
+        for (NameElementCommandUpdate command : commands) {
+            nameElementCommands.add(NameElementUtil.convertCommandUpdate2Command(command));
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element command for confirm to name element command.
+     *
+     * @param command name element command for confirm
+     * @return name element command
+     */
+    public static NameElementCommand convertCommandConfirm2Command(NameElementCommandConfirm command) {
+        return new NameElementCommand(
+                command.getUuid(),
+                null,
+                null,
+                null,
+                null,
+                command.getComment());
+    }
+
+    /**
+     * Convert list of name element commands for confirm to list of name element commands.
+     *
+     * @param commands list of name element commands for confirm
+     * @return list of name element commands
+     */
+    public static List<NameElementCommand> convertCommandConfirm2Command(List<NameElementCommandConfirm> commands) {
+        List<NameElementCommand> nameElementCommands = Lists.newArrayList();
+        for (NameElementCommandConfirm command : commands) {
+            nameElementCommands.add(NameElementUtil.convertCommandConfirm2Command(command));
+        }
+        return nameElementCommands;
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert name element command to name element command for create.
+     *
+     * @param command name element command
+     * @return name element command for create
+     */
+    public static NameElementCommandCreate convertCommand2CommandCreate(NameElementCommand command) {
+        return new NameElementCommandCreate(
+                command.getParentSystemStructure(),
+                command.getParentDeviceStructure(),
+                command.getIndex(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of name element commands to array of name element commands for create.
+     *
+     * @param commands array of name element commands
+     * @return array of name element commands for create
+     */
+    public static NameElementCommandCreate[] convertCommand2CommandCreate(NameElementCommand[] commands) {
+        NameElementCommandCreate[] nameElementCommands = new NameElementCommandCreate[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            nameElementCommands[i] = NameElementUtil.convertCommand2CommandCreate(commands[i]);
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element command to name element command for update.
+     *
+     * @param command name element command
+     * @return name element command for update
+     */
+    public static NameElementCommandUpdate convertCommand2CommandUpdate(NameElementCommand command) {
+        return new NameElementCommandUpdate(
+                command.getUuid(),
+                command.getParentSystemStructure(),
+                command.getParentDeviceStructure(),
+                command.getIndex(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of name element commands to array of name element commands for update.
+     *
+     * @param commands array of name element commands
+     * @return array of name element commands for update
+     */
+    public static NameElementCommandUpdate[] convertCommand2CommandUpdate(NameElementCommand[] commands) {
+        NameElementCommandUpdate[] nameElementCommands = new NameElementCommandUpdate[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            nameElementCommands[i] = NameElementUtil.convertCommand2CommandUpdate(commands[i]);
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element command to name element command for confirm.
+     *
+     * @param command name element command
+     * @return name element command for confirm
+     */
+    public static NameElementCommandConfirm convertCommand2CommandConfirm(NameElementCommand command) {
+        return new NameElementCommandConfirm(
+                command.getUuid(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of name element commands to array of name element commands for confirm.
+     *
+     * @param commands array of name element commands
+     * @return array of name element commands for confirm
+     */
+    public static NameElementCommandConfirm[] convertCommand2CommandConfirm(NameElementCommand[] commands) {
+        NameElementCommandConfirm[] nameElementCommands = new NameElementCommandConfirm[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            nameElementCommands[i] = NameElementUtil.convertCommand2CommandConfirm(commands[i]);
+        }
+        return nameElementCommands;
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert name element to name element command for create.
+     *
+     * @param element name element
+     * @return name element command for create
+     */
+    public static NameElementCommandCreate convertElement2CommandCreate(NameElement element) {
+        return new NameElementCommandCreate(
+                element.getParentSystemStructure(),
+                element.getParentDeviceStructure(),
+                element.getIndex(),
+                element.getDescription(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of name elements to array of name element commands for create.
+     *
+     * @param elements array of name elements
+     * @return array of name element commands for create
+     */
+    public static NameElementCommandCreate[] convertElement2CommandCreate(NameElement[] elements) {
+        NameElementCommandCreate[] nameElementCommands = new NameElementCommandCreate[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            nameElementCommands[i] = convertElement2CommandCreate(elements[i]);
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element to name element command for update.
+     *
+     * @param element name element
+     * @return name element command for update
+     */
+    public static NameElementCommandUpdate convertElement2CommandUpdate(NameElement element) {
+        return new NameElementCommandUpdate(
+                element.getUuid(),
+                element.getParentSystemStructure(),
+                element.getParentDeviceStructure(),
+                element.getIndex(),
+                element.getDescription(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of name elements to array of name element commands for update.
+     *
+     * @param elements array of name elements
+     * @return array of name element commands for update
+     */
+    public static NameElementCommandUpdate[] convertElement2CommandUpdate(NameElement[] elements) {
+        NameElementCommandUpdate[] nameElementCommands = new NameElementCommandUpdate[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            nameElementCommands[i] =  convertElement2CommandUpdate(elements[i]);
+        }
+        return nameElementCommands;
+    }
+
+    /**
+     * Convert name element to name element command for confirm.
+     *
+     * @param element name element
+     * @return name element command for confirm
+     */
+    public static NameElementCommandConfirm convertElement2CommandConfirm(NameElement element) {
+        return new NameElementCommandConfirm(
+                element.getUuid(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of name elements to array of name element commands for confirm.
+     *
+     * @param elements array of name elements
+     * @return array of name element commands for confirm
+     */
+    public static NameElementCommandConfirm[] convertElement2CommandConfirm(NameElement[] elements) {
+        NameElementCommandConfirm[] nameElementCommands = new NameElementCommandConfirm[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            nameElementCommands[i] = convertElement2CommandConfirm(elements[i]);
+        }
+        return nameElementCommands;
+    }
+
 }
diff --git a/src/main/java/org/openepics/names/util/StructureElementUtil.java b/src/main/java/org/openepics/names/util/StructureElementUtil.java
index 4dfc7d8b..309ba5d3 100644
--- a/src/main/java/org/openepics/names/util/StructureElementUtil.java
+++ b/src/main/java/org/openepics/names/util/StructureElementUtil.java
@@ -33,6 +33,10 @@ import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
+import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 
 import com.google.common.collect.Lists;
 
@@ -301,8 +305,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.SYSTEMGROUP,
                 systemGroup.getUuid(),
+                Type.SYSTEMGROUP,
                 null,
                 systemGroup.getName(), systemGroup.getMnemonic(), mnemonicPath, 1,
                 systemGroup.getDescription(), Status.PENDING, Boolean.FALSE, systemGroup.isDeleted(),
@@ -330,8 +334,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(systemGroup, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.SYSTEMGROUP,
                 systemGroup.getUuid(),
+                Type.SYSTEMGROUP,
                 null,
                 systemGroup.getName(), systemGroup.getMnemonic(), mnemonicPath, 1,
                 systemGroup.getDescription(), systemGroup.getStatus(), systemGroup.isLatest(), systemGroup.isDeleted(),
@@ -355,8 +359,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.SYSTEM,
                 system.getUuid(),
+                Type.SYSTEM,
                 system.getParentUuid(),
                 system.getName(), system.getMnemonic(), mnemonicPath, 2,
                 system.getDescription(), Status.PENDING, Boolean.FALSE, system.isDeleted(),
@@ -384,8 +388,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(system, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.SYSTEM,
                 system.getUuid(),
+                Type.SYSTEM,
                 system.getParentUuid(),
                 system.getName(), system.getMnemonic(), mnemonicPath, 2,
                 system.getDescription(), system.getStatus(), system.isLatest(), system.isDeleted(),
@@ -409,8 +413,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.SUBSYSTEM,
                 subsystem.getUuid(),
+                Type.SUBSYSTEM,
                 subsystem.getParentUuid(),
                 subsystem.getName(), subsystem.getMnemonic(), mnemonicPath, 3,
                 subsystem.getDescription(), Status.PENDING, Boolean.FALSE, subsystem.isDeleted(),
@@ -438,8 +442,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(subsystem, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.SUBSYSTEM,
                 subsystem.getUuid(),
+                Type.SUBSYSTEM,
                 subsystem.getParentUuid(),
                 subsystem.getName(), subsystem.getMnemonic(), mnemonicPath, 3,
                 subsystem.getDescription(), subsystem.getStatus(), subsystem.isLatest(), subsystem.isDeleted(),
@@ -464,8 +468,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.DISCIPLINE,
                 discipline.getUuid(),
+                Type.DISCIPLINE,
                 null,
                 discipline.getName(), discipline.getMnemonic(), mnemonicPath, 1,
                 discipline.getDescription(), Status.PENDING, Boolean.FALSE, discipline.isDeleted(),
@@ -493,8 +497,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(discipline, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.DISCIPLINE,
                 discipline.getUuid(),
+                Type.DISCIPLINE,
                 null,
                 discipline.getName(), discipline.getMnemonic(), mnemonicPath, 1,
                 discipline.getDescription(), discipline.getStatus(), discipline.isLatest(), discipline.isDeleted(),
@@ -518,8 +522,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.DEVICEGROUP,
                 deviceGroup.getUuid(),
+                Type.DEVICEGROUP,
                 deviceGroup.getParentUuid(),
                 deviceGroup.getName(), deviceGroup.getMnemonic(), mnemonicPath, 2,
                 deviceGroup.getDescription(), Status.PENDING, Boolean.FALSE, deviceGroup.isDeleted(),
@@ -547,8 +551,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(deviceGroup, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.DEVICEGROUP,
                 deviceGroup.getUuid(),
+                Type.DEVICEGROUP,
                 deviceGroup.getParentUuid(),
                 deviceGroup.getName(), deviceGroup.getMnemonic(), mnemonicPath, 2,
                 deviceGroup.getDescription(), deviceGroup.getStatus(), deviceGroup.isLatest(), deviceGroup.isDeleted(),
@@ -572,8 +576,8 @@ public class StructureElementUtil {
         String mnemonicPath = null;
 
         return getStructureElement(
-                Type.DEVICETYPE,
                 deviceType.getUuid(),
+                Type.DEVICETYPE,
                 deviceType.getParentUuid(),
                 deviceType.getName(), deviceType.getMnemonic(), mnemonicPath, 3,
                 deviceType.getDescription(), Status.PENDING, Boolean.FALSE, deviceType.isDeleted(),
@@ -601,8 +605,8 @@ public class StructureElementUtil {
                 : StructureUtil.getMnemonicPath(deviceType, holderSystemDeviceStructure);
 
         return getStructureElement(
-                Type.DEVICETYPE,
                 deviceType.getUuid(),
+                Type.DEVICETYPE,
                 deviceType.getParentUuid(),
                 deviceType.getName(), deviceType.getMnemonic(), mnemonicPath, 3,
                 deviceType.getDescription(), deviceType.getStatus(), deviceType.isLatest(), deviceType.isDeleted(),
@@ -612,8 +616,8 @@ public class StructureElementUtil {
     /**
      * Populate and return structure element.
      *
-     * @param type type
      * @param uuid uuid
+     * @param type type
      * @param parent parent uuid
      * @param name name
      * @param mnemonic mnemonic
@@ -629,8 +633,8 @@ public class StructureElementUtil {
      * @return structure element
      */
     protected static StructureElement getStructureElement(
-            Type type,
             UUID uuid,
+            Type type,
             UUID parent,
             String name, String mnemonic, String mnemonicPath, Integer level,
             String description, Status status, Boolean latest, Boolean deleted,
@@ -644,7 +648,6 @@ public class StructureElementUtil {
                 when, who);
     }
 
-
     private static boolean hasSameContent(StructureElement structureElement, NameStructure nameStructure) {
         // StructureElement
         //     x uuid
@@ -833,4 +836,282 @@ public class StructureElementUtil {
          return true;
     }
 
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert structure element command for create to structure element command.
+     *
+     * @param command structure element command for create
+     * @return structure element command
+     */
+    public static StructureElementCommand convertCommandCreate2Command(StructureElementCommandCreate command) {
+        return new StructureElementCommand(
+                null,
+                command.getType(),
+                command.getParent(),
+                command.getName(),
+                command.getMnemonic(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert list of structure element commands for create to list of structure element commands.
+     *
+     * @param commands list of structure element commands for create
+     * @return list of structure element commands
+     */
+    public static List<StructureElementCommand> convertCommandCreate2Command(List<StructureElementCommandCreate> commands) {
+        List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+        for (StructureElementCommandCreate command : commands) {
+            structureElementCommands.add(StructureElementUtil.convertCommandCreate2Command(command));
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element command for update to structure element command.
+     *
+     * @param command structure element command for update
+     * @return structure element command
+     */
+    public static StructureElementCommand convertCommandUpdate2Command(StructureElementCommandUpdate command) {
+        return new StructureElementCommand(
+                command.getUuid(),
+                command.getType(),
+                command.getParent(),
+                command.getName(),
+                command.getMnemonic(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert list of structure element commands for update to list of structure element commands.
+     *
+     * @param commands list of structure element commands for update
+     * @return list of structure element commands
+     */
+    public static List<StructureElementCommand> convertCommandUpdate2Command(List<StructureElementCommandUpdate> commands) {
+        List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+        for (StructureElementCommandUpdate command : commands) {
+            structureElementCommands.add(StructureElementUtil.convertCommandUpdate2Command(command));
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element command for confirm to structure element command.
+     *
+     * @param command structure element command for confirm
+     * @return structure element command
+     */
+    public static StructureElementCommand convertCommandConfirm2Command(StructureElementCommandConfirm command) {
+        return new StructureElementCommand(
+                command.getUuid(),
+                command.getType(),
+                null,
+                null,
+                null,
+                null,
+                command.getComment());
+    }
+
+    /**
+     * Convert list of structure element commands for confirm to list of structure element commands.
+     *
+     * @param commands list of structure element commands for confirm
+     * @return list of structure element commands
+     */
+    public static List<StructureElementCommand> convertCommandConfirm2Command(List<StructureElementCommandConfirm> commands) {
+        List<StructureElementCommand> structureElementCommands = Lists.newArrayList();
+        for (StructureElementCommandConfirm command : commands) {
+            structureElementCommands.add(StructureElementUtil.convertCommandConfirm2Command(command));
+        }
+        return structureElementCommands;
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert structure element command to structure element command for create.
+     *
+     * @param command structure element command
+     * @return structure element command for create
+     */
+    public static StructureElementCommandCreate convertCommand2CommandCreate(StructureElementCommand command) {
+        return new StructureElementCommandCreate(
+                command.getType(),
+                command.getParent(),
+                command.getName(),
+                command.getMnemonic(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of structure element commands to array of structure element commands for create.
+     *
+     * @param commands array of structure element commands
+     * @return array of structure element commands for create
+     */
+    public static StructureElementCommandCreate[] convertCommand2CommandCreate(StructureElementCommand[] commands) {
+        StructureElementCommandCreate[] structureElementCommands = new StructureElementCommandCreate[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            structureElementCommands[i] = StructureElementUtil.convertCommand2CommandCreate(commands[i]);
+
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element command to structure element command for update.
+     *
+     * @param command structure element command
+     * @return structure element command for update
+     */
+    public static StructureElementCommandUpdate convertCommand2CommandUpdate(StructureElementCommand command) {
+        return new StructureElementCommandUpdate(
+                command.getUuid(),
+                command.getType(),
+                command.getParent(),
+                command.getName(),
+                command.getMnemonic(),
+                command.getDescription(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of structure element commands to array of structure element commands for update.
+     *
+     * @param commands array of structure element commands
+     * @return array of structure element commands for update
+     */
+    public static StructureElementCommandUpdate[] convertCommand2CommandUpdate(StructureElementCommand[] commands) {
+        StructureElementCommandUpdate[] structureElementCommands = new StructureElementCommandUpdate[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            structureElementCommands[i] = StructureElementUtil.convertCommand2CommandUpdate(commands[i]);
+
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element command to structure element command for confirm.
+     *
+     * @param command structure element command
+     * @return structure element command for confirm
+     */
+    public static StructureElementCommandConfirm convertCommand2CommandConfirm(StructureElementCommand command) {
+        return new StructureElementCommandConfirm(
+                command.getUuid(),
+                command.getType(),
+                command.getComment());
+    }
+
+    /**
+     * Convert array of structure element commands to array of structure element commands for confirm.
+     *
+     * @param commands array of structure element commands
+     * @return array of structure element commands for confirm
+     */
+    public static StructureElementCommandConfirm[] convertCommand2CommandConfirm(StructureElementCommand[] commands) {
+        StructureElementCommandConfirm[] structureElementCommands = new StructureElementCommandConfirm[commands.length];
+        for (int i=0; i<commands.length; i++) {
+            structureElementCommands[i] = StructureElementUtil.convertCommand2CommandConfirm(commands[i]);
+        }
+        return structureElementCommands;
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Convert structure element to structure element command for create.
+     *
+     * @param element structure element
+     * @return structure element command for create
+     */
+    public static StructureElementCommandCreate convertElement2CommandCreate(StructureElement element) {
+        return new StructureElementCommandCreate(
+                element.getType(),
+                element.getParent(),
+                element.getName(),
+                element.getMnemonic(),
+                element.getDescription(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of structure elements to array of structure element commands for create.
+     *
+     * @param elements array of structure elements
+     * @return array of structure element commands for create
+     */
+    public static StructureElementCommandCreate[] convertElement2CommandCreate(StructureElement[] elements) {
+        StructureElementCommandCreate[] structureElementCommands = new StructureElementCommandCreate[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            structureElementCommands[i] = convertElement2CommandCreate(elements[i]);
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element to structure element command for update.
+     *
+     * @param element structure element
+     * @return structure element command for update
+     */
+    public static StructureElementCommandUpdate convertElement2CommandUpdate(StructureElement element) {
+        return new StructureElementCommandUpdate(
+                element.getUuid(),
+                element.getType(),
+                element.getParent(),
+                element.getName(),
+                element.getMnemonic(),
+                element.getDescription(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of structure elements to array of structure element commands for update.
+     *
+     * @param elements array of structure elements
+     * @return array of structure element commands for update
+     */
+    public static StructureElementCommandUpdate[] convertElement2CommandUpdate(StructureElement[] elements) {
+        StructureElementCommandUpdate[] structureElementCommands = new StructureElementCommandUpdate[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            structureElementCommands[i] =  convertElement2CommandUpdate(elements[i]);
+        }
+        return structureElementCommands;
+    }
+
+    /**
+     * Convert structure element to structure element command for confirm.
+     *
+     * @param element structure element
+     * @return structure element command for confirm
+     */
+    public static StructureElementCommandConfirm convertElement2CommandConfirm(StructureElement element) {
+        return new StructureElementCommandConfirm(
+                element.getUuid(),
+                element.getType(),
+                element.getComment());
+    }
+
+    /**
+     * Convert array of structure elements to array of structure element commands for confirm.
+     *
+     * @param elements array of structure elements
+     * @return array of structure element commands for confirm
+     */
+    public static StructureElementCommandConfirm[] convertElement2CommandConfirm(StructureElement[] elements) {
+        StructureElementCommandConfirm[] structureElementCommands = new StructureElementCommandConfirm[elements.length];
+        for (int i=0; i<elements.length; i++) {
+            structureElementCommands[i] = convertElement2CommandConfirm(elements[i]);
+        }
+        return structureElementCommands;
+    }
+
+
 }
diff --git a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
index ea6a2198..a6c219e3 100644
--- a/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateNameElementUtil.java
@@ -129,6 +129,11 @@ public class ValidateNameElementUtil {
         //	   delete - uuid,                                                                   comment
         //
         //     create, update - optional - parentDeviceStructure, index
+        //
+        // logic
+        //     update, delete
+        //     create, update
+        //     create, update, delete
 
         if (ValidateUtil.isAnyNull(nameElementCommand, nameCommand)) {
             return;
@@ -141,14 +146,11 @@ public class ValidateNameElementUtil {
         String description = nameElementCommand.getDescription();
         String comment = nameElementCommand.getComment();
 
-        if (NameCommand.CREATE.equals(nameCommand)) {
-            ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
-                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
-        } else {
+        if (ValidateUtil.isAnyEqual(nameCommand, NameCommand.UPDATE, NameCommand.DELETE)) {
             ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
         }
 
-        if (!NameCommand.DELETE.equals(nameCommand)) {
+        if (ValidateUtil.isAnyEqual(nameCommand, NameCommand.CREATE, NameCommand.UPDATE)) {
             ExceptionUtil.validateConditionInputNotAvailableException(parentSystemStructure != null,
                     TextUtil.VALUE_IS_NOT_AVAILABLE, nameElementCommand.toString(), TextUtil.PARENTSYSTEMSTRUCTURE);
 
@@ -165,6 +167,31 @@ public class ValidateNameElementUtil {
         }
 
         ValidateUtil.validateInputComment(comment);
+
+//        if (NameCommand.CREATE.equals(nameCommand)) {
+//            ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
+//                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
+//        } else {
+//            ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
+//        }
+//
+//        if (!NameCommand.DELETE.equals(nameCommand)) {
+//            ExceptionUtil.validateConditionInputNotAvailableException(parentSystemStructure != null,
+//                    TextUtil.VALUE_IS_NOT_AVAILABLE, nameElementCommand.toString(), TextUtil.PARENTSYSTEMSTRUCTURE);
+//
+//            // optional (either none or both)
+//            //     parentDeviceStructure
+//            // 	   index
+//            if (parentDeviceStructure != null && index == null) {
+//                throw ExceptionUtil.createInputNotCorrectException(null, nameElementCommand.toString(), TextUtil.INDEX);
+//            } else if (parentDeviceStructure == null && index != null) {
+//                throw ExceptionUtil.createInputNotCorrectException(null, nameElementCommand.toString(), TextUtil.PARENTDEVICESTRUCTURE);
+//            }
+//
+//            ValidateUtil.validateInputDescription(description);
+//        }
+//
+//        ValidateUtil.validateInputComment(comment);
     }
 
     // ----------------------------------------------------------------------------------------------------
diff --git a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
index f965fa71..d1db9291 100644
--- a/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateStructureElementUtil.java
@@ -19,10 +19,15 @@ package org.openepics.names.util;
 
 import java.util.List;
 import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import org.apache.commons.lang3.StringUtils;
 import org.openepics.names.exception.DataConflictException;
+import org.openepics.names.repository.model.DeviceGroup;
+import org.openepics.names.repository.model.DeviceType;
 import org.openepics.names.repository.model.Discipline;
+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.FieldStructure;
@@ -50,9 +55,14 @@ public class ValidateStructureElementUtil {
     //         description, status, latest, deleted, when, who, comment
     //
     //     StructureElementCommand
-    //	       create -       type, parent, name, mnemonic, description, comment
-    //	       update - uuid, type, parent, name, mnemonic, description, comment
-    //	       delete - uuid, type                                       comment
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
+
+    private static final Logger LOGGER = Logger.getLogger(ValidateStructureElementUtil.class.getName());
 
     /**
      * This class is not to be instantiated.
@@ -95,101 +105,103 @@ public class ValidateStructureElementUtil {
     }
 
     /**
-     * Validate structure element parameters (input) for create.
+     * Validate structure element command parameters (input) for create.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputCreate(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.CREATE);
+    public static void validateStructureElementInputCreate(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.CREATE);
     }
 
     /**
-     * Validate structure element parameters (input) for update.
+     * Validate structure element command parameters (input) for update.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputUpdate(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.UPDATE);
+    public static void validateStructureElementInputUpdate(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.UPDATE);
     }
 
     /**
-     * Validate structure element parameters (input) for delete.
+     * Validate structure element command parameters (input) for delete.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputDelete(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.DELETE);
+    public static void validateStructureElementInputDelete(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.DELETE);
     }
 
     /**
-     * Validate structure element parameters (input) for approve.
+     * Validate structure element command parameters (input) for approve.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputApprove(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.APPROVE);
+    public static void validateStructureElementInputApprove(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.APPROVE);
     }
 
     /**
-     * Validate structure element parameters (input) for cancel.
+     * Validate structure element command parameters (input) for cancel.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputCancel(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.CANCEL);
+    public static void validateStructureElementInputCancel(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.CANCEL);
     }
 
     /**
-     * Validate structure element parameters (input) for reject.
+     * Validate structure element command parameters (input) for reject.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      */
-    public static void validateStructureElementInputReject(StructureElementCommand structureElement, EssNamingConvention namingConvention) {
-        validateStructureElementInput(structureElement, namingConvention, StructureCommand.REJECT);
+    public static void validateStructureElementInputReject(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention) {
+        validateStructureElementInput(structureElementCommand, namingConvention, StructureCommand.REJECT);
     }
 
     /**
-     * Validate structure element parameters (input).
+     * Validate structure element command parameters (input).
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param structureCommand structure command
      */
-    private static void validateStructureElementInput(StructureElementCommand structureElement, EssNamingConvention namingConvention, StructureCommand structureCommand) {
-        // check structure element input
-        //     uuid           - required if not create, required empty if create
-        //     type           - required
-        //     parent         - also validate data, parent uuid available if type is system, subsystem, device group, device type
-        //     name           - required
-        //     mnemonic       - required except for device group
-        //     description    - required
-        //     comment        - required
-
-        if (ValidateUtil.isAnyNull(structureElement, structureCommand)) {
+    private static void validateStructureElementInput(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, StructureCommand structureCommand) {
+        // command - attributes
+        //     create  -       type, parent, name, mnemonic, description, comment
+        //	   update  - uuid, type, parent, name, mnemonic, description, comment
+        //	   delete  - uuid, type,                                      comment
+        //	   approve - uuid, type,                                      comment
+        //	   cancel  - uuid, type,                                      comment
+        //	   reject  - uuid, type,                                      comment
+        //
+        //     create, update - optional - parent, mnemonic
+        //
+        // logic
+        //     update, delete, approve, cancel, reject
+        //     create, update
+        //     create, update, delete, approve, cancel, reject
+
+        if (ValidateUtil.isAnyNull(structureElementCommand, namingConvention, structureCommand)) {
             return;
         }
 
-        Type type = structureElement.getType();
-        UUID uuid = structureElement.getUuid();
-        UUID parent = structureElement.getParent();
+        UUID uuid = structureElementCommand.getUuid();
+        Type type = structureElementCommand.getType();
+        UUID parent = structureElementCommand.getParent();
+        String name = structureElementCommand.getName();
+        String mnemonic = structureElementCommand.getMnemonic();
+        String description = structureElementCommand.getDescription();
+        String comment = structureElementCommand.getComment();
 
-        String name = structureElement.getName();
-        String mnemonic = structureElement.getMnemonic();
-        String description = structureElement.getDescription();
-        String comment = structureElement.getComment();
-
-        if (StructureCommand.CREATE.equals(structureCommand)) {
-            ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
-                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
-        } else {
+        if (ValidateUtil.isAnyEqual(structureCommand, StructureCommand.UPDATE, StructureCommand.DELETE, StructureCommand.APPROVE, StructureCommand.CANCEL, StructureCommand.REJECT)) {
             ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
         }
 
         ValidateUtil.validateInputType(type);
 
-        if (!StructureCommand.DELETE.equals(structureCommand)) {
+        if (ValidateUtil.isAnyEqual(structureCommand, StructureCommand.CREATE, StructureCommand.UPDATE)) {
             if (ValidateUtil.isAnyEqual(type, Type.SYSTEM, Type.SUBSYSTEM, Type.DEVICEGROUP, Type.DEVICETYPE)) {
                 ExceptionUtil.validateConditionInputNotAvailableException(parent != null,
-                        TextUtil.PARENT_IS_NOT_AVAILABLE, structureElement.toString(), TextUtil.PARENT);
+                        TextUtil.PARENT_IS_NOT_AVAILABLE, structureElementCommand.toString(), TextUtil.PARENT);
                 ValidateUtil.validateInputUuid(parent.toString());
             }
 
@@ -200,104 +212,144 @@ public class ValidateStructureElementUtil {
             //     validateMnemonic takes isMnemonicRequired into account
             MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(type, mnemonic);
             ExceptionUtil.validateConditionInputNotValidException(MnemonicValidation.VALID.equals(mnemonicValidation),
-                    TextUtil.MNEMONIC_IS_NOT_VALID, structureElement.toString(), TextUtil.MNEMONIC);
+                    TextUtil.MNEMONIC_IS_NOT_VALID, structureElementCommand.toString(), TextUtil.MNEMONIC);
 
             ValidateUtil.validateInputDescription(description);
         }
 
         ValidateUtil.validateInputComment(comment);
+
+//        if (StructureCommand.CREATE.equals(structureCommand)) {
+//            ExceptionUtil.validateConditionInputNotEmptyException(uuid == null,
+//                    TextUtil.VALUE_IS_NOT_EMPTY, uuid != null ? uuid.toString() : null, TextUtil.UUID);
+//        } else {
+//            ValidateUtil.validateInputUuid(uuid != null ? uuid.toString() : null);
+//        }
+//
+//        ValidateUtil.validateInputType(type);
+//
+//        if (!StructureCommand.DELETE.equals(structureCommand)) {
+//            if (ValidateUtil.isAnyEqual(type, Type.SYSTEM, Type.SUBSYSTEM, Type.DEVICEGROUP, Type.DEVICETYPE)) {
+//                ExceptionUtil.validateConditionInputNotAvailableException(parent != null,
+//                        TextUtil.PARENT_IS_NOT_AVAILABLE, structureElementCommand.toString(), TextUtil.PARENT);
+//                ValidateUtil.validateInputUuid(parent.toString());
+//            }
+//
+//            ValidateUtil.validateInputName(name);
+//
+//            // validate mnemonic
+//            //     validate mnemonic input (value itself, not in relation to other values)
+//            //     validateMnemonic takes isMnemonicRequired into account
+//            MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(type, mnemonic);
+//            ExceptionUtil.validateConditionInputNotValidException(MnemonicValidation.VALID.equals(mnemonicValidation),
+//                    TextUtil.MNEMONIC_IS_NOT_VALID, structureElementCommand.toString(), TextUtil.MNEMONIC);
+//
+//            ValidateUtil.validateInputDescription(description);
+//        }
+//
+//        ValidateUtil.validateInputComment(comment);
     }
 
     // ----------------------------------------------------------------------------------------------------
 
     /**
-     * Validate structure element data for create.
+     * Validate structure element command data for create.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataCreate(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.CREATE);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.CREATE);
+    public static void validateStructureElementDataCreate(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.CREATE);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.CREATE);
     }
 
     /**
-     * Validate structure element data for update.
+     * Validate structure element command data for update.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataUpdate(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.UPDATE);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.UPDATE);
+    public static void validateStructureElementDataUpdate(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.UPDATE);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.UPDATE);
     }
 
     /**
-     * Validate structure element data for delete.
+     * Validate structure element command data for delete.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataDelete(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.DELETE);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.DELETE);
+    public static void validateStructureElementDataDelete(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.DELETE);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.DELETE);
     }
 
     /**
-     * Validate structure element data for approve.
+     * Validate structure element command data for approve.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataApprove(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.APPROVE);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.APPROVE);
+    public static void validateStructureElementDataApprove(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.APPROVE);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.APPROVE);
     }
 
     /**
-     * Validate structure element data for cancel.
+     * Validate structure element command data for cancel.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataCancel(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.CANCEL);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.CANCEL);
+    public static void validateStructureElementDataCancel(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.CANCEL);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.CANCEL);
     }
 
     /**
-     * Validate structure element data for reject.
+     * Validate structure element command data for reject.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      */
-    public static void validateStructureElementDataReject(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
-        validateStructureElementDataInItself(structureElement, namingConvention, holderRepositories, holder, StructureCommand.REJECT);
-        validateStructureElementDataRelativeOtherData(structureElement, namingConvention, holderRepositories, holder, StructureCommand.REJECT);
+    public static void validateStructureElementDataReject(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder) {
+        validateStructureElementDataInItself(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.REJECT);
+        validateStructureElementDataRelativeOtherData(structureElementCommand, namingConvention, holderRepositories, holder, StructureCommand.REJECT);
     }
 
     /**
-     * Validate structure element data in itself.
+     * Validate structure element command data in itself.
      *
-     * @param structureElement
-     * @param namingConvention
-     * @param holderRepositories
-     * @param holder
-     * @param structureCommand
+     * @param structureElementCommand structure element command
+     * @param namingConvention naming convention
+     * @param holderRepositories holder respositories
+     * @param holder holder
+     * @param structureCommand structure command
      */
-    public static void validateStructureElementDataInItself(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureCommand structureCommand) {
+    public static void validateStructureElementDataInItself(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureCommand structureCommand) {
+        // command - attributes
+        //     create  -       type, parent, name, mnemonic, description, comment
+        //	   update  - uuid, type, parent, name, mnemonic, description, comment
+        //	   delete  - uuid, type,                                      comment
+        //	   approve - uuid, type,                                      comment
+        //	   cancel  - uuid, type,                                      comment
+        //	   reject  - uuid, type,                                      comment
+        //
+        //     create, update - optional - parent, mnemonic
+        //
         // check structure element data in itself
         //     update, delete
         //         definitely (not possibly)
@@ -306,17 +358,17 @@ public class ValidateStructureElementUtil {
         //     approve, reject, cancel
         //         uuid - pending, latest, not deleted  - list size 1
 
-        if (ValidateUtil.isAnyNull(structureElement, namingConvention, holderRepositories, holder, structureCommand)) {
+        if (ValidateUtil.isAnyNull(structureElementCommand, namingConvention, holderRepositories, holder, structureCommand)) {
             return;
         }
 
-        String message = structureElement.getType().toString().toLowerCase() + TextUtil.SPACE + TextUtil.IS_NOT_CORRECT;
-        String details = structureElement.toString();
-        String field   = TextUtil.UUID;
+        UUID uuid = structureElementCommand.getUuid();
+        Type type = structureElementCommand.getType();
+        UUID parent = structureElementCommand.getParent();
 
-        Type type = structureElement.getType();
-        UUID uuid = structureElement.getUuid();
-        UUID parent = structureElement.getParent();
+        String message = type.toString().toLowerCase() + TextUtil.SPACE + TextUtil.IS_NOT_CORRECT;
+        String details = structureElementCommand.toString();
+        String field   = TextUtil.UUID;
 
         // validate data in itself
         //     systemgroup, discipline
@@ -372,15 +424,25 @@ public class ValidateStructureElementUtil {
     }
 
     /**
-     * Validate structure element data relative other data.
+     * Validate structure element command data relative other data.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param namingConvention naming convention
      * @param holderRepositories holder repositories
      * @param holder holder
      * @param structureCommand structure command
      */
-    public static void validateStructureElementDataRelativeOtherData(StructureElementCommand structureElement, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureCommand structureCommand) {
+    public static void validateStructureElementDataRelativeOtherData(StructureElementCommand structureElementCommand, EssNamingConvention namingConvention, HolderRepositories holderRepositories, HolderSystemDeviceStructure holder, StructureCommand structureCommand) {
+        // command - attributes
+        //     create  -       type, parent, name, mnemonic, description, comment
+        //	   update  - uuid, type, parent, name, mnemonic, description, comment
+        //	   delete  - uuid, type,                                      comment
+        //	   approve - uuid, type,                                      comment
+        //	   cancel  - uuid, type,                                      comment
+        //	   reject  - uuid, type,                                      comment
+        //
+        //     create, update - optional - parent, mnemonic
+        //
         // check structure element data in relation to other data
         //     create, update
         //         parent               - (if applicable) approved, latest, not deleted
@@ -396,18 +458,18 @@ public class ValidateStructureElementUtil {
         //         additional checks if names are affected
         //         comment not same as previous comment
 
-        if (ValidateUtil.isAnyNull(structureElement, namingConvention, holderRepositories, holder, structureCommand)) {
+        if (ValidateUtil.isAnyNull(structureElementCommand, namingConvention, holderRepositories, holder, structureCommand)) {
             return;
         }
 
         String message = null;
-        String details = structureElement.toString();
+        String details = structureElementCommand.toString();
         String field   = TextUtil.MNEMONIC;
 
-        Type type = structureElement.getType();
-        UUID uuid = structureElement.getUuid();
-        UUID parent = structureElement.getParent();
-        String mnemonic = structureElement.getMnemonic();
+        UUID uuid = structureElementCommand.getUuid();
+        Type type = structureElementCommand.getType();
+        UUID parent = structureElementCommand.getParent();
+        String mnemonic = structureElementCommand.getMnemonic();
 
         // validate data relative other data
         //     create, update
@@ -504,53 +566,66 @@ public class ValidateStructureElementUtil {
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
             } else if (Type.SYSTEM.equals(type)) {
-                // status, parent
-                message = TextUtil.SYSTEMGROUP_IS_NOT_CORRECT;
-                validateStructuresStatusSize1(parent, Type.SYSTEMGROUP, Status.APPROVED, false,
-                        holderRepositories, message, details, field);
+                LOGGER.log(Level.INFO, "validateStructureElementDataRelativeOtherData, SYSTEM, uuid:     " + uuid);
+                LOGGER.log(Level.INFO, "validateStructureElementDataRelativeOtherData, SYSTEM, type:     " + type);
+                LOGGER.log(Level.INFO, "validateStructureElementDataRelativeOtherData, SYSTEM, parent:   " + parent);
+                LOGGER.log(Level.INFO, "validateStructureElementDataRelativeOtherData, SYSTEM, mnemonic: " + mnemonic);
 
                 // status, uuid
                 message = TextUtil.SYSTEM_IS_NOT_CORRECT;
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
-            } else if (Type.SUBSYSTEM.equals(type)) {
+
+                List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null);
+
                 // status, parent
-                message = TextUtil.SYSTEM_IS_NOT_CORRECT;
-                validateStructuresStatusSize1(parent, Type.SYSTEM, Status.APPROVED, false,
+                message = TextUtil.SYSTEMGROUP_IS_NOT_CORRECT;
+                validateStructuresStatusSize1(systems.get(0).getParentUuid(), Type.SYSTEMGROUP, Status.APPROVED, false,
                         holderRepositories, message, details, field);
-
+            } else if (Type.SUBSYSTEM.equals(type)) {
                 // status, uuid
                 message = TextUtil.SUBSYSTEM_IS_NOT_CORRECT;
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
+
+                List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null);
+
+                // status, parent
+                message = TextUtil.SYSTEM_IS_NOT_CORRECT;
+                validateStructuresStatusSize1(subsystems.get(0).getParentUuid(), Type.SYSTEM, Status.APPROVED, false,
+                        holderRepositories, message, details, field);
             } else if (Type.DISCIPLINE.equals(type)) {
                 // status, uuid
                 message = TextUtil.DISCIPLINE_IS_NOT_CORRECT;
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
             } else if (Type.DEVICEGROUP.equals(type)) {
-                // status, parent
-                message = TextUtil.DISCIPLINE_IS_NOT_CORRECT;
-                validateStructuresStatusSize1(parent, Type.DISCIPLINE, Status.APPROVED, false,
-                        holderRepositories, message, details, field);
-
                 // status, uuid
                 message = TextUtil.DEVICEGROUP_IS_NOT_CORRECT;
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
 
-                // no mnemonic for device group
-                ExceptionUtil.validateConditionDataConflictException(StringUtils.isEmpty(mnemonic), message, details, field);
-            } else if (Type.DEVICETYPE.equals(type)) {
+                List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null);
+
                 // status, parent
                 message = TextUtil.DISCIPLINE_IS_NOT_CORRECT;
-                validateStructuresStatusSize1(parent, Type.DEVICEGROUP, Status.APPROVED, false,
+                validateStructuresStatusSize1(deviceGroups.get(0).getParentUuid(), Type.DISCIPLINE, Status.APPROVED, false,
                         holderRepositories, message, details, field);
 
+//                // no mnemonic for device group
+//                ExceptionUtil.validateConditionDataConflictException(StringUtils.isEmpty(mnemonic), message, details, field);
+            } else if (Type.DEVICETYPE.equals(type)) {
                 // status, uuid
                 message = TextUtil.DEVICETYPE_IS_NOT_CORRECT;
                 validateStructuresStatusSize1(uuid, type, Status.PENDING, null,
                         holderRepositories, message, details, field);
+
+                List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, uuid.toString(), null, null, null, null, null, null);
+
+                // status, parent
+                message = TextUtil.DISCIPLINE_IS_NOT_CORRECT;
+                validateStructuresStatusSize1(deviceTypes.get(0).getParentUuid(), Type.DEVICEGROUP, Status.APPROVED, false,
+                        holderRepositories, message, details, field);
             }
         }
     }
@@ -707,6 +782,10 @@ public class ValidateStructureElementUtil {
         String[] path = NamingConventionUtil.string2MnemonicPath(mnemonicPath);
         String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicPath);
 
+        LOGGER.log(Level.INFO, "validateStructureDataCreate, type: " + type);
+        LOGGER.log(Level.INFO, "validateStructureDataCreate, path: " + path);
+        LOGGER.log(Level.INFO, "validateStructureDataCreate, mnemonicpathEquivalence: " + mnemonicpathEquivalence);
+
         // validate path, including null check
         ExceptionUtil.validateConditionDataNotValidException(path != null && path.length >= 1 && path.length <= 2,
                 TextUtil.STRUCTURE_MNEMONIC_PATH_IS_NOT_VALID, details, field);
diff --git a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
index fb9dfb64..13823edd 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
@@ -66,93 +66,6 @@ public class ITUtilNameElement {
 
     // ----------------------------------------------------------------------------------------------------
 
-    /**
-     * Utility method to return name element command for create given name element.
-     *
-     * @param nameElement name element
-     * @return name element command for create
-     */
-    static NameElementCommandCreate convert2NameElementCommandCreate(NameElement nameElement) {
-        return new NameElementCommandCreate(
-                nameElement.getParentSystemStructure(),
-                nameElement.getParentDeviceStructure(),
-                nameElement.getIndex(),
-                nameElement.getDescription(),
-                nameElement.getComment());
-    }
-
-    /**
-     * Utility method to return name element command for update given name element.
-     *
-     * @param nameElement name element
-     * @return name element command for update
-     */
-    static NameElementCommandUpdate convert2NameElementCommandUpdate(NameElement nameElement) {
-        return new NameElementCommandUpdate(
-                nameElement.getUuid(),
-                nameElement.getParentSystemStructure(),
-                nameElement.getParentDeviceStructure(),
-                nameElement.getIndex(),
-                nameElement.getDescription(),
-                nameElement.getComment());
-    }
-
-    /**
-     * Utility method to return name element command for confirm given name element.
-     *
-     * @param nameElement name element
-     * @return name element command for confirm
-     */
-    static NameElementCommandConfirm convert2NameElementCommandConfirm(NameElement nameElement) {
-        return new NameElementCommandConfirm(
-                nameElement.getUuid(),
-                nameElement.getComment());
-    }
-
-    /**
-     * Utility method to return name element commands for create given name elements.
-     *
-     * @param nameElements name elements
-     * @return name element commands for create
-     */
-    public static NameElementCommandCreate[] convert2NameElementCommandCreate(NameElement[] nameElements) {
-        NameElementCommandCreate[] nameElementCommandsCreate = new NameElementCommandCreate[nameElements.length];
-        for (int i=0; i<nameElements.length; i++) {
-            nameElementCommandsCreate[i] = convert2NameElementCommandCreate(nameElements[i]);
-        }
-        return nameElementCommandsCreate;
-    }
-
-    /**
-     * Utility method to return name element commands for update given name elements.
-     *
-     * @param nameElements name elements
-     * @return name element commands for update
-     */
-    public static NameElementCommandUpdate[] convert2NameElementCommandUpdate(NameElement[] nameElements) {
-        NameElementCommandUpdate[] nameElementCommandsUpdate = new NameElementCommandUpdate[nameElements.length];
-        for (int i=0; i<nameElements.length; i++) {
-            nameElementCommandsUpdate[i] =  convert2NameElementCommandUpdate(nameElements[i]);
-        }
-        return nameElementCommandsUpdate;
-    }
-
-    /**
-     * Utility method to return name element commands for confirm given name elements.
-     *
-     * @param nameElements name elements
-     * @return name element commands for confirm
-     */
-    public static NameElementCommandConfirm[] convert2NameElementCommandConfirm(NameElement[] nameElements) {
-        NameElementCommandConfirm[] nameElementCommandsConfirm = new NameElementCommandConfirm[nameElements.length];
-        for (int i=0; i<nameElements.length; i++) {
-            nameElementCommandsConfirm[i] = convert2NameElementCommandConfirm(nameElements[i]);
-        }
-        return nameElementCommandsConfirm;
-    }
-
-    // ----------------------------------------------------------------------------------------------------
-
     /**
      * Return string for name element command array.
      *
diff --git a/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java b/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
index 181fd5b1..112b1134 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilStructureElement.java
@@ -38,10 +38,14 @@ import org.openepics.names.rest.beans.Status;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 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.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -65,12 +69,42 @@ public class ITUtilStructureElement {
     // ----------------------------------------------------------------------------------------------------
 
     /**
-     * Return string for structure element array.
+     * Return string for structure element command array.
      *
-     * @param value structure element array
-     * @return string for structure element array
+     * @param value structure element command array
+     * @return string for structure element command array
      */
-    static String object2Json(StructureElementCommand[] value) {
+    static String object2Json(StructureElementCommandCreate[] value) {
+        try {
+            return mapper.writeValueAsString(value);
+        } catch (JsonProcessingException e) {
+            fail();
+        }
+        return null;
+    }
+
+    /**
+     * Return string for structure element command array.
+     *
+     * @param value structure element command array
+     * @return string for structure element command array
+     */
+    static String object2Json(StructureElementCommandUpdate[] value) {
+        try {
+            return mapper.writeValueAsString(value);
+        } catch (JsonProcessingException e) {
+            fail();
+        }
+        return null;
+    }
+
+    /**
+     * Return string for structure element command array.
+     *
+     * @param value structure element command array
+     * @return string for structure element command array
+     */
+    static String object2Json(StructureElementCommandConfirm[] value) {
         try {
             return mapper.writeValueAsString(value);
         } catch (JsonProcessingException e) {
@@ -409,40 +443,80 @@ public class ITUtilStructureElement {
     // --------------------
 
     /**
-     * Utility method to validate structure element and assert expected response.
+     * Utility method to validate structure element command for create and assert expected response.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param structureCommand structure command
      * @param expected expected response
      */
-    public static void assertValidate(StructureElementCommand structureElement, StructureCommand structureCommand, Boolean expected) {
-        assertValidate(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement}, structureCommand, expected);
+    public static void assertValidate(StructureElementCommandCreate structureElementCommand, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), structureCommand, expected);
     }
     /**
-     * Utility method to validate structure elements and assert expected response.
+     * Utility method to validate structure element command for update and assert expected response.
+     *
+     * @param structureElementCommand structure element command
+     * @param structureCommand structure command
+     * @param expected expected response
+     */
+    public static void assertValidate(StructureElementCommandUpdate structureElementCommand, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandUpdate[] {structureElementCommand}), structureCommand, expected);
+    }
+    /**
+     * Utility method to validate structure element command for confirm and assert expected response.
+     *
+     * @param structureElementCommand structure element command
+     * @param structureCommand structure command
+     * @param expected expected response
+     */
+    public static void assertValidate(StructureElementCommandConfirm structureElementCommand, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandConfirm[] {structureElementCommand}), structureCommand, expected);
+    }
+    /**
+     * Utility method to validate structure element commands for create and assert expected response.
+     *
+     * @param structureElementCommands structure element commands
+     * @param structureCommand structure command
+     * @param expected expected response
+     */
+    public static void assertValidate(StructureElementCommandCreate[] structureElementCommands, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(structureElementCommands), structureCommand, expected);
+    }
+    /**
+     * Utility method to validate structure element commands for update and assert expected response.
+     *
+     * @param structureElementCommands structure element commands
+     * @param structureCommand structure command
+     * @param expected expected response
+     */
+    public static void assertValidate(StructureElementCommandUpdate[] structureElementCommands, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(structureElementCommands), structureCommand, expected);
+    }
+    /**
+     * Utility method to validate structure element commands for confirm and assert expected response.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @param structureCommand structure command
      * @param expected expected response
      */
-    public static void assertValidate(StructureElementCommand[] structureElements, StructureCommand structureCommand, Boolean expected) {
-        assertValidate(AuthorizationChoice.NONE, structureElements, structureCommand, expected);
+    public static void assertValidate(StructureElementCommandConfirm[] structureElementCommands, StructureCommand structureCommand, Boolean expected) {
+        assertValidate(AuthorizationChoice.NONE, object2Json(structureElementCommands), structureCommand, expected);
     }
     /**
      * Utility method to validate structure elements and assert expected response.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param json json
      * @param structureCommand structure command
      * @param expected expected response
      */
-    public static void assertValidate(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements, StructureCommand structureCommand, Boolean expected) {
+    public static void assertValidate(AuthorizationChoice authorizationChoice, String json, StructureCommand structureCommand, Boolean expected) {
         String path = getValidatePath(structureCommand);
 
         try {
             String[] response = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, json));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), expected);
         } catch (IOException e) {
@@ -494,12 +568,12 @@ public class ITUtilStructureElement {
      * Method expected to NOT succeed to create a structure element
      * but instead assert response code (possibly also a non-empty message).
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @param responseCode response code
      * @throws JsonProcessingException
      */
-    public static void assertCreate(StructureElementCommand structureElement, int responseCode) throws JsonProcessingException {
-        assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommand[] {structureElement}), responseCode);
+    public static void assertCreate(StructureElementCommandCreate structureElementCommand, int responseCode) throws JsonProcessingException {
+        assertCreate(AuthorizationChoice.NONE, object2Json(new StructureElementCommandCreate[] {structureElementCommand}), responseCode);
     }
     /**
      * Utility method to (try to) create a structure element from given json and assert result response code.
@@ -540,40 +614,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to create a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return created structure element
      */
-    public static StructureElement assertCreate(StructureElementCommand structureElement) {
-        return assertCreate(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertCreate(StructureElementCommandCreate structureElementCommand) {
+        return assertCreate(AuthorizationChoice.NONE, new StructureElementCommandCreate[] {structureElementCommand})[0];
     }
     /**
      * Utility method to create structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return created structure element
      */
-    public static StructureElement[] assertCreate(StructureElementCommand[] structureElements) {
-        return assertCreate(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertCreate(StructureElementCommandCreate[] structureElementCommands) {
+        return assertCreate(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to create structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return created structure element
      */
-    public static StructureElement[] assertCreate(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertCreate(AuthorizationChoice authorizationChoice, StructureElementCommandCreate[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.CREATE);
 
         try {
             String[] response = null;
             StructureElement[] createdStructureElements  = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlPostPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlPostPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_CREATED);
             createdStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -603,40 +677,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to update a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return updated structure element
      */
-    public static StructureElement assertUpdate(StructureElementCommand structureElement) {
-        return assertUpdate(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertUpdate(StructureElementCommandUpdate structureElementCommand) {
+        return assertUpdate(AuthorizationChoice.NONE, new StructureElementCommandUpdate[] {structureElementCommand})[0];
     }
     /**
      * Utility method to update structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return updated structure element
      */
-    public static StructureElement[] assertUpdate(StructureElementCommand[] structureElements) {
-        return assertUpdate(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertUpdate(StructureElementCommandUpdate[] structureElementCommands) {
+        return assertUpdate(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to update structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return updated structure element
      */
-    public static StructureElement[] assertUpdate(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertUpdate(AuthorizationChoice authorizationChoice, StructureElementCommandUpdate[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.UPDATE);
 
         try {
             String[] response = null;
             StructureElement[] updatedStructureElements  = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlPutPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlPutPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             updatedStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -663,40 +737,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to delete a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return deleted structure element
      */
-    public static StructureElement assertDelete(StructureElementCommand structureElement) {
-        return assertDelete(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertDelete(StructureElementCommandConfirm structureElementCommand) {
+        return assertDelete(AuthorizationChoice.NONE, new StructureElementCommandConfirm[] {structureElementCommand})[0];
     }
     /**
      * Utility method to delete structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return deleted structure element
      */
-    public static StructureElement[] assertDelete(StructureElementCommand[] structureElements) {
-        return assertDelete(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertDelete(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertDelete(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to delete structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return deleted structure element
      */
-    public static StructureElement[] assertDelete(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertDelete(AuthorizationChoice authorizationChoice, StructureElementCommandConfirm[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.DELETE);
 
         try {
             String[] response = null;
             StructureElement[] deletedStructureElements  = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlDeletePathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlDeletePathJson(authorizationChoice, EndpointChoice.STRUCTURES, "", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             deletedStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -723,40 +797,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to approve a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return approved structure element
      */
-    public static StructureElement assertApprove(StructureElementCommand structureElement) {
-        return assertApprove(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertApprove(StructureElementCommandConfirm structureElementCommand) {
+        return assertApprove(AuthorizationChoice.NONE, new StructureElementCommandConfirm[] {structureElementCommand})[0];
     }
     /**
      * Utility method to approve structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return approved structure element
      */
-    public static StructureElement[] assertApprove(StructureElementCommand[] structureElements) {
-        return assertApprove(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertApprove(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertApprove(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to approve structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return approved structure element
      */
-    public static StructureElement[] assertApprove(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertApprove(AuthorizationChoice authorizationChoice, StructureElementCommandConfirm[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.APPROVE);
 
         try {
             String[] response = null;
             StructureElement[] approvedStructureElements = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/approve", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/approve", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             approvedStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -783,40 +857,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to cancel a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return cancelled structure element
      */
-    public static StructureElement assertCancel(StructureElementCommand structureElement) {
-        return assertCancel(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertCancel(StructureElementCommandConfirm structureElementCommand) {
+        return assertCancel(AuthorizationChoice.NONE, new StructureElementCommandConfirm[] {structureElementCommand})[0];
     }
     /**
      * Utility method to cancel structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return cancelled structure element
      */
-    public static StructureElement[] assertCancel(StructureElementCommand[] structureElements) {
-        return assertCancel(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertCancel(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertCancel(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to cancel structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return cancelled structure element
      */
-    public static StructureElement[] assertCancel(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertCancel(AuthorizationChoice authorizationChoice, StructureElementCommandConfirm[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.CANCEL);
 
         try {
             String[] response = null;
             StructureElement[] cancelledStructureElements = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/cancel", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/cancel", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             cancelledStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -843,40 +917,40 @@ public class ITUtilStructureElement {
     /**
      * Utility method to reject a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return rejected structure element
      */
-    public static StructureElement assertReject(StructureElementCommand structureElement) {
-        return assertReject(AuthorizationChoice.NONE, new StructureElementCommand[] {structureElement})[0];
+    public static StructureElement assertReject(StructureElementCommandConfirm structureElementCommand) {
+        return assertReject(AuthorizationChoice.NONE, new StructureElementCommandConfirm[] {structureElementCommand})[0];
     }
     /**
      * Utility method to reject structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return rejected structure element
      */
-    public static StructureElement[] assertReject(StructureElementCommand[] structureElements) {
-        return assertReject(AuthorizationChoice.NONE, structureElements);
+    public static StructureElement[] assertReject(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertReject(AuthorizationChoice.NONE, structureElementCommands);
     }
     /**
      * Utility method to reject structure elements and assert result.
      *
      * @param authorizationChoice authorization choice (none, user, admin)
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return rejected structure element
      */
-    public static StructureElement[] assertReject(AuthorizationChoice authorizationChoice, StructureElementCommand[] structureElements) {
+    public static StructureElement[] assertReject(AuthorizationChoice authorizationChoice, StructureElementCommandConfirm[] structureElementCommands) {
         String path = getValidatePath(StructureCommand.REJECT);
 
         try {
             String[] response = null;
             StructureElement[] rejectedStructureElements = null;
 
-            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlGetPathJson(authorizationChoice, EndpointChoice.STRUCTURES, path, object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             ITUtil.assertEqualsResponseBoolean(mapper.readValue(response[1], ResponseBooleanList.class), Boolean.TRUE);
 
-            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/reject", object2Json(structureElements)));
+            response = ITUtil.runShellCommand(ITUtil.curlPatchPathJson(authorizationChoice, EndpointChoice.STRUCTURES, "/reject", object2Json(structureElementCommands)));
             ITUtil.assertResponseLength2Code(response, HttpURLConnection.HTTP_OK);
             rejectedStructureElements = mapper.readValue(response[1], StructureElement[].class);
 
@@ -905,172 +979,172 @@ public class ITUtilStructureElement {
     /**
      * Utility method to create, approve a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return approved structure element (after create)
      */
-    public static StructureElement assertCreateApprove(StructureElementCommand structureElement) {
-        return assertApprove(assertCreate(structureElement));
+    public static StructureElement assertCreateApprove(StructureElementCommandCreate structureElementCommand) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand)));
     }
     /**
      * Utility method to create, approve structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return approved structure elements (after create)
      */
-    public static StructureElement[] assertCreateApprove(StructureElementCommand[] structureElements) {
-        return assertApprove(assertCreate(structureElements));
+    public static StructureElement[] assertCreateApprove(StructureElementCommandCreate[] structureElementCommands) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands)));
     }
 
     /**
      * Utility method to create, cancel a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return cancelled structure element (after create)
      */
-    public static StructureElement assertCreateCancel(StructureElementCommand structureElement) {
-        return assertCancel(assertCreate(structureElement));
+    public static StructureElement assertCreateCancel(StructureElementCommandCreate structureElementCommand) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand)));
     }
     /**
      * Utility method to create, cancel structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return cancelled structure elements (after create)
      */
-    public static StructureElement[] assertCreateCancel(StructureElementCommand[] structureElements) {
-        return assertCancel(assertCreate(structureElements));
+    public static StructureElement[] assertCreateCancel(StructureElementCommandCreate[] structureElementCommands) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands)));
     }
 
     /**
      * Utility method to create, reject a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return rejected structure element (after create)
      */
-    public static StructureElement assertCreateReject(StructureElementCommand structureElement) {
-        return assertReject(assertCreate(structureElement));
+    public static StructureElement assertCreateReject(StructureElementCommandCreate structureElementCommand) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommand)));
     }
     /**
      * Utility method to create, reject structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return rejected structure elements (after create)
      */
-    public static StructureElement[] assertCreateReject(StructureElementCommand[] structureElements) {
-        return assertReject(assertCreate(structureElements));
+    public static StructureElement[] assertCreateReject(StructureElementCommandCreate[] structureElementCommands) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertCreate(structureElementCommands)));
     }
 
     /**
      * Utility method to update, approve a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return approved structure element (after update)
      */
-    public static StructureElement assertUpdateApprove(StructureElementCommand structureElement) {
-        return assertApprove(assertUpdate(structureElement));
+    public static StructureElement assertUpdateApprove(StructureElementCommandUpdate structureElementCommand) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand)));
     }
     /**
      * Utility method to update, approve structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return approved structure elements (after update)
      */
-    public static StructureElement[] assertUpdateApprove(StructureElementCommand[] structureElements) {
-        return assertApprove(assertUpdate(structureElements));
+    public static StructureElement[] assertUpdateApprove(StructureElementCommandUpdate[] structureElementCommands) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands)));
     }
 
     /**
      * Utility method to update, cancel a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return cancelled structure element (after update)
      */
-    public static StructureElement assertUpdateCancel(StructureElementCommand structureElement) {
-        return assertCancel(assertUpdate(structureElement));
+    public static StructureElement assertUpdateCancel(StructureElementCommandUpdate structureElementCommand) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand)));
     }
     /**
      * Utility method to update, cancel structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return cancelled structure elements (after update)
      */
-    public static StructureElement[] assertUpdateCancel(StructureElementCommand[] structureElements) {
-        return assertCancel(assertUpdate(structureElements));
+    public static StructureElement[] assertUpdateCancel(StructureElementCommandUpdate[] structureElementCommands) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands)));
     }
 
     /**
      * Utility method to update, reject a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return rejected structure element (after update)
      */
-    public static StructureElement assertUpdateReject(StructureElementCommand structureElement) {
-        return assertReject(assertUpdate(structureElement));
+    public static StructureElement assertUpdateReject(StructureElementCommandUpdate structureElementCommand) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommand)));
     }
     /**
      * Utility method to update, reject structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return rejected structure elements (after update)
      */
-    public static StructureElement[] assertUpdateReject(StructureElementCommand[] structureElements) {
-        return assertReject(assertUpdate(structureElements));
+    public static StructureElement[] assertUpdateReject(StructureElementCommandUpdate[] structureElementCommands) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertUpdate(structureElementCommands)));
     }
 
     /**
      * Utility method to delete, approve a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return approved structure element (after delete)
      */
-    public static StructureElement assertDeleteApprove(StructureElementCommand structureElement) {
-        return assertApprove(assertDelete(structureElement));
+    public static StructureElement assertDeleteApprove(StructureElementCommandConfirm structureElementCommand) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommand)));
     }
     /**
      * Utility method to delete, approve structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return approved structure elements (after delete)
      */
-    public static StructureElement[] assertDeleteApprove(StructureElementCommand[] structureElements) {
-        return assertApprove(assertDelete(structureElements));
+    public static StructureElement[] assertDeleteApprove(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertApprove(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommands)));
     }
 
     /**
      * Utility method to delete, cancel a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return cancelled structure element (after delete)
      */
-    public static StructureElement assertDeleteCancel(StructureElementCommand structureElement) {
-        return assertCancel(assertDelete(structureElement));
+    public static StructureElement assertDeleteCancel(StructureElementCommandConfirm structureElementCommand) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommand)));
     }
     /**
      * Utility method to delete, cancel structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return cancelled structure elements (after delete)
      */
-    public static StructureElement[] assertDeleteCancel(StructureElementCommand[] structureElements) {
-        return assertCancel(assertDelete(structureElements));
+    public static StructureElement[] assertDeleteCancel(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertCancel(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommands)));
     }
 
     /**
      * Utility method to delete, reject a structure element and assert result.
      *
-     * @param structureElement structure element
+     * @param structureElementCommand structure element command
      * @return rejected structure element (after delete)
      */
-    public static StructureElement assertDeleteReject(StructureElementCommand structureElement) {
-        return assertReject(assertDelete(structureElement));
+    public static StructureElement assertDeleteReject(StructureElementCommandConfirm structureElementCommand) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommand)));
     }
     /**
      * Utility method to delete, reject structure elements and assert result.
      *
-     * @param structureElements structure elements
+     * @param structureElementCommands structure element commands
      * @return rejected structure elements (after delete)
      */
-    public static StructureElement[] assertDeleteReject(StructureElementCommand[] structureElements) {
-        return assertReject(assertDelete(structureElements));
+    public static StructureElement[] assertDeleteReject(StructureElementCommandConfirm[] structureElementCommands) {
+        return assertReject(StructureElementUtil.convertElement2CommandConfirm(assertDelete(structureElementCommands)));
     }
 
 }
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index ee63dfbb..6b96311f 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -31,12 +31,15 @@ import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.NameElement;
+import org.openepics.names.rest.beans.element.NameElementCommand;
 import org.openepics.names.rest.beans.element.NameElementCommandConfirm;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.NameElementCommandUpdate;
 import org.openepics.names.rest.beans.element.StructureElement;
-import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
 import org.openepics.names.util.NameCommand;
+import org.openepics.names.util.NameElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -62,6 +65,11 @@ class NamesIT {
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send
     //     NameElement, StructureElement
+    //
+    //     NameElementCommand
+    //	       create -       parentSystemStructure, parentDeviceStructure, index, description, comment
+    //	       update - uuid, parentSystemStructure, parentDeviceStructure, index, description, comment
+    //	       delete - uuid,                                                                   comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -84,77 +92,77 @@ class NamesIT {
     public static void initAll() {
         // init system group, system, subsystem, discipline, device group, device type
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "Accelerator", "Acc",
                 "The ESS Linear Accelerator", "approved by alfio");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupAcc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupAcc,
                 "Radio Frequency Quadrupole", "RFQ",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemRFQ = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "01 Phase Reference Line", "010PRL",
                 "empty", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystem010PRL = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "RFQ-010", "010",
                 "empty", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystem010 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "Power switch board 01", "N1U1",
                 "Electrical power cabinets", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystemN1U1 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Electromagnetic Resonators", "EMR",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                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);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "Flow Switch", "FS",
                 "empty", "Approve names added from misc device group");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceTypeFS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "RF Antenna", "RFA",
                 "empty", "Approve names added from misc device group");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceTypeRFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "Temperature Transmitter", "TT",
                 "empty", "Approve names added from misc device group");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceTypeTT = approvedStructureElement.getUuid();
     }
 
@@ -200,17 +208,16 @@ class NamesIT {
             NameElementCommandCreate nameElementCommandCreate = null;
             NameElementCommandUpdate nameElementCommandUpdate = null;
             NameElementCommandConfirm nameElementCommandConfirm = null;
+            NameElementCommand nameElementCommand = null;
             NameElement createdNameElement = null;
-            StructureElementCommand structureElement = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
 
-            nameElementCommandCreate = new NameElementCommandCreate(
-                    subsystemN1U1, deviceTypeRFA, "071",
-                    "description", "comment");
-            nameElementCommandUpdate = new NameElementCommandUpdate(
+            nameElementCommand = new NameElementCommand(
                     null, subsystemN1U1, deviceTypeRFA, "071",
                     "description", "comment");
-            nameElementCommandConfirm = new NameElementCommandConfirm(
-                    null, "comment");
+            nameElementCommandCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommand);
+            nameElementCommandUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommand);
+            nameElementCommandConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommand);
 
             Long totalCount = ITUtilNameElement.assertRead("").getTotalCount();
             assertNotNull(totalCount);
@@ -239,12 +246,10 @@ class NamesIT {
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.TRUE);
 
             // delete, approve
-            structureElement = new StructureElementCommand(
-                    subsystemN1U1, Type.SUBSYSTEM, systemRFQ,
-                    "name", "N1U1",
-                    "description", "comment");
+            structureElementCommandConfirm = new StructureElementCommandConfirm(
+                    subsystemN1U1, Type.SUBSYSTEM, "comment");
 
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
             ITUtilNameElement.assertExists("RFQ-N1U1:EMR-RFA-071", Boolean.TRUE);
             ITUtilNameElement.assertIsLegacy("RFQ-N1U1:EMR-RFA-071", Boolean.FALSE);
@@ -253,7 +258,7 @@ class NamesIT {
             ITUtilNameElement.assertValidate(nameElementCommandUpdate,  NameCommand.UPDATE, Boolean.TRUE);
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.TRUE);
 
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             totalCount = ITUtilNameElement.assertRead("").getTotalCount();
             assertNotNull(totalCount);
@@ -537,7 +542,7 @@ class NamesIT {
 
             // create
             createdNameElement = ITUtilNameElement.assertCreate(nameElementCommandCreate);
-            nameElementCommandUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElement);
+            nameElementCommandUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElement);
 
             // validate update
 
@@ -702,8 +707,7 @@ class NamesIT {
 
             // create
             createdNameElement = ITUtilNameElement.assertCreate(nameElementCommandCreate);
-            nameElementCommandConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElement);
-//            nameElement.setUuid(createdNameElement.getUuid());
+            nameElementCommandConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElement);
 
             // validate delete
 
@@ -715,49 +719,11 @@ class NamesIT {
             nameElementCommandConfirm.setUuid(createdNameElement.getUuid());
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.TRUE);
 
-
-
-//            nameElement.setDescription(null);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setDescription("checkDelete");
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-
             nameElementCommandConfirm.setComment(null);
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.FALSE);
 
             nameElementCommandConfirm.setComment("checkDelete");
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.TRUE);
-
-//            // system structure not used for validation
-//
-//            nameElement.setParentSystemStructure(systemGroupAcc);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setParentSystemStructure(null);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setParentSystemStructure(systemRFQ);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setParentSystemStructure(null);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setParentSystemStructure(subsystem010PRL);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            // device type not used for validation
-//
-//            nameElement.setParentDeviceStructure(deviceTypeRFA);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            // index not used for validation
-//
-//            nameElement.setIndex(null);
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
-//
-//            nameElement.setIndex("055");
-//            ITUtilNameElement.assertValidate(nameElement, NameCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -791,8 +757,7 @@ class NamesIT {
 
             // create
             createdNameElement = ITUtilNameElement.assertCreate(nameElementCommandCreate);
-//            nameElement = createdNameElement;
-            nameElementCommandConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElement);
+            nameElementCommandConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElement);
 
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.TRUE);
 
@@ -802,8 +767,7 @@ class NamesIT {
 
             // delete
             deletedNameElement = ITUtilNameElement.assertDelete(nameElementCommandConfirm);
-//            nameElement = deletedNameElement;
-            nameElementCommandConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(deletedNameElement);
+            nameElementCommandConfirm = NameElementUtil.convertElement2CommandConfirm(deletedNameElement);
 
             ITUtilNameElement.assertValidate(nameElementCommandConfirm, NameCommand.DELETE, Boolean.FALSE);
         } catch (Exception e) {
@@ -879,25 +843,22 @@ class NamesIT {
         nameElement8 = responseNameElement;
 
         // update element 1 twice
-//        nameElement = nameElement1;
-        nameElementCommandUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(nameElement1);
+        nameElementCommandUpdate = NameElementUtil.convertElement2CommandUpdate(nameElement1);
         nameElementCommandUpdate.setDescription("updated description");
         nameElementCommandUpdate.setComment("updated comment");
 
         responseNameElement = ITUtilNameElement.assertUpdate(nameElementCommandUpdate);
-//        nameElement = responseNameElement;
-        nameElementCommandUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(responseNameElement);
+        nameElementCommandUpdate = NameElementUtil.convertElement2CommandUpdate(responseNameElement);
 
         nameElementCommandUpdate.setDescription("updated description again");
         nameElementCommandUpdate.setComment("updated comment again");
 
         responseNameElement = ITUtilNameElement.assertUpdate(nameElementCommandUpdate);
-//        nameElement = responseNameElement;
 
         // delete element 7, 8
-        nameElementCommandConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(nameElement7);
+        nameElementCommandConfirm = NameElementUtil.convertElement2CommandConfirm(nameElement7);
         responseNameElement = ITUtilNameElement.assertDelete(nameElementCommandConfirm);
-        nameElementCommandConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(nameElement8);
+        nameElementCommandConfirm = NameElementUtil.convertElement2CommandConfirm(nameElement8);
         responseNameElement = ITUtilNameElement.assertDelete(nameElementCommandConfirm);
 
         try {
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
index 00438e6e..4a532605 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
@@ -32,7 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -72,6 +76,14 @@ class StructuresDeviceGroupIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -85,21 +97,21 @@ class StructuresDeviceGroupIT {
     public static void initAll() {
         // init discipline
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "Di",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "Di2",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         discipline2Uuid = approvedStructureElement.getUuid();
     }
 
@@ -134,7 +146,7 @@ class StructuresDeviceGroupIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "CC", Boolean.FALSE);
@@ -144,34 +156,34 @@ class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.DEVICEGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.DEVICEGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setParent(disciplineUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setParent(disciplineUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DEVICEGROUP);
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(Type.DEVICEGROUP);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -191,101 +203,101 @@ class StructuresDeviceGroupIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.DEVICEGROUP);
-            structureElement.setParent(disciplineUuid);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.DEVICEGROUP);
+            structureElementCommandCreate.setParent(disciplineUuid);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Grp ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Grp ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Grp");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Grp");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Grp0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Grp0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Grp:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Grp:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Grp:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Grp:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -306,46 +318,50 @@ class StructuresDeviceGroupIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+//            structureElement.setUuid(null);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -366,46 +382,51 @@ class StructuresDeviceGroupIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -426,46 +447,51 @@ class StructuresDeviceGroupIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists         (Type.DEVICEGROUP, "Di", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -499,66 +525,68 @@ class StructuresDeviceGroupIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DEVICEGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.DEVICEGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setParent(disciplineUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setParent(disciplineUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -581,33 +609,37 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -632,33 +664,37 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -683,33 +719,37 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -739,66 +779,41 @@ class StructuresDeviceGroupIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.DEVICEGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setParent(disciplineUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.DEVICEGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -821,33 +836,35 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -872,33 +889,35 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -923,33 +942,35 @@ class StructuresDeviceGroupIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -967,19 +988,21 @@ class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize();
@@ -1004,10 +1027,10 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + createdStructureElement.getUuid().toString(), 1, -1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize());
@@ -1032,7 +1055,7 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + approvedStructureElement.getUuid().toString(), 1, -1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1050,19 +1073,21 @@ class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize();
@@ -1087,10 +1112,10 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + createdStructureElement.getUuid().toString(), 1, -1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize());
@@ -1115,7 +1140,7 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + cancelledStructureElement.getUuid().toString(), 1, -1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1133,19 +1158,21 @@ class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICEGROUP, disciplineUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICEGROUP, disciplineUuid,
                     "name", null,
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize();
@@ -1170,10 +1197,10 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + createdStructureElement.getUuid().toString(), 1, -1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICEGROUP", 1, -1).getListSize());
@@ -1198,7 +1225,7 @@ class StructuresDeviceGroupIT {
 
             ITUtilStructureElement.assertRead("/history/" + rejectedStructureElement.getUuid().toString(), 1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di", Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1234,40 +1261,40 @@ class StructuresDeviceGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1296,7 +1323,7 @@ class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertRead("/history/" + uuid3.toString(), 1);
             ITUtilStructureElement.assertRead("/history/" + uuid4.toString(), 1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di",    Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di",    Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-P1", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-C1", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-R1", Boolean.FALSE);
@@ -1336,109 +1363,114 @@ class StructuresDeviceGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1466,7 +1498,7 @@ class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertRead("/history/" + uuid3.toString(), 9);
             ITUtilStructureElement.assertRead("/history/" + uuid4.toString(), 9);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di",    Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di",    Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-P9", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-C9", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di-R9", Boolean.FALSE);
@@ -1492,280 +1524,282 @@ class StructuresDeviceGroupIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, discipline2Uuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, discipline2Uuid,
                 "name", null,
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 60 device group entries
 
@@ -1854,7 +1888,7 @@ class StructuresDeviceGroupIT {
             ITUtilStructureElement.assertRead("/history/" + uuid.toString(),            1);
             ITUtilStructureElement.assertRead("/history/" + discipline2Uuid.toString(), 1);
 
-            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di2", Boolean.TRUE);
+            ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di2", Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
index ee7f1c63..0212df55 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
@@ -32,7 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -72,6 +76,14 @@ class StructuresDeviceTypeIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -85,21 +97,21 @@ class StructuresDeviceTypeIT {
     public static void initAll() {
         // init discipline, device group
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "Di",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupUuid = approvedStructureElement.getUuid();
     }
 
@@ -134,7 +146,7 @@ class StructuresDeviceTypeIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "CC", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Cc", Boolean.FALSE);
@@ -156,34 +168,34 @@ class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.DEVICETYPE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.DEVICETYPE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setParent(deviceGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setParent(deviceGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -203,101 +215,101 @@ class StructuresDeviceTypeIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.DEVICETYPE);
-            structureElement.setParent(deviceGroupUuid);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.DEVICETYPE);
+            structureElementCommandCreate.setParent(deviceGroupUuid);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dev ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dev ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dev");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Dev");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Dev0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Dev0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dev:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dev:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dev:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dev:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -318,38 +330,42 @@ class StructuresDeviceTypeIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Ca",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Ca", Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Ca", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -370,46 +386,51 @@ class StructuresDeviceTypeIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Cc",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -430,46 +451,51 @@ class StructuresDeviceTypeIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Cr",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DEVICETYPE, "Di-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -503,66 +529,68 @@ class StructuresDeviceTypeIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElement();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Cu",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DEVICETYPE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.DEVICETYPE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setParent(deviceGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setParent(deviceGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -585,33 +613,37 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Ua",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -636,33 +668,37 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Uc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -687,33 +723,37 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Ur",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -743,66 +783,41 @@ class StructuresDeviceTypeIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Cd",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.DEVICETYPE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setParent(deviceGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.DEVICETYPE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -825,33 +840,35 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Da",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -876,33 +893,35 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Dc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -927,33 +946,35 @@ class StructuresDeviceTypeIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Dr",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -971,19 +992,21 @@ class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Rsha",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize();
@@ -1012,7 +1035,7 @@ class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-Rsha", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize());
@@ -1056,19 +1079,21 @@ class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Rshc",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize();
@@ -1097,7 +1122,7 @@ class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-Rshc", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize());
@@ -1141,19 +1166,21 @@ class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupUuid,
                     "name", "Rshr",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize();
@@ -1182,7 +1209,7 @@ class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-Rshr", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DEVICETYPE", 1, -1).getListSize());
@@ -1244,40 +1271,40 @@ class StructuresDeviceTypeIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "P1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "C1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "R1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "A1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1349,109 +1376,114 @@ class StructuresDeviceTypeIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "P9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "C9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "R9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "A9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1508,280 +1540,282 @@ class StructuresDeviceTypeIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AA1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AA2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AA3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AA4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AA5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AB1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AB2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AB3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AB4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AB5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AC1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AC2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AC3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AC4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AC5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AD1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AD2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AD3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AD4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AD5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AE1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AE2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AE3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AE4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AE5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AF3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AF4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AF5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AG1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AG2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AG3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AG4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "AG5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 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 6e8e1738..9e5b63ec 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
@@ -31,7 +31,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -71,6 +75,14 @@ class StructuresDisciplineIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -107,7 +119,7 @@ class StructuresDisciplineIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "CC", Boolean.FALSE);
@@ -117,30 +129,30 @@ class StructuresDisciplineIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.DISCIPLINE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.DISCIPLINE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -160,100 +172,100 @@ class StructuresDisciplineIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.DISCIPLINE);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.DISCIPLINE);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dis ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dis ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dis");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Dis");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Dis0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Dis0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dis:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dis:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Dis:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Dis:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -274,38 +286,42 @@ class StructuresDisciplineIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DISCIPLINE, null,
                     "name", "Ca",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Ca", Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Ca", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -326,46 +342,51 @@ class StructuresDisciplineIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DISCIPLINE, null,
                     "name", "Cc",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -386,46 +407,51 @@ class StructuresDisciplineIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.DISCIPLINE, null,
                     "name", "Cr",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.DISCIPLINE, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -458,60 +484,62 @@ class StructuresDisciplineIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Cu",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DISCIPLINE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.DISCIPLINE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -534,33 +562,37 @@ class StructuresDisciplineIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Ua",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -585,33 +617,37 @@ class StructuresDisciplineIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Uc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -636,33 +672,37 @@ class StructuresDisciplineIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Ur",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -692,60 +732,41 @@ class StructuresDisciplineIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Cd",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setType(Type.DISCIPLINE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.DISCIPLINE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -768,33 +789,35 @@ class StructuresDisciplineIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Da",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -819,33 +842,35 @@ class StructuresDisciplineIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Dc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -870,33 +895,35 @@ class StructuresDisciplineIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Dr",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -914,19 +941,21 @@ class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Rsha",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize();
@@ -950,7 +979,7 @@ class StructuresDisciplineIT {
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "Rsha", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize());
@@ -989,19 +1018,23 @@ class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Rshc",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            StructureElementCommandCreate structureElementCommandCreate = null;
+//            StructureElementCommandConfirm structureElementCommandConfirm = null;
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize();
@@ -1025,7 +1058,7 @@ class StructuresDisciplineIT {
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "Rshc", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize());
@@ -1064,19 +1097,21 @@ class StructuresDisciplineIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DISCIPLINE, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DISCIPLINE, null,
                     "name", "Rshr",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize();
@@ -1100,7 +1135,7 @@ class StructuresDisciplineIT {
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "Rshr", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/DISCIPLINE", 1, -1).getListSize());
@@ -1157,40 +1192,40 @@ class StructuresDisciplineIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "P1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "C1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "R1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "A1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1258,109 +1293,114 @@ class StructuresDisciplineIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "P9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "C9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "R9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "A9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1413,280 +1453,282 @@ class StructuresDisciplineIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AA1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AA2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AA3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AA4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AA5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AB1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AB2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AB3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AB4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AB5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AC1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AC2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AC3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AC4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AC5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AD1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AD2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AD3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AD4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AD5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AE1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AE2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AE3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AE4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AE5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AF2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AF3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AF4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AF5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AG1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AG2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AG3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AG4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "AG5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 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 adaaef36..39e07b97 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
@@ -32,7 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -72,6 +76,14 @@ class StructuresSubsystemIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -85,21 +97,21 @@ class StructuresSubsystemIT {
     public static void initAll() {
         // init system group, system
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "Sg",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "Sys",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemUuid = approvedStructureElement.getUuid();
     }
 
@@ -135,7 +147,7 @@ class StructuresSubsystemIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "CC", Boolean.FALSE);
@@ -158,34 +170,34 @@ class StructuresSubsystemIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setParent(systemUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setParent(systemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -205,101 +217,101 @@ class StructuresSubsystemIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.SUBSYSTEM);
-            structureElement.setParent(systemUuid);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.SUBSYSTEM);
+            structureElementCommandCreate.setParent(systemUuid);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sub ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sub ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sub");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sub");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Sub0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sub0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sub:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sub:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sub:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sub:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -320,38 +332,42 @@ class StructuresSubsystemIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SUBSYSTEM, systemUuid,
                     "name", "Ca",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Ca", Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Ca", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -372,46 +388,51 @@ class StructuresSubsystemIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SUBSYSTEM, systemUuid,
                     "name", "Cc",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -432,46 +453,51 @@ class StructuresSubsystemIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SUBSYSTEM, systemUuid,
                     "name", "Cr",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SUBSYSTEM, "Sys-Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SUBSYSTEM, "Sys-Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -505,66 +531,68 @@ class StructuresSubsystemIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Cu",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DEVICETYPE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.DEVICETYPE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setParent(systemUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setParent(systemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -587,33 +615,37 @@ class StructuresSubsystemIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Ua",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -638,33 +670,37 @@ class StructuresSubsystemIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Uc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -689,33 +725,37 @@ class StructuresSubsystemIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Ur",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -745,66 +785,41 @@ class StructuresSubsystemIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Cd",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.DEVICETYPE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -827,33 +842,35 @@ class StructuresSubsystemIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Da",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -878,33 +895,35 @@ class StructuresSubsystemIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Dc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -929,33 +948,35 @@ class StructuresSubsystemIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Dr",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -973,19 +994,21 @@ class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Rsha",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize();
@@ -1021,7 +1044,7 @@ class StructuresSubsystemIT {
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rsha", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize());
@@ -1072,19 +1095,21 @@ class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Rshc",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize();
@@ -1120,7 +1145,7 @@ class StructuresSubsystemIT {
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshc", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize());
@@ -1171,19 +1196,21 @@ class StructuresSubsystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemUuid,
                     "name", "Rshr",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize();
@@ -1219,7 +1246,7 @@ class StructuresSubsystemIT {
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sg-Sys-Rshr", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SUBSYSTEM", 1, -1).getListSize());
@@ -1288,40 +1315,40 @@ class StructuresSubsystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "P1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "C1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "R1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "A1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1397,109 +1424,114 @@ class StructuresSubsystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "P9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "C9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "R9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "A9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1560,280 +1592,282 @@ class StructuresSubsystemIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AA1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AA2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AA3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AA4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AA5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AB1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AB2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AB3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AB4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AB5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AC1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AC2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AC3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AC4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AC5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AD1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AD2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AD3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AD4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AD5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AE1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AE2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AE3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AE4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AE5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AF2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AF3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AF4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AF5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AG1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AG2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AG3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AG4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "AG5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 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 25de030a..e4e719f2 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
@@ -32,7 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -72,6 +76,14 @@ class StructuresSystemGroupIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -111,7 +123,7 @@ class StructuresSystemGroupIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "CC", Boolean.FALSE);
@@ -123,36 +135,36 @@ class StructuresSystemGroupIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -172,106 +184,106 @@ class StructuresSystemGroupIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.SYSTEMGROUP);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.SYSTEMGROUP);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sys");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Sys0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sys0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Ac1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ac1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Acc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Acc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -293,55 +305,61 @@ class StructuresSystemGroupIT {
         //     with and without mnemonic
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
+            StructureElement approvedStructureElement = null;
             UUID uuid, uuid2, uuid3 = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEMGROUP, null,
                     "name", "Ca",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
             uuid = createdStructureElement.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Ca", Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Ca", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name2", null,
                     "description2", "comment2");
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
             uuid2 = createdStructureElement.getUuid();
 
             // create
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name3", null,
                     "description3", "comment3");
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
             uuid3 = createdStructureElement.getUuid();
 
             assertNotEquals(uuid, uuid2);
@@ -367,46 +385,65 @@ class StructuresSystemGroupIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEMGROUP, null,
                     "name", "Cc",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElementCreate.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
+
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setType(Type.SYSTEMGROUP);
+
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setComment("comment");
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElementCommandCreate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -427,46 +464,51 @@ class StructuresSystemGroupIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEMGROUP, null,
                     "name", "Cr",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElementCommandCreate.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertExists         (Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
+            ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEMGROUP, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElementCommandCreate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate,  StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -499,60 +541,62 @@ class StructuresSystemGroupIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Cu",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DISCIPLINE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.DISCIPLINE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -575,34 +619,38 @@ class StructuresSystemGroupIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Ua",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setDescription("description update approve check");
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setDescription("description update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -627,34 +675,38 @@ class StructuresSystemGroupIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Uc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setDescription("description update cancel check");
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setDescription("description update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -679,34 +731,38 @@ class StructuresSystemGroupIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Ur",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setDescription("description update reject check");
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setDescription("description update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -736,60 +792,41 @@ class StructuresSystemGroupIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Cd",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setType(Type.DISCIPLINE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -812,33 +849,35 @@ class StructuresSystemGroupIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Da",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -863,33 +902,35 @@ class StructuresSystemGroupIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Dc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -914,33 +955,35 @@ class StructuresSystemGroupIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Dr",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -958,19 +1001,21 @@ class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Rsha",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
@@ -994,7 +1039,7 @@ class StructuresSystemGroupIT {
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Rsha", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
@@ -1033,19 +1078,21 @@ class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Rshc",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
@@ -1069,7 +1116,7 @@ class StructuresSystemGroupIT {
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Rshc", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
@@ -1108,19 +1155,21 @@ class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEMGROUP, null,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEMGROUP, null,
                     "name", "Rshr",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
@@ -1144,7 +1193,7 @@ class StructuresSystemGroupIT {
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Rshr", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
@@ -1201,40 +1250,40 @@ class StructuresSystemGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "P1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "C1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "R1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "A1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1302,109 +1351,114 @@ class StructuresSystemGroupIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "P9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "C9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "R9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "A9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1457,280 +1511,282 @@ class StructuresSystemGroupIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AA1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AA2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AA3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AA4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AA5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AB1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AB2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AB3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AB4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AB5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AC1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AC2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AC3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AC4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AC5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AD1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AD2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AD3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AD4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AD5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AE1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AE2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AE3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AE4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AE5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AF2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AF3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AF4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AF5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AG1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AG2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AG3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AG4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "AG5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 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 539eb4f4..89608208 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
@@ -32,7 +32,11 @@ import org.junit.jupiter.api.Test;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -72,6 +76,14 @@ class StructuresSystemIT {
     //     StructureElement extends StructureElementCommand
     //     -->
     //     for such operations that send Command objects to backend, it is also possible to send StructureElement
+    //
+    //     StructureElementCommand
+    //	       create  -       type, parent, name, mnemonic, description, comment
+    //	       update  - uuid, type, parent, name, mnemonic, description, comment
+    //	       delete  - uuid, type,                                      comment
+    //	       approve - uuid, type,                                      comment
+    //	       cancel  - uuid, type,                                      comment
+    //	       reject  - uuid, type,                                      comment
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -84,14 +96,14 @@ class StructuresSystemIT {
     public static void initAll() {
         // init system group
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "Sg",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupUuid = approvedStructureElement.getUuid();
     }
 
@@ -126,7 +138,7 @@ class StructuresSystemIT {
         //     comment
 
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
             ITUtilStructureElement.assertExists(Type.SYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM, "CC", Boolean.FALSE);
@@ -142,34 +154,34 @@ class StructuresSystemIT {
             ITUtilStructureElement.assertValidate("[{asdf]", StructureCommand.CREATE, HttpURLConnection.HTTP_BAD_REQUEST);
             ITUtilStructureElement.assertCreate("[{asdf]", HttpURLConnection.HTTP_BAD_REQUEST);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setParent(systemGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertCreate(structureElement, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
+            structureElementCommandCreate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertCreate(structureElementCommandCreate, ITUtil.HTTP_UNPROCESSABLE_ENTITY);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (IOException e) {
             fail();
         } catch (Exception e) {
@@ -189,100 +201,100 @@ class StructuresSystemIT {
         // note
         //     mnemonic
         try {
-            StructureElementCommand structureElement = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = new StructureElementCommandCreate();
 
-            structureElement.setType(Type.SYSTEM);
-            structureElement.setParent(systemGroupUuid);
-            structureElement.setName("name");
-            structureElement.setDescription("description");
-            structureElement.setComment("comment");
+            structureElementCommandCreate.setType(Type.SYSTEM);
+            structureElementCommandCreate.setParent(systemGroupUuid);
+            structureElementCommandCreate.setName("name");
+            structureElementCommandCreate.setDescription("description");
+            structureElementCommandCreate.setComment("comment");
 
             // mnemonic rules
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("C");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("C");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Ccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Cccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Cccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Ccccccccc");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Ccccccccc");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
             // mnemonic rules (2)
 
-            structureElement.setMnemonic(" ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(" ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sys");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("000");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("000");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("Sys0");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("Sys0");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(":");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic(":");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys:");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys:");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Sys:   ");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("Sys:   ");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("1");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("123456");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("1234567");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("1234567");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("12345678");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandCreate.setMnemonic("12345678");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
 
-            structureElement.setMnemonic("123456789");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandCreate.setMnemonic("123456789");
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -303,38 +315,42 @@ class StructuresSystemIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEM, systemGroupUuid,
                     "name", "Ca",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Ca", Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Ca", Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -355,46 +371,51 @@ class StructuresSystemIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEM, systemGroupUuid,
                     "name", "Cc",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cc", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cc", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -415,46 +436,51 @@ class StructuresSystemIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
+            StructureElementCommand structureElementCommand = null;
             StructureElement createdStructureElement = null;
 
-            structureElement = new StructureElementCommand(
+            structureElementCommand = new StructureElementCommand(
                     null, Type.SYSTEM, systemGroupUuid,
                     "name", "Cr",
                     "description", "comment");
+            structureElementCommandCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommand);
+            structureElementCommandConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommand);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
-            UUID uuid = structureElement.getUuid();
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
+            UUID uuid = structureElementCommandConfirm.getUuid();
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+            structureElementCommandConfirm.setUuid(uuid);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             ITUtilStructureElement.assertExists         (Type.SYSTEM, "Cr", Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.SYSTEM, "Cr", Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CREATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
+//            structureElement.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandCreate, StructureCommand.CREATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -488,66 +514,68 @@ class StructuresSystemIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Cu",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate update
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.DEVICEGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setType(Type.DEVICEGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setParent(systemGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setName("name");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setMnemonic(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cu");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setMnemonic("Cu");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setDescription("description");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
 
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandUpdate.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
 
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandUpdate.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -570,33 +598,37 @@ class StructuresSystemIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Ua",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update approve check");
+            structureElementCommandUpdate.setComment("comment update approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -621,33 +653,37 @@ class StructuresSystemIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Uc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update cancel check");
+            structureElementCommandUpdate.setComment("comment update cancel check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -672,33 +708,37 @@ class StructuresSystemIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandUpdate structureElementCommandUpdate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Ur",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElement);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update reject check");
+            structureElementCommandUpdate.setComment("comment update reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // update
-            ITUtilStructureElement.assertUpdate(structureElement);
+            ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.UPDATE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -728,66 +768,41 @@ class StructuresSystemIT {
         try {
             UUID uuid = null;
 
-            StructureElementCommand structureElement  = new StructureElementCommand();
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Cd",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
             uuid = approvedStructureElement.getUuid();
 
             // validate delete
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setType(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.DEVICEGROUP);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setParent(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setName(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setName("name");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
 
-            structureElement.setMnemonic(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
 
-            structureElement.setMnemonic("Cd");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setDescription("description");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-
-            structureElement.setComment(null);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-
-            structureElement.setComment("comment");
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
+            structureElementCommandConfirm.setComment("comment");
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -810,33 +825,35 @@ class StructuresSystemIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Da",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete approve check");
+            structureElementCommandConfirm.setComment("comment delete approve check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.TRUE);
 
             // approve
-            ITUtilStructureElement.assertApprove(structureElement);
+            ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.APPROVE, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -861,33 +878,35 @@ class StructuresSystemIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Dc",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment update delete check");
+            structureElementCommandConfirm.setComment("comment update delete check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.TRUE);
 
             // cancel
-            ITUtilStructureElement.assertCancel(structureElement);
+            ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.CANCEL, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.CANCEL, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -912,33 +931,35 @@ class StructuresSystemIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand structureElement = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement approvedStructureElement = null;
 
             // create, approve
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Dr",
                     "description", "comment");
-            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-            structureElement.setUuid(approvedStructureElement.getUuid());
+            approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElement);
+//            structureElement.setUuid(approvedStructureElement.getUuid());
 
-            structureElement.setComment("comment delete reject check");
+            structureElementCommandConfirm.setComment("comment delete reject check");
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
 
             // delete
-            ITUtilStructureElement.assertDelete(structureElement);
+            ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.TRUE);
 
             // reject
-            ITUtilStructureElement.assertReject(structureElement);
+            ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.DELETE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElement, StructureCommand.REJECT, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandConfirm, StructureCommand.REJECT, Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -956,19 +977,21 @@ class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement approvedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Rsha",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize();
@@ -997,7 +1020,7 @@ class StructuresSystemIT {
             ITUtilStructureElement.assertExists(Type.SYSTEM, "Sg-Rsha", Boolean.FALSE);
 
             // approve
-            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElement);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize());
@@ -1041,19 +1064,21 @@ class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement   = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement   = null;
             StructureElement cancelledStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Rshc",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize();
@@ -1082,7 +1107,7 @@ class StructuresSystemIT {
             ITUtilStructureElement.assertExists(Type.SYSTEM, "Sg-Rshc", Boolean.FALSE);
 
             // cancel
-            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElement);
+            cancelledStructureElement = ITUtilStructureElement.assertCancel(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize());
@@ -1126,19 +1151,21 @@ class StructuresSystemIT {
         //     create (and more) to read (with content)
 
         try {
-            StructureElementCommand structureElement  = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
+            StructureElementCommandConfirm structureElementCommandConfirm = null;
             StructureElement createdStructureElement  = null;
             StructureElement rejectedStructureElement = null;
             int length = 0;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SYSTEM, systemGroupUuid,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SYSTEM, systemGroupUuid,
                     "name", "Rshr",
                     "description", "comment");
 
             // create
-            createdStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-            structureElement.setUuid(createdStructureElement.getUuid());
+            createdStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+            structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElement);
+//            structureElement.setUuid(createdStructureElement.getUuid());
 
             // read (1)
             length = ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize();
@@ -1167,7 +1194,7 @@ class StructuresSystemIT {
             ITUtilStructureElement.assertExists(Type.SYSTEM, "Sg-Rshr", Boolean.FALSE);
 
             // reject
-            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElement);
+            rejectedStructureElement = ITUtilStructureElement.assertReject(structureElementCommandConfirm);
 
             // read (2)
             assertEquals(length, ITUtilStructureElement.assertRead("/SYSTEM", 1, -1).getListSize());
@@ -1229,40 +1256,40 @@ class StructuresSystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "P1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "C1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
         uuid2 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "R1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
         uuid3 = responseStructureElement.getUuid();
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "A1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid4 = responseStructureElement.getUuid();
 
         try {
@@ -1334,109 +1361,114 @@ class StructuresSystemIT {
         //       ( include if latest )
         //         include if latest not exists             (considered present + future)
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
         StructureElement responseStructureElement = null;
         UUID uuid, uuid2, uuid3, uuid4 = null;
 
         // a number of entries for which the last entry has status PENDING
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "P9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdate(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdate(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status CANCELLED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "C9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid2 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status REJECTED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "R9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid3 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
 
         // a number of entries for which the last entry has status APPROVED
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "A9",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
         uuid4 = responseStructureElement.getUuid();
 
-        responseStructureElement.setComment("comment 2");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 3");
-        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(responseStructureElement);
-        responseStructureElement.setComment("comment 4");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 5");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 6");
-        responseStructureElement = ITUtilStructureElement.assertUpdateReject(responseStructureElement);
-        responseStructureElement.setComment("comment 7");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 8");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
-        responseStructureElement.setComment("comment 9");
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(responseStructureElement);
+        structureElementCommandUpdate.setComment("comment 2");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 3");
+        responseStructureElement = ITUtilStructureElement.assertUpdateCancel(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 4");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 5");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 6");
+        responseStructureElement = ITUtilStructureElement.assertUpdateReject(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 7");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 8");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate.setComment("comment 9");
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
 
         try {
             // from first structure element
@@ -1493,280 +1525,282 @@ class StructuresSystemIT {
         //     create (and more) to read (with content)
         //     querying for Status.APPROVED means latest approved
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElement responseStructureElement = null;
         UUID uuid = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AA1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         uuid = responseStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AA2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AA3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AA4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AA5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AB1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AB2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AB3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AB4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AB5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateCancel(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AC1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AC2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AC3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AC4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AC5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateReject(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AD1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AD2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AD3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AD4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AD5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreate(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
         String description2 = "some other description";
         String comment2 = "some other comment";
         String description3 = "more description";
         String comment3 = "more comment";
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AE1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AE2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AE3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AE4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AE5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description2);
-        structureElement.setComment(comment2);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        structureElement.setDescription(description3);
-        structureElement.setComment(comment3);
-        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElement);
-
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description2);
+        structureElementCommandUpdate.setComment(comment2);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responseStructureElement);
+        structureElementCommandUpdate.setDescription(description3);
+        structureElementCommandUpdate.setComment(comment3);
+        responseStructureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteReject(structureElementCommandConfirm);
+
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AF1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AF2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AF3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AF4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AF5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AG1",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AG2",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AG3",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AG4",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "AG5",
                 "description", "comment");
-        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
-        structureElement = responseStructureElement;
-        responseStructureElement = ITUtilStructureElement.assertDelete(structureElement);
+        responseStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responseStructureElement);
+        responseStructureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
         // 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 076b3927..c8357ffd 100644
--- a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
@@ -32,6 +32,7 @@ import org.openepics.names.rest.beans.element.NameElementCommand;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
 import org.openepics.names.util.NameCommand;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
@@ -140,399 +141,399 @@ class NamesInstanceIndexIT {
     public static void initAll() {
         // init system group, system, subsystem, discipline, device group, device type
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "Accelerator", "Acc",
                 "The ESS Linear Accelerator", "approved by alfio");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupAcc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupAcc,
                 "Radio Frequency Quadrupole", "RFQ",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemRFQ = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "01 Phase Reference Line", "010PRL",
                 "empty", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystem010PRL = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "RFQ-010", "010",
                 "empty", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystem010 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "Power switch board 01", "N1U1",
                 "Electrical power cabinets", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystemN1U1 = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Cryogenics", "Cryo",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Electromagnetic Resonators", "EMR",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Heating, Cooling and Air Conditioning", "HVAC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "General Process Control", "Proc",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Software Controllers", "SC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Vacuum", "Vac",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Water Cooling", "WtrC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Beam Magnets and Deflectors", "BMD",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineBMD = approvedStructureElement.getUuid();
 
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineCryo,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineEMR,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineHVAC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineProc,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineSC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineVac,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineWtrC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineBMD,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupBMD = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupCryo,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Cryo_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupCryo,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Cryo_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupCryo,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Cryo_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupCryo,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Cryo_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_EMR_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_EMR_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_EMR_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupEMR,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_EMR_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupHVAC,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_HVAC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupHVAC,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_HVAC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupHVAC,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_HVAC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupHVAC,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_HVAC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupProc,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Proc_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupProc,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Proc_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupProc,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Proc_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupProc,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Proc_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupSC,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_SC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupSC,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_SC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupSC,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_SC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupSC,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_SC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupVac,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Vac_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupVac,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Vac_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupVac,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Vac_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupVac,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Vac_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupWtrC,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_WtrC_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupWtrC,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_WtrC_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupWtrC,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_WtrC_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupWtrC,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_WtrC_TT = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupBMD,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_BMD_FS = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupBMD,
                 "Input Output Controller", "IOC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_BMD_IOC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupBMD,
                 "RF Antenna", "RFA",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_BMD_RFA = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupBMD,
                 "Temperature Transmitter", "TT",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_BMD_TT = approvedStructureElement.getUuid();
     }
 
diff --git a/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java b/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java
index ecc895d7..d872bd1a 100644
--- a/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/NamesMultipleIT.java
@@ -32,12 +32,14 @@ import org.openepics.names.docker.ITUtilNameElement;
 import org.openepics.names.docker.ITUtilStructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.NameElement;
+import org.openepics.names.rest.beans.element.NameElementCommand;
 import org.openepics.names.rest.beans.element.NameElementCommandConfirm;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.NameElementCommandUpdate;
 import org.openepics.names.rest.beans.element.StructureElement;
-import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
 import org.openepics.names.util.NameCommand;
+import org.openepics.names.util.NameElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -82,49 +84,49 @@ class NamesMultipleIT {
     public static void initAll() {
         // init system group, system, subsystem, discipline, device group, device type
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "Accelerator", "Acc",
                 "The ESS Linear Accelerator", "approved by alfio");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupAcc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupAcc,
                 "Radio Frequency Quadrupole", "RFQ",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemRFQ = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemRFQ,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemRFQ,
                 "01 Phase Reference Line", "010PRL",
                 "empty", "Approved by Daniel Piso");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystem010PRL = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Cryogenics", "Cryo",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineCryo,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupCryo,
                 "Flow Switch", "FS",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceType_Cryo_FS = approvedStructureElement.getUuid();
     }
 
@@ -147,42 +149,24 @@ class NamesMultipleIT {
             NameElementCommandCreate[] nameElementCommandsCreate = null;
             NameElementCommandUpdate[] nameElementCommandsUpdate = null;
             NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+            NameElementCommand[] nameElementCommands = null;
             UUID uuid = null;
             String value = null;
 
-            nameElementCommandsCreate = new NameElementCommandCreate[] {
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "011", "checkCreate 1.3.011", "checkCreate 1.3.011"),
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "012", "checkCreate 1.3.012", "checkCreate 1.3.012"),
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "013", "checkCreate 1.3.013", "checkCreate 1.3.013"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "011", "checkCreate 2.3.011", "checkCreate 2.3.011"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "012", "checkCreate 2.3.012", "checkCreate 2.3.012"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "013", "checkCreate 2.3.013", "checkCreate 2.3.013"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "011", "checkCreate 3.3.011", "checkCreate 3.3.011"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "012", "checkCreate 3.3.012", "checkCreate 3.3.012"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "013", "checkCreate 3.3.013", "checkCreate 3.3.013")
-            };
-            nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "011", "checkCreate 1.3.011", "checkCreate 1.3.011"),
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "012", "checkCreate 1.3.012", "checkCreate 1.3.012"),
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "013", "checkCreate 1.3.013", "checkCreate 1.3.013"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "011", "checkCreate 2.3.011", "checkCreate 2.3.011"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "012", "checkCreate 2.3.012", "checkCreate 2.3.012"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "013", "checkCreate 2.3.013", "checkCreate 2.3.013"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "011", "checkCreate 3.3.011", "checkCreate 3.3.011"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "012", "checkCreate 3.3.012", "checkCreate 3.3.012"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "013", "checkCreate 3.3.013", "checkCreate 3.3.013")
-            };
-            nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                    new NameElementCommandConfirm(null, "checkCreate 1.3.011"),
-                    new NameElementCommandConfirm(null, "checkCreate 1.3.012"),
-                    new NameElementCommandConfirm(null, "checkCreate 1.3.013"),
-                    new NameElementCommandConfirm(null, "checkCreate 2.3.011"),
-                    new NameElementCommandConfirm(null, "checkCreate 2.3.012"),
-                    new NameElementCommandConfirm(null, "checkCreate 2.3.013"),
-                    new NameElementCommandConfirm(null, "checkCreate 3.3.011"),
-                    new NameElementCommandConfirm(null, "checkCreate 3.3.012"),
-                    new NameElementCommandConfirm(null, "checkCreate 3.3.013")
+            nameElementCommands = new NameElementCommand[] {
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "011", "checkCreate 1.3.011", "checkCreate 1.3.011"),
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "012", "checkCreate 1.3.012", "checkCreate 1.3.012"),
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "013", "checkCreate 1.3.013", "checkCreate 1.3.013"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "011", "checkCreate 2.3.011", "checkCreate 2.3.011"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "012", "checkCreate 2.3.012", "checkCreate 2.3.012"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "013", "checkCreate 2.3.013", "checkCreate 2.3.013"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "011", "checkCreate 3.3.011", "checkCreate 3.3.011"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "012", "checkCreate 3.3.012", "checkCreate 3.3.012"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "013", "checkCreate 3.3.013", "checkCreate 3.3.013")
             };
+            nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+            nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+            nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
             ITUtilNameElement.assertExists("RFQ:Cryo-FS-011", Boolean.FALSE);
             ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-011", Boolean.FALSE);
@@ -244,45 +228,25 @@ class NamesMultipleIT {
             NameElementCommandCreate[] nameElementCommandsCreate = null;
             NameElementCommandUpdate[] nameElementCommandsUpdate = null;
             NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+            NameElementCommand[] nameElementCommands = null;
             NameElement[] createdNameElements = null;
             int nbrNames = -1;
 
-            nameElementCommandsCreate = new NameElementCommandCreate[] {
-                    new NameElementCommandCreate(systemGroupAcc,  null,               null,  "create 1.0.0",   "create 1.0.0"),
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "021", "create 1.3.021", "create 1.3.021"),
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "022", "create 1.3.022", "create 1.3.022"),
-                    new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "023", "create 1.3.023", "create 1.3.023"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "021", "create 2.3.021", "create 2.3.021"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "022", "create 2.3.022", "create 2.3.022"),
-                    new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "023", "create 2.3.023", "create 2.3.023"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "021", "create 3.3.021", "create 3.3.021"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "022", "create 3.3.022", "create 3.3.022"),
-                    new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "023", "create 3.3.023", "create 3.3.023")
-            };
-            nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                    new NameElementCommandUpdate(null, systemGroupAcc,  null,               null,  "create 1.0.0",   "create 1.0.0"),
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "021", "create 1.3.021", "create 1.3.021"),
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "022", "create 1.3.022", "create 1.3.022"),
-                    new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "023", "create 1.3.023", "create 1.3.023"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "021", "create 2.3.021", "create 2.3.021"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "022", "create 2.3.022", "create 2.3.022"),
-                    new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "023", "create 2.3.023", "create 2.3.023"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "021", "create 3.3.021", "create 3.3.021"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "022", "create 3.3.022", "create 3.3.022"),
-                    new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "023", "create 3.3.023", "create 3.3.023")
-            };
-            nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                    new NameElementCommandConfirm(null, "create 1.0.0"),
-                    new NameElementCommandConfirm(null, "create 1.3.021"),
-                    new NameElementCommandConfirm(null, "create 1.3.022"),
-                    new NameElementCommandConfirm(null, "create 1.3.023"),
-                    new NameElementCommandConfirm(null, "create 2.3.021"),
-                    new NameElementCommandConfirm(null, "create 2.3.022"),
-                    new NameElementCommandConfirm(null, "create 2.3.023"),
-                    new NameElementCommandConfirm(null, "create 3.3.021"),
-                    new NameElementCommandConfirm(null, "create 3.3.022"),
-                    new NameElementCommandConfirm(null, "create 3.3.023")
+            nameElementCommands = new NameElementCommand[] {
+                    new NameElementCommand(null, systemGroupAcc,  null,               null,  "create 1.0.0",   "create 1.0.0"),
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "021", "create 1.3.021", "create 1.3.021"),
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "022", "create 1.3.022", "create 1.3.022"),
+                    new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "023", "create 1.3.023", "create 1.3.023"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "021", "create 2.3.021", "create 2.3.021"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "022", "create 2.3.022", "create 2.3.022"),
+                    new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "023", "create 2.3.023", "create 2.3.023"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "021", "create 3.3.021", "create 3.3.021"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "022", "create 3.3.022", "create 3.3.022"),
+                    new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "023", "create 3.3.023", "create 3.3.023")
             };
+            nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+            nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+            nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
             ITUtilNameElement.assertValidate(nameElementCommandsCreate, NameCommand.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertValidate(nameElementCommandsUpdate, NameCommand.UPDATE, Boolean.FALSE);
@@ -315,9 +279,9 @@ class NamesMultipleIT {
 
             assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-            nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(createdNameElements);
-            nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElements);
-            nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElements);
+            nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(createdNameElements);
+            nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElements);
+            nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElements);
 
             ITUtilNameElement.assertExists("Acc:Cryo-FS-023", Boolean.TRUE);
             ITUtilNameElement.assertIsLegacy("Acc:Cryo-FS-023", Boolean.FALSE);
@@ -351,44 +315,26 @@ class NamesMultipleIT {
         NameElementCommandCreate[] nameElementCommandsCreate = null;
         NameElementCommandUpdate[] nameElementCommandsUpdate = null;
         NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+        NameElementCommand[] nameElementCommands = null;
         NameElement[] createdNameElements = null;
         int nbrNames = -1;
         UUID uuid = null;
         String value = null;
 
-        nameElementCommandsCreate = new NameElementCommandCreate[] {
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "031", "checkUpdate 1.3.031", "checkUpdate 1.3.031"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "032", "checkUpdate 1.3.032", "checkUpdate 1.3.032"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "033", "checkUpdate 1.3.033", "checkUpdate 1.3.033"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "031", "checkUpdate 2.3.031", "checkUpdate 2.3.031"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "032", "checkUpdate 2.3.032", "checkUpdate 2.3.032"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "033", "checkUpdate 2.3.033", "checkUpdate 2.3.033"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "031", "checkUpdate 3.3.031", "checkUpdate 3.3.031"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "032", "checkUpdate 3.3.032", "checkUpdate 3.3.032"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "033", "checkUpdate 3.3.033", "checkUpdate 3.3.033")
-        };
-        nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "031", "checkUpdate 1.3.031", "checkUpdate 1.3.031"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "032", "checkUpdate 1.3.032", "checkUpdate 1.3.032"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "033", "checkUpdate 1.3.033", "checkUpdate 1.3.033"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "031", "checkUpdate 2.3.031", "checkUpdate 2.3.031"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "032", "checkUpdate 2.3.032", "checkUpdate 2.3.032"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "033", "checkUpdate 2.3.033", "checkUpdate 2.3.033"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "031", "checkUpdate 3.3.031", "checkUpdate 3.3.031"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "032", "checkUpdate 3.3.032", "checkUpdate 3.3.032"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "033", "checkUpdate 3.3.033", "checkUpdate 3.3.033")
-        };
-        nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                new NameElementCommandConfirm(null, "checkUpdate 1.3.031"),
-                new NameElementCommandConfirm(null, "checkUpdate 1.3.032"),
-                new NameElementCommandConfirm(null, "checkUpdate 1.3.033"),
-                new NameElementCommandConfirm(null, "checkUpdate 2.3.031"),
-                new NameElementCommandConfirm(null, "checkUpdate 2.3.032"),
-                new NameElementCommandConfirm(null, "checkUpdate 2.3.033"),
-                new NameElementCommandConfirm(null, "checkUpdate 3.3.031"),
-                new NameElementCommandConfirm(null, "checkUpdate 3.3.032"),
-                new NameElementCommandConfirm(null, "checkUpdate 3.3.033")
+        nameElementCommands = new NameElementCommand[] {
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "031", "checkUpdate 1.3.031", "checkUpdate 1.3.031"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "032", "checkUpdate 1.3.032", "checkUpdate 1.3.032"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "033", "checkUpdate 1.3.033", "checkUpdate 1.3.033"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "031", "checkUpdate 2.3.031", "checkUpdate 2.3.031"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "032", "checkUpdate 2.3.032", "checkUpdate 2.3.032"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "033", "checkUpdate 2.3.033", "checkUpdate 2.3.033"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "031", "checkUpdate 3.3.031", "checkUpdate 3.3.031"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "032", "checkUpdate 3.3.032", "checkUpdate 3.3.032"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "033", "checkUpdate 3.3.033", "checkUpdate 3.3.033")
         };
+        nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+        nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+        nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-031", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-031", Boolean.FALSE);
@@ -405,9 +351,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(createdNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(createdNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElements);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-031", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-031", Boolean.FALSE);
@@ -473,46 +419,26 @@ class NamesMultipleIT {
         NameElementCommandCreate[] nameElementCommandsCreate = null;
         NameElementCommandUpdate[] nameElementCommandsUpdate = null;
         NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+        NameElementCommand[] nameElementCommands = null;
         NameElement[] createdNameElements = null;
         NameElement[] updatedNameElements = null;
         int nbrNames = -1;
 
-        nameElementCommandsCreate = new NameElementCommandCreate[] {
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "041", "update 1.3.041", "update 1.3.041"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "042", "update 1.3.042", "update 1.3.042"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "043", "update 1.3.043", "update 1.3.043"),
-                new NameElementCommandCreate(systemRFQ,       null,               null,  "update 2.0.0",   "update 2.0.0"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "041", "update 2.3.041", "update 2.3.041"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "042", "update 2.3.042", "update 2.3.042"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "043", "update 2.3.043", "update 2.3.043"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "041", "update 3.3.041", "update 3.3.041"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "042", "update 3.3.042", "update 3.3.042"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "043", "update 3.3.043", "update 3.3.043")
-        };
-        nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "041", "update 1.3.041", "update 1.3.041"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "042", "update 1.3.042", "update 1.3.042"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "043", "update 1.3.043", "update 1.3.043"),
-                new NameElementCommandUpdate(null, systemRFQ,       null,               null,  "update 2.0.0",   "update 2.0.0"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "041", "update 2.3.041", "update 2.3.041"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "042", "update 2.3.042", "update 2.3.042"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "043", "update 2.3.043", "update 2.3.043"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "041", "update 3.3.041", "update 3.3.041"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "042", "update 3.3.042", "update 3.3.042"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "043", "update 3.3.043", "update 3.3.043")
-        };
-        nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                new NameElementCommandConfirm(null, "update 1.3.041"),
-                new NameElementCommandConfirm(null, "update 1.3.042"),
-                new NameElementCommandConfirm(null, "update 1.3.043"),
-                new NameElementCommandConfirm(null, "update 2.0.0"),
-                new NameElementCommandConfirm(null, "update 2.3.041"),
-                new NameElementCommandConfirm(null, "update 2.3.042"),
-                new NameElementCommandConfirm(null, "update 2.3.043"),
-                new NameElementCommandConfirm(null, "update 3.3.041"),
-                new NameElementCommandConfirm(null, "update 3.3.042"),
-                new NameElementCommandConfirm(null, "update 3.3.043")
+        nameElementCommands = new NameElementCommand[] {
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "041", "update 1.3.041", "update 1.3.041"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "042", "update 1.3.042", "update 1.3.042"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "043", "update 1.3.043", "update 1.3.043"),
+                new NameElementCommand(null, systemRFQ,       null,               null,  "update 2.0.0",   "update 2.0.0"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "041", "update 2.3.041", "update 2.3.041"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "042", "update 2.3.042", "update 2.3.042"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "043", "update 2.3.043", "update 2.3.043"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "041", "update 3.3.041", "update 3.3.041"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "042", "update 3.3.042", "update 3.3.042"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "043", "update 3.3.043", "update 3.3.043")
         };
+        nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+        nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+        nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
         ITUtilNameElement.assertValidate(nameElementCommandsCreate, NameCommand.CREATE, Boolean.FALSE);
         ITUtilNameElement.assertValidate(nameElementCommandsUpdate, NameCommand.UPDATE, Boolean.FALSE);
@@ -567,9 +493,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(createdNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(createdNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElements);
 
         ITUtilNameElement.assertExists("RFQ", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("RFQ", Boolean.FALSE);
@@ -601,9 +527,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(updatedNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(updatedNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(updatedNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(updatedNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(updatedNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(updatedNameElements);
 
         ITUtilNameElement.assertExists("RFQ", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("RFQ", Boolean.FALSE);
@@ -636,44 +562,26 @@ class NamesMultipleIT {
         NameElementCommandCreate[] nameElementCommandsCreate = null;
         NameElementCommandUpdate[] nameElementCommandsUpdate = null;
         NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+        NameElementCommand[] nameElementCommands = null;
         NameElement[] createdNameElements = null;
         int nbrNames = -1;
         UUID uuid = null;
         String value = null;
 
-        nameElementCommandsCreate = new NameElementCommandCreate[] {
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "051", "checkDelete 1.3.051", "checkDelete 1.3.051"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "052", "checkDelete 1.3.052", "checkDelete 1.3.052"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "053", "checkDelete 1.3.053", "checkDelete 1.3.053"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "051", "checkDelete 2.3.051", "checkDelete 2.3.051"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "052", "checkDelete 2.3.052", "checkDelete 2.3.052"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "053", "checkDelete 2.3.053", "checkDelete 2.3.053"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "051", "checkDelete 3.3.051", "checkDelete 3.3.051"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "052", "checkDelete 3.3.052", "checkDelete 3.3.052"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "053", "checkDelete 3.3.053", "checkDelete 3.3.053")
-        };
-        nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "051", "checkDelete 1.3.051", "checkDelete 1.3.051"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "052", "checkDelete 1.3.052", "checkDelete 1.3.052"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "053", "checkDelete 1.3.053", "checkDelete 1.3.053"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "051", "checkDelete 2.3.051", "checkDelete 2.3.051"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "052", "checkDelete 2.3.052", "checkDelete 2.3.052"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "053", "checkDelete 2.3.053", "checkDelete 2.3.053"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "051", "checkDelete 3.3.051", "checkDelete 3.3.051"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "052", "checkDelete 3.3.052", "checkDelete 3.3.052"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "053", "checkDelete 3.3.053", "checkDelete 3.3.053")
-        };
-        nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                new NameElementCommandConfirm(null, "checkDelete 1.3.051"),
-                new NameElementCommandConfirm(null, "checkDelete 1.3.052"),
-                new NameElementCommandConfirm(null, "checkDelete 1.3.053"),
-                new NameElementCommandConfirm(null, "checkDelete 2.3.051"),
-                new NameElementCommandConfirm(null, "checkDelete 2.3.052"),
-                new NameElementCommandConfirm(null, "checkDelete 2.3.053"),
-                new NameElementCommandConfirm(null, "checkDelete 3.3.051"),
-                new NameElementCommandConfirm(null, "checkDelete 3.3.052"),
-                new NameElementCommandConfirm(null, "checkDelete 3.3.053")
+        nameElementCommands = new NameElementCommand[] {
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "051", "checkDelete 1.3.051", "checkDelete 1.3.051"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "052", "checkDelete 1.3.052", "checkDelete 1.3.052"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "053", "checkDelete 1.3.053", "checkDelete 1.3.053"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "051", "checkDelete 2.3.051", "checkDelete 2.3.051"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "052", "checkDelete 2.3.052", "checkDelete 2.3.052"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "053", "checkDelete 2.3.053", "checkDelete 2.3.053"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "051", "checkDelete 3.3.051", "checkDelete 3.3.051"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "052", "checkDelete 3.3.052", "checkDelete 3.3.052"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "053", "checkDelete 3.3.053", "checkDelete 3.3.053")
         };
+        nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+        nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+        nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-051", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-051", Boolean.FALSE);
@@ -690,9 +598,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(createdNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(createdNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElements);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-051", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-051", Boolean.FALSE);
@@ -742,46 +650,26 @@ class NamesMultipleIT {
         NameElementCommandCreate[] nameElementCommandsCreate = null;
         NameElementCommandUpdate[] nameElementCommandsUpdate = null;
         NameElementCommandConfirm[] nameElementCommandsConfirm = null;
+        NameElementCommand[] nameElementCommands = null;
         NameElement[] createdNameElements = null;
         NameElement[] deletedNameElements = null;
         int nbrNames = -1;
 
-        nameElementCommandsCreate = new NameElementCommandCreate[] {
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "061", "delete 1.3.061", "delete 1.3.061"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "062", "delete 1.3.062", "delete 1.3.062"),
-                new NameElementCommandCreate(systemGroupAcc,  deviceType_Cryo_FS, "063", "delete 1.3.063", "delete 1.3.063"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "061", "delete 2.3.061", "delete 2.3.061"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "062", "delete 2.3.062", "delete 2.3.062"),
-                new NameElementCommandCreate(systemRFQ,       deviceType_Cryo_FS, "063", "delete 2.3.063", "delete 2.3.063"),
-                new NameElementCommandCreate(subsystem010PRL, null,               null,  "delete 3.0.0",   "delete 3.0.0"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "061", "delete 3.3.061", "delete 3.3.061"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "062", "delete 3.3.062", "delete 3.3.062"),
-                new NameElementCommandCreate(subsystem010PRL, deviceType_Cryo_FS, "063", "delete 3.3.063", "delete 3.3.063")
-        };
-        nameElementCommandsUpdate = new NameElementCommandUpdate[] {
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "061", "delete 1.3.061", "delete 1.3.061"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "062", "delete 1.3.062", "delete 1.3.062"),
-                new NameElementCommandUpdate(null, systemGroupAcc,  deviceType_Cryo_FS, "063", "delete 1.3.063", "delete 1.3.063"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "061", "delete 2.3.061", "delete 2.3.061"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "062", "delete 2.3.062", "delete 2.3.062"),
-                new NameElementCommandUpdate(null, systemRFQ,       deviceType_Cryo_FS, "063", "delete 2.3.063", "delete 2.3.063"),
-                new NameElementCommandUpdate(null, subsystem010PRL, null,               null,  "delete 3.0.0",   "delete 3.0.0"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "061", "delete 3.3.061", "delete 3.3.061"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "062", "delete 3.3.062", "delete 3.3.062"),
-                new NameElementCommandUpdate(null, subsystem010PRL, deviceType_Cryo_FS, "063", "delete 3.3.063", "delete 3.3.063")
-        };
-        nameElementCommandsConfirm = new NameElementCommandConfirm[] {
-                new NameElementCommandConfirm(null, "delete 1.3.061"),
-                new NameElementCommandConfirm(null, "delete 1.3.062"),
-                new NameElementCommandConfirm(null, "delete 1.3.063"),
-                new NameElementCommandConfirm(null, "delete 2.3.061"),
-                new NameElementCommandConfirm(null, "delete 2.3.062"),
-                new NameElementCommandConfirm(null, "delete 2.3.063"),
-                new NameElementCommandConfirm(null, "delete 3.0.0"),
-                new NameElementCommandConfirm(null, "delete 3.3.061"),
-                new NameElementCommandConfirm(null, "delete 3.3.062"),
-                new NameElementCommandConfirm(null, "delete 3.3.063")
+        nameElementCommands = new NameElementCommand[] {
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "061", "delete 1.3.061", "delete 1.3.061"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "062", "delete 1.3.062", "delete 1.3.062"),
+                new NameElementCommand(null, systemGroupAcc,  deviceType_Cryo_FS, "063", "delete 1.3.063", "delete 1.3.063"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "061", "delete 2.3.061", "delete 2.3.061"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "062", "delete 2.3.062", "delete 2.3.062"),
+                new NameElementCommand(null, systemRFQ,       deviceType_Cryo_FS, "063", "delete 2.3.063", "delete 2.3.063"),
+                new NameElementCommand(null, subsystem010PRL, null,               null,  "delete 3.0.0",   "delete 3.0.0"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "061", "delete 3.3.061", "delete 3.3.061"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "062", "delete 3.3.062", "delete 3.3.062"),
+                new NameElementCommand(null, subsystem010PRL, deviceType_Cryo_FS, "063", "delete 3.3.063", "delete 3.3.063")
         };
+        nameElementCommandsCreate = NameElementUtil.convertCommand2CommandCreate(nameElementCommands);
+        nameElementCommandsUpdate = NameElementUtil.convertCommand2CommandUpdate(nameElementCommands);
+        nameElementCommandsConfirm = NameElementUtil.convertCommand2CommandConfirm(nameElementCommands);
 
         ITUtilNameElement.assertValidate(nameElementCommandsCreate, NameCommand.CREATE, Boolean.FALSE);
         ITUtilNameElement.assertValidate(nameElementCommandsUpdate, NameCommand.UPDATE, Boolean.FALSE);
@@ -836,9 +724,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames + 9, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(createdNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(createdNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(createdNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(createdNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(createdNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(createdNameElements);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-061", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-061", Boolean.FALSE);
@@ -853,9 +741,9 @@ class NamesMultipleIT {
 
         assertEquals(nbrNames, ITUtilNameElement.assertRead("?deleted=false").getListSize());
 
-        nameElementCommandsCreate = ITUtilNameElement.convert2NameElementCommandCreate(deletedNameElements);
-        nameElementCommandsUpdate = ITUtilNameElement.convert2NameElementCommandUpdate(deletedNameElements);
-        nameElementCommandsConfirm = ITUtilNameElement.convert2NameElementCommandConfirm(deletedNameElements);
+        nameElementCommandsCreate = NameElementUtil.convertElement2CommandCreate(deletedNameElements);
+        nameElementCommandsUpdate = NameElementUtil.convertElement2CommandUpdate(deletedNameElements);
+        nameElementCommandsConfirm = NameElementUtil.convertElement2CommandConfirm(deletedNameElements);
 
         ITUtilNameElement.assertExists("RFQ:Cryo-FS-061", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("RFQ:Cryo-FS-061", Boolean.FALSE);
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresCUDDeleteIT.java b/src/test/java/org/openepics/names/docker/complex/StructuresCUDDeleteIT.java
index 2c700833..e0d9be16 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresCUDDeleteIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresCUDDeleteIT.java
@@ -30,7 +30,10 @@ import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -117,7 +120,7 @@ class StructuresCUDDeleteIT {
         // test create structure and ensure name is as expected
 
         NameElementCommandCreate nameElementCommandCreate = null;
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
         String name = "name";
@@ -125,8 +128,8 @@ class StructuresCUDDeleteIT {
         String comment = "comment";
 
         // sg0
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, null, description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, null, description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1);
         ITUtilStructureElement.assertRead("/SYSTEM", 0);
@@ -137,49 +140,49 @@ class StructuresCUDDeleteIT {
         //     system group
         //         sg0 - no mnemonic
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg1 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys11", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys11", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys11 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys12", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys12", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys12 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys13", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys13", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys13 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub132 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 2);
         ITUtilStructureElement.assertRead("/SYSTEM", 3);
@@ -205,50 +208,50 @@ class StructuresCUDDeleteIT {
         //         Sys12-Sub121, Sys12-Sub122, Sys12-Sub123
         //         Sys13-Sub131, Sys13-Sub132, Sys13-Sub133
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys21", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys21", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys22", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys22", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys23", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys23", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -274,56 +277,56 @@ class StructuresCUDDeleteIT {
         //         Sys22-Sub221, Sys22-Sub222, Sys22-Sub223
         //         Sys23-Sub231, Sys23-Sub232, Sys23-Sub233
 
-        structureElement = new StructureElementCommand(null, Type.DISCIPLINE, null, name, "Di2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, name, "Di2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         di2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt211 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt212 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt213 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt221 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt222 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt223 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -440,14 +443,17 @@ class StructuresCUDDeleteIT {
         //     test update system structure and ensure name is as expected
 
         ResponsePageStructureElements responsePage = null;
-        StructureElementCommand structureElement = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
+        StructureElement structureElement = null;
 
         ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys13-Sub132", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys13-Sub132", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/SUBSYSTEM?uuid=" + sub132, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys13-Sub132", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys13-Sub132", Boolean.TRUE);
@@ -464,8 +470,10 @@ class StructuresCUDDeleteIT {
         ITUtilNameElement.assertExists("Sys12-Sub123", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEM?uuid=" + sys12, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.SYSTEM, "Sys12", Boolean.FALSE);
         ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys12-Sub121", Boolean.FALSE);
@@ -494,8 +502,10 @@ class StructuresCUDDeleteIT {
         ITUtilNameElement.assertExists("Sg1", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEMGROUP?uuid=" + sg1, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Sg1", Boolean.FALSE);
         ITUtilStructureElement.assertExists(Type.SYSTEM, "Sys11", Boolean.FALSE);
@@ -519,14 +529,17 @@ class StructuresCUDDeleteIT {
         //     test update system structure and ensure name is as expected
 
         ResponsePageStructureElements responsePage = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElementCommand structureElement = null;
 
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt232", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICETYPE?uuid=" + dt232, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt232", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
@@ -541,8 +554,10 @@ class StructuresCUDDeleteIT {
         ITUtilNameElement.assertExists("Sys22:Di2-Dt223-223", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICEGROUP?uuid=" + dg22, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt221", Boolean.FALSE);
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt222", Boolean.FALSE);
@@ -573,8 +588,10 @@ class StructuresCUDDeleteIT {
         ITUtilNameElement.assertExists("Sys23-Sub233:Di2-Dt233-233", Boolean.TRUE);
 
         responsePage = ITUtilStructureElement.assertRead("/DISCIPLINE?uuid=" + di2, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElement);
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDeleteApprove(structureElementCommandConfirm);
 
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt211", Boolean.FALSE);
         ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di2-Dt212", Boolean.FALSE);
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresCUDNamesLegacyIT.java b/src/test/java/org/openepics/names/docker/complex/StructuresCUDNamesLegacyIT.java
index c5dd01ad..07b58b6d 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresCUDNamesLegacyIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresCUDNamesLegacyIT.java
@@ -30,7 +30,10 @@ import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -117,7 +120,7 @@ class StructuresCUDNamesLegacyIT {
         // init system group, system, subsystem, discipline, device group, device type
 
         NameElementCommandCreate nameElementCommandCreate = null;
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
         String name = "name";
@@ -125,8 +128,8 @@ class StructuresCUDNamesLegacyIT {
         String comment = "comment";
 
         // sg0
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, null, description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, null, description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1);
         ITUtilStructureElement.assertRead("/SYSTEM", 0);
@@ -137,49 +140,49 @@ class StructuresCUDNamesLegacyIT {
         //     system group
         //         sg0 - no mnemonic
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg1 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys11", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys11", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys11 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys12", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys12", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys12 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys13", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys13", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys13 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub132 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 2);
         ITUtilStructureElement.assertRead("/SYSTEM", 3);
@@ -204,50 +207,50 @@ class StructuresCUDNamesLegacyIT {
         //         Sys12-Sub121, Sys12-Sub122, Sys12-Sub123
         //         Sys13-Sub131, Sys13-Sub132, Sys13-Sub133
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys21", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys21", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys22", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys22", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys23", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys23", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -273,56 +276,56 @@ class StructuresCUDNamesLegacyIT {
         //         Sys22-Sub221, Sys22-Sub222, Sys22-Sub223
         //         Sys23-Sub231, Sys23-Sub232, Sys23-Sub233
 
-        structureElement = new StructureElementCommand(null, Type.DISCIPLINE, null, name, "Di2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, name, "Di2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         di2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt211 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt212 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt213 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt221 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt222 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt223 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -414,7 +417,8 @@ class StructuresCUDNamesLegacyIT {
         //     delete system group
 
         ResponsePageStructureElements responsePage = null;
-        StructureElementCommand structureElement = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
+        StructureElement structureElement = null;
 
         ITUtilNameElement.assertExists("Sg1", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys11", Boolean.TRUE);
@@ -445,10 +449,30 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
 
         responsePage = ITUtilStructureElement.assertRead("/SUBSYSTEM?uuid=" + sub132, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
+        ITUtilNameElement.assertIsLegacy("Sg1", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub111", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub112", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub113", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub121", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub122", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub123", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
+
+//        approve
+//        islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg1", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys11", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys12", Boolean.FALSE);
@@ -462,12 +486,33 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
+//        -----------------
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEM?uuid=" + sys12, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
+        ITUtilNameElement.assertIsLegacy("Sg1", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub111", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub112", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub113", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub121", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub122", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub123", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
+
+//      approve
+//      islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg1", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys11", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys12", Boolean.TRUE);
@@ -481,12 +526,33 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
+//		---------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEMGROUP?uuid=" + sg1, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
 
+        ITUtilNameElement.assertIsLegacy("Sg1", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys13", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub111", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub112", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys11-Sub113", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub121", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub122", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys12-Sub123", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.FALSE);
+
+//      approve
+//      islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg1", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys11", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys12", Boolean.TRUE);
@@ -500,6 +566,7 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys13-Sub131", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub132", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys13-Sub133", Boolean.TRUE);
+//		---------------
     }
 
     @Test
@@ -521,6 +588,7 @@ class StructuresCUDNamesLegacyIT {
         //     delete discipline
 
         ResponsePageStructureElements responsePage = null;
+        StructureElementCommandConfirm structureElementCommandConfirm = null;
         StructureElementCommand structureElement = null;
 
         ITUtilNameElement.assertExists("Sg2:Di2-Dt211-211", Boolean.TRUE);
@@ -544,10 +612,26 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICETYPE?uuid=" + dt232, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
+
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt221-221", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt222-222", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt223-223", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
 
+//      approve
+//      islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.FALSE);
@@ -557,12 +641,29 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
+//		---------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICEGROUP?uuid=" + dg22, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
+
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt221-221", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt222-222", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt223-223", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
 
+//      approve
+//      islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.FALSE);
@@ -572,12 +673,29 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.FALSE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
+//		---------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/DISCIPLINE?uuid=" + di2, 1);
-        structureElement = responsePage.getList().get(0);
 
-        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+//        structureElement = responsePage.getList().get(0);
+//
+//        ITUtilStructureElement.assertApprove(ITUtilStructureElement.assertDelete(structureElement));
+        structureElementCommandConfirm = StructureElementUtil.convertElement2CommandConfirm(responsePage.getList().get(0));
+        structureElement = ITUtilStructureElement.assertDelete(structureElementCommandConfirm);
+
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt221-221", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt222-222", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys22:Di2-Dt223-223", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.FALSE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
+        ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.FALSE);
 
+//      approve
+//      islegacy
+        structureElement = ITUtilStructureElement.assertApprove(structureElementCommandConfirm);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt211-211", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt212-212", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sg2:Di2-Dt213-213", Boolean.TRUE);
@@ -587,6 +705,7 @@ class StructuresCUDNamesLegacyIT {
         ITUtilNameElement.assertIsLegacy("Sys23-Sub231:Di2-Dt231-231", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
         ITUtilNameElement.assertIsLegacy("Sys23-Sub233:Di2-Dt233-233", Boolean.TRUE);
+//		---------------------------------
     }
 
 }
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresCUDUpdateIT.java b/src/test/java/org/openepics/names/docker/complex/StructuresCUDUpdateIT.java
index f7331866..5850866d 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresCUDUpdateIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresCUDUpdateIT.java
@@ -29,8 +29,10 @@ import org.openepics.names.docker.ITUtilStructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.NameElementCommandCreate;
 import org.openepics.names.rest.beans.element.StructureElement;
-import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.rest.beans.response.ResponsePageStructureElements;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -117,7 +119,7 @@ class StructuresCUDUpdateIT {
         // test create structure and ensure name is as expected
 
         NameElementCommandCreate nameElementCommandCreate = null;
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
         String name = "name";
@@ -125,8 +127,8 @@ class StructuresCUDUpdateIT {
         String comment = "comment";
 
         // sg0
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, null, description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, null, description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 1);
         ITUtilStructureElement.assertRead("/SYSTEM", 0);
@@ -137,49 +139,49 @@ class StructuresCUDUpdateIT {
         //     system group
         //         sg0 - no mnemonic
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg1", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg1 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys11", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys11", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys11 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys12", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys12", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys12 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg1, name, "Sys13", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg1, name, "Sys13", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys13 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub111", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub112", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys11, name, "Sub113", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub121", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub122", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys12, name, "Sub123", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub131", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub132", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub132 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys13, name, "Sub133", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 2);
         ITUtilStructureElement.assertRead("/SYSTEM", 3);
@@ -205,50 +207,50 @@ class StructuresCUDUpdateIT {
         //         Sys12-Sub121, Sys12-Sub122, Sys12-Sub123
         //         Sys13-Sub131, Sys13-Sub132, Sys13-Sub133
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEMGROUP, null, name, "Sg2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sg2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys21", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys21", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys22", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys22", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SYSTEM, sg2, name, "Sys23", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SYSTEM, sg2, name, "Sys23", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sys23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys21, name, "Sub213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys22, name, "Sub223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.SUBSYSTEM, sys23, name, "Sub233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         sub233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -274,56 +276,56 @@ class StructuresCUDUpdateIT {
         //         Sys22-Sub221, Sys22-Sub222, Sys22-Sub223
         //         Sys23-Sub231, Sys23-Sub232, Sys23-Sub233
 
-        structureElement = new StructureElementCommand(null, Type.DISCIPLINE, null, name, "Di2", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DISCIPLINE, null, name, "Di2", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         di2 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg21 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg22 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICEGROUP, di2, name, "", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICEGROUP, di2, name, "", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dg23 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt211", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt211 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt212", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt212 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg21, name, "Dt213", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt213 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt221", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt221 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt222", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt222 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg22, name, "Dt223", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt223 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt231", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt231 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt232", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt232 = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(null, Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        structureElementCommandCreate = new StructureElementCommandCreate(Type.DEVICETYPE, dg23, name, "Dt233", description, comment);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         dt233 = approvedStructureElement.getUuid();
 
         ITUtilStructureElement.assertRead("/SYSTEMGROUP", 3);
@@ -440,18 +442,26 @@ class StructuresCUDUpdateIT {
         //     test update system structure and ensure name is as expected
 
         ResponsePageStructureElements responsePage = null;
-        StructureElementCommand structureElement = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElement structureElement = null;
 
         responsePage = ITUtilStructureElement.assertRead("/SUBSYSTEM?uuid=" + sub132, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys13-Sub132", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys13-Su132",  Boolean.FALSE);
 
-        structureElement.setMnemonic("Su132");
-        ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement.setMnemonic("Su132");
+//        ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate.setMnemonic("Su132");
+        ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys13-Sub132", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys13-Su132",  Boolean.TRUE);
@@ -459,9 +469,13 @@ class StructuresCUDUpdateIT {
         // ----------------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEM?uuid=" + sys12, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys12", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys12-Sub121", Boolean.TRUE);
@@ -472,8 +486,11 @@ class StructuresCUDUpdateIT {
         ITUtilNameElement.assertExists("Sy12-Sub122",  Boolean.FALSE);
         ITUtilNameElement.assertExists("Sy12-Sub123",  Boolean.FALSE);
 
-        structureElement.setMnemonic("Sy12");
-        ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement.setMnemonic("Sy12");
+//        ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate.setMnemonic("Sy12");
+        ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys12", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys12-Sub121", Boolean.FALSE);
@@ -487,15 +504,22 @@ class StructuresCUDUpdateIT {
         // ----------------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/SYSTEMGROUP?uuid=" + sg1, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sg1", Boolean.TRUE);
         ITUtilNameElement.assertExists("S1",  Boolean.FALSE);
 
-        structureElement.setMnemonic("S1");
-        ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement.setMnemonic("S1");
+//        ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate.setMnemonic("S1");
+        ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sg1", Boolean.FALSE);
         ITUtilNameElement.assertExists("S1",  Boolean.TRUE);
@@ -507,18 +531,26 @@ class StructuresCUDUpdateIT {
         //     test update system structure and ensure name is as expected
 
         ResponsePageStructureElements responsePage = null;
-        StructureElementCommand structureElement = null;
+        StructureElementCommandUpdate structureElementCommandUpdate = null;
+        StructureElement structureElement = null;
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICETYPE?uuid=" + dt232, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-Dt232-232", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-D232-232",  Boolean.FALSE);
 
-        structureElement.setMnemonic("D232");
-        ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement.setMnemonic("D232");
+//        ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate.setMnemonic("D232");
+        ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-Dt232-232", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys23-Sub232:Di2-D232-232",  Boolean.TRUE);
@@ -526,9 +558,13 @@ class StructuresCUDUpdateIT {
         // ----------------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/DEVICEGROUP?uuid=" + dg22, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sg2:Di2-Dt211-211", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sg2:Di2-Dt212-212", Boolean.TRUE);
@@ -553,9 +589,13 @@ class StructuresCUDUpdateIT {
         // ----------------------------------------
 
         responsePage = ITUtilStructureElement.assertRead("/DISCIPLINE?uuid=" + di2, 1);
-        structureElement = responsePage.getList().get(0);
-        structureElement.setDescription("asdf");
-        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement = responsePage.getList().get(0);
+//        structureElement.setDescription("asdf");
+//        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(responsePage.getList().get(0));
+        structureElementCommandUpdate.setDescription("asdf");
+        structureElement = ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sg2:Di2-Dt211-211", Boolean.TRUE);
         ITUtilNameElement.assertExists("Sg2:Di2-Dt212-212", Boolean.TRUE);
@@ -577,8 +617,11 @@ class StructuresCUDUpdateIT {
         ITUtilNameElement.assertExists("Sys23-Sub232:D2-D232-232",  Boolean.FALSE);
         ITUtilNameElement.assertExists("Sys23-Sub233:D2-Dt233-233", Boolean.FALSE);
 
-        structureElement.setMnemonic("D2");
-        ITUtilStructureElement.assertUpdateApprove(structureElement);
+//        structureElement.setMnemonic("D2");
+//        ITUtilStructureElement.assertUpdateApprove(structureElement);
+        structureElementCommandUpdate.setMnemonic("D2");
+        ITUtilStructureElement.assertUpdateApprove(structureElementCommandUpdate);
+        structureElementCommandUpdate = StructureElementUtil.convertElement2CommandUpdate(structureElement);
 
         ITUtilNameElement.assertExists("Sg2:Di2-Dt211-211", Boolean.FALSE);
         ITUtilNameElement.assertExists("Sg2:Di2-Dt212-212", Boolean.FALSE);
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java b/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java
index 18cc94e8..1cb46a3c 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresLevel3IT.java
@@ -30,7 +30,8 @@ import org.openepics.names.docker.ITUtil;
 import org.openepics.names.docker.ITUtilStructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
-import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -131,137 +132,137 @@ class StructuresLevel3IT {
     public static void initAll() {
         // init system group, system, discipline, device group
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "Accelerator", "Acc",
                 "The ESS Linear Accelerator", "approved by alfio");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupAcc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupAcc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupAcc,
                 "Radio Frequency Quadrupole", "RFQ",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemRFQ = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Cryogenics", "Cryo",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Electromagnetic Resonators", "EMR",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Heating, Cooling and Air Conditioning", "HVAC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "General Process Control", "Proc",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Software Controllers", "SC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Vacuum", "Vac",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Water Cooling", "WtrC",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "Beam Magnets and Deflectors", "BMD",
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineBMD = approvedStructureElement.getUuid();
 
         // ----------------------------------------------------------------------------------------------------
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineCryo,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineCryo,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupCryo = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineEMR,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineEMR,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupEMR = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineHVAC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineHVAC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupHVAC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineProc,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineProc,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupProc = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineSC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineSC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupSC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineVac,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineVac,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupVac = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineWtrC,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineWtrC,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupWtrC = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineBMD,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineBMD,
                 "empty", null,
                 "empty", "empty");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupBMD = approvedStructureElement.getUuid();
     }
 
@@ -282,38 +283,37 @@ class StructuresLevel3IT {
         //     all create first, all approve separately after all create
 
         try {
-            StructureElementCommand structureElement        = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
             StructureElement createdStructureElement_010PRL = null;
             StructureElement createdStructureElement_010    = null;
             StructureElement createdStructureElement_N1U1   = null;
             StructureElement approvedStructureElement       = null;
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemRFQ,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemRFQ,
                     "01 Phase Reference Line", "010PRL",
                     "empty", "Approved by Daniel Piso");
-            createdStructureElement_010PRL = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_010PRL = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemRFQ,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemRFQ,
                     "RFQ-010", "010",
                     "empty", "Approved by Daniel Piso");
-            createdStructureElement_010 = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_010 = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.SUBSYSTEM, systemRFQ,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.SUBSYSTEM, systemRFQ,
                     "Power switch board 01", "N1U1",
                     "Electrical power cabinets", "Approved by Daniel Piso");
-            createdStructureElement_N1U1 = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_N1U1 = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_010PRL);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_010PRL));
             subsystem010PRL = approvedStructureElement.getUuid();
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_010);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_010));
             subsystem010 = approvedStructureElement.getUuid();
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_N1U1);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_N1U1));
             subsystemN1U1 = approvedStructureElement.getUuid();
 
             assertNotNull(subsystem010PRL);
@@ -341,7 +341,7 @@ class StructuresLevel3IT {
         //     all create first, all approve separately after all create
 
         try {
-            StructureElementCommand structureElement          = null;
+            StructureElementCommandCreate structureElementCommandCreate = null;
 
             StructureElement createdStructureElement_Cryo_FS  = null;
             StructureElement createdStructureElement_Cryo_IOC = null;
@@ -387,221 +387,221 @@ class StructuresLevel3IT {
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupCryo,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupCryo,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_Cryo_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Cryo_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupCryo,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupCryo,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_Cryo_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Cryo_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupCryo,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupCryo,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_Cryo_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Cryo_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupCryo,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupCryo,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_Cryo_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Cryo_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupEMR,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupEMR,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_EMR_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_EMR_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupEMR,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupEMR,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_EMR_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_EMR_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupEMR,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupEMR,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_EMR_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_EMR_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupEMR,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupEMR,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_EMR_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_EMR_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupHVAC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupHVAC,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_HVAC_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_HVAC_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupHVAC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupHVAC,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_HVAC_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_HVAC_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupHVAC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupHVAC,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_HVAC_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_HVAC_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupHVAC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupHVAC,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_HVAC_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_HVAC_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupProc,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupProc,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_Proc_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Proc_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupProc,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupProc,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_Proc_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Proc_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupProc,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupProc,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_Proc_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Proc_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupProc,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupProc,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_Proc_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Proc_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupSC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupSC,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_SC_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_SC_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupSC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupSC,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_SC_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_SC_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupSC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupSC,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_SC_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_SC_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupSC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupSC,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_SC_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_SC_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupVac,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupVac,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_Vac_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Vac_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupVac,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupVac,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_Vac_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Vac_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupVac,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupVac,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_Vac_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Vac_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupVac,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupVac,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_Vac_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_Vac_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupWtrC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupWtrC,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_WtrC_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_WtrC_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupWtrC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupWtrC,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_WtrC_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_WtrC_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupWtrC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupWtrC,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_WtrC_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_WtrC_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupWtrC,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupWtrC,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_WtrC_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_WtrC_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupBMD,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupBMD,
                     "Flow Switch", "FS",
                     "empty", "empty");
-            createdStructureElement_BMD_FS = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_BMD_FS = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupBMD,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupBMD,
                     "Input Output Controller", "IOC",
                     "empty", "empty");
-            createdStructureElement_BMD_IOC = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_BMD_IOC = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupBMD,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupBMD,
                     "RF Antenna", "RFA",
                     "empty", "empty");
-            createdStructureElement_BMD_RFA = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_BMD_RFA = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
-            structureElement = new StructureElementCommand(
-                    null, Type.DEVICETYPE, deviceGroupBMD,
+            structureElementCommandCreate = new StructureElementCommandCreate(
+                    Type.DEVICETYPE, deviceGroupBMD,
                     "Temperature Transmitter", "TT",
                     "empty", "empty");
-            createdStructureElement_BMD_TT = ITUtilStructureElement.assertCreate(structureElement);
+            createdStructureElement_BMD_TT = ITUtilStructureElement.assertCreate(structureElementCommandCreate);
 
             // ----------------------------------------------------------------------------------------------------
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Cryo_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Cryo_FS));
             deviceType_Cryo_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Cryo_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Cryo_IOC));
             deviceType_Cryo_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Cryo_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Cryo_RFA));
             deviceType_Cryo_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Cryo_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Cryo_TT));
             deviceType_Cryo_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_Cryo_FS);
@@ -609,13 +609,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_Cryo_RFA);
             assertNotNull(deviceType_Cryo_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_EMR_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_EMR_FS));
             deviceType_EMR_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_EMR_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_EMR_IOC));
             deviceType_EMR_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_EMR_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_EMR_RFA));
             deviceType_EMR_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_EMR_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_EMR_TT));
             deviceType_EMR_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_EMR_FS);
@@ -623,13 +623,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_EMR_RFA);
             assertNotNull(deviceType_EMR_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_HVAC_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_HVAC_FS));
             deviceType_HVAC_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_HVAC_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_HVAC_IOC));
             deviceType_HVAC_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_HVAC_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_HVAC_RFA));
             deviceType_HVAC_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_HVAC_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_HVAC_TT));
             deviceType_HVAC_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_HVAC_FS);
@@ -637,13 +637,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_HVAC_RFA);
             assertNotNull(deviceType_HVAC_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Proc_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Proc_FS));
             deviceType_Proc_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Proc_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Proc_IOC));
             deviceType_Proc_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Proc_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Proc_RFA));
             deviceType_Proc_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Proc_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Proc_TT));
             deviceType_Proc_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_Proc_FS);
@@ -651,13 +651,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_Proc_RFA);
             assertNotNull(deviceType_Proc_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_SC_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_SC_FS));
             deviceType_SC_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_SC_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_SC_IOC));
             deviceType_SC_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_SC_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_SC_RFA));
             deviceType_SC_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_SC_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_SC_TT));
             deviceType_SC_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_SC_FS);
@@ -665,13 +665,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_SC_RFA);
             assertNotNull(deviceType_SC_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Vac_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Vac_FS));
             deviceType_Vac_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Vac_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Vac_IOC));
             deviceType_Vac_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Vac_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Vac_RFA));
             deviceType_Vac_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_Vac_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_Vac_TT));
             deviceType_Vac_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_Vac_FS);
@@ -679,13 +679,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_Vac_RFA);
             assertNotNull(deviceType_Vac_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_WtrC_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_WtrC_FS));
             deviceType_WtrC_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_WtrC_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_WtrC_IOC));
             deviceType_WtrC_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_WtrC_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_WtrC_RFA));
             deviceType_WtrC_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_WtrC_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_WtrC_TT));
             deviceType_WtrC_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_WtrC_FS);
@@ -693,13 +693,13 @@ class StructuresLevel3IT {
             assertNotNull(deviceType_WtrC_RFA);
             assertNotNull(deviceType_WtrC_TT);
 
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_BMD_FS);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_BMD_FS));
             deviceType_BMD_FS = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_BMD_IOC);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_BMD_IOC));
             deviceType_BMD_IOC = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_BMD_RFA);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_BMD_RFA));
             deviceType_BMD_RFA = approvedStructureElement.getUuid();
-            approvedStructureElement = ITUtilStructureElement.assertApprove(createdStructureElement_BMD_TT);
+            approvedStructureElement = ITUtilStructureElement.assertApprove(StructureElementUtil.convertElement2CommandConfirm(createdStructureElement_BMD_TT));
             deviceType_BMD_TT = approvedStructureElement.getUuid();
 
             assertNotNull(deviceType_BMD_FS);
diff --git a/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java b/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java
index 110b6059..3c02785e 100644
--- a/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/StructuresMultipleIT.java
@@ -32,7 +32,11 @@ import org.openepics.names.docker.ITUtilStructureElement;
 import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
 import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 import org.openepics.names.util.StructureCommand;
+import org.openepics.names.util.StructureElementUtil;
 import org.testcontainers.containers.DockerComposeContainer;
 import org.testcontainers.containers.wait.strategy.Wait;
 import org.testcontainers.junit.jupiter.Container;
@@ -70,49 +74,49 @@ class StructuresMultipleIT {
     public static void initAll() {
         // init system group, system, discipline, device group
 
-        StructureElementCommand structureElement  = null;
+        StructureElementCommandCreate structureElementCommandCreate = null;
         StructureElement approvedStructureElement = null;
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEMGROUP, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEMGROUP, null,
                 "name", "Sg",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemGroupUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SYSTEM, systemGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SYSTEM, systemGroupUuid,
                 "name", "Sys",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         systemUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.SUBSYSTEM, systemUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.SUBSYSTEM, systemUuid,
                 "name", "Sub",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         subsystemUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DISCIPLINE, null,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DISCIPLINE, null,
                 "name", "Di",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         disciplineUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICEGROUP, disciplineUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICEGROUP, disciplineUuid,
                 "name", null,
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceGroupUuid = approvedStructureElement.getUuid();
 
-        structureElement = new StructureElementCommand(
-                null, Type.DEVICETYPE, deviceGroupUuid,
+        structureElementCommandCreate = new StructureElementCommandCreate(
+                Type.DEVICETYPE, deviceGroupUuid,
                 "name", "Dt",
                 "description", "comment");
-        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElement);
+        approvedStructureElement = ITUtilStructureElement.assertCreateApprove(structureElementCommandCreate);
         deviceTypeUuid = approvedStructureElement.getUuid();
     }
 
@@ -137,8 +141,10 @@ class StructuresMultipleIT {
         //     comment
 
         try {
-            StructureElementCommand[] structureElements = null;
-            UUID uuid = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             String value = null;
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "Sg",    Boolean.TRUE);
@@ -171,7 +177,7 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-Dt",    Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE, "Di-DtChc", Boolean.TRUE);
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgChc",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysChc", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubChc", "description", "comment"),
@@ -179,54 +185,58 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtChc",  "description", "comment")
             };
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
-
-            uuid = subsystemUuid;
-            structureElements[1].setUuid(uuid);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setUuid(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
-
-            structureElements[1].setType(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
-
-            structureElements[1].setParent(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setParent(systemUuid);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setParent(subsystemUuid);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
-
-            value = structureElements[1].getName();
-            structureElements[1].setName(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setName(value);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
-
-            value = structureElements[1].getDescription();
-            structureElements[1].setDescription(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setDescription(value);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
-
-            value = structureElements[1].getComment();
-            structureElements[1].setComment(null);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.FALSE);
-            structureElements[1].setComment(value);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE, Boolean.TRUE);
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
+
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
+
+//            uuid = subsystemUuid;
+//            structureElementCommandsCreate[1].setUuid(uuid);
+//            ITUtilStructureElement.assertValidate(structureElementCommands, StructureCommand.CREATE, Boolean.FALSE);
+//            structureElementCommandsCreate[1].setUuid(null);
+//            ITUtilStructureElement.assertValidate(structureElementCommands, StructureCommand.CREATE, Boolean.TRUE);
+
+            structureElementCommandsCreate[1].setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE);
+
+            structureElementCommandsCreate[1].setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setParent(systemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setParent(subsystemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setParent(systemGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE);
+
+            value = structureElementCommandsCreate[1].getName();
+            structureElementCommandsCreate[1].setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setName(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE);
+
+            value = structureElementCommandsCreate[1].getDescription();
+            structureElementCommandsCreate[1].setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setDescription(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE);
+
+            value = structureElementCommandsCreate[1].getComment();
+            structureElementCommandsCreate[1].setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.FALSE);
+            structureElementCommandsCreate[1].setComment(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate, StructureCommand.CREATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -249,11 +259,14 @@ class StructuresMultipleIT {
         //     create in order to approve
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] createdStructureElements = null;
             StructureElement[] approvedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgCa",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysCa", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubCa", "description", "comment"),
@@ -261,6 +274,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtCa",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCa",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCa",     Boolean.FALSE);
@@ -275,17 +291,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCa",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            createdStructureElements = ITUtilStructureElement.assertCreate(structureElements);
+            createdStructureElements = ITUtilStructureElement.assertCreate(structureElementCommandsCreate);
             assertNotNull(createdStructureElements);
             assertEquals(6, createdStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(createdStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCa",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCa",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCa", Boolean.FALSE);
@@ -299,17 +319,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCa",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            approvedStructureElements = ITUtilStructureElement.assertApprove(createdStructureElements);
+            approvedStructureElements = ITUtilStructureElement.assertApprove(structureElementCommandsConfirm);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCa", Boolean.TRUE);
@@ -323,12 +347,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -351,11 +375,14 @@ class StructuresMultipleIT {
         //     create in order to cancel
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] createdStructureElements = null;
             StructureElement[] cancelledStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgCc",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysCc", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubCc", "description", "comment"),
@@ -363,6 +390,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtCc",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCc",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCc",     Boolean.FALSE);
@@ -377,17 +407,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCc",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            createdStructureElements = ITUtilStructureElement.assertCreate(structureElements);
+            createdStructureElements = ITUtilStructureElement.assertCreate(structureElementCommandsCreate);
             assertNotNull(createdStructureElements);
             assertEquals(6, createdStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(createdStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCc",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCc",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCc", Boolean.FALSE);
@@ -401,17 +435,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCc",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            cancelledStructureElements = ITUtilStructureElement.assertCancel(createdStructureElements);
+            cancelledStructureElements = ITUtilStructureElement.assertCancel(structureElementCommandsConfirm);
             assertNotNull(cancelledStructureElements);
             assertEquals(6, cancelledStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(cancelledStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(cancelledStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(cancelledStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCc",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCc",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCc", Boolean.FALSE);
@@ -424,13 +462,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE,  "DiCc",      Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCc",   Boolean.TRUE);
-
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+/////
+//            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -451,11 +495,14 @@ class StructuresMultipleIT {
         //     create in order to reject
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] createdStructureElements = null;
             StructureElement[] rejectedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgCr",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysCr", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubCr", "description", "comment"),
@@ -463,6 +510,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtCr",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCr",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCr",     Boolean.FALSE);
@@ -477,17 +527,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCr",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            createdStructureElements = ITUtilStructureElement.assertCreate(structureElements);
+            createdStructureElements = ITUtilStructureElement.assertCreate(structureElementCommandsCreate);
             assertNotNull(createdStructureElements);
             assertEquals(6, createdStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(createdStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(createdStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(createdStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCr",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCr",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCr", Boolean.FALSE);
@@ -501,17 +555,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCr",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(createdStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            rejectedStructureElements = ITUtilStructureElement.assertReject(createdStructureElements);
+            rejectedStructureElements = ITUtilStructureElement.assertReject(structureElementCommandsConfirm);
             assertNotNull(rejectedStructureElements);
             assertEquals(6, rejectedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(rejectedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(rejectedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(rejectedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCr",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCr",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCr", Boolean.FALSE);
@@ -524,13 +582,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE,  "DiCr",      Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCr",   Boolean.TRUE);
-
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+/////
+//            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -564,12 +628,15 @@ class StructuresMultipleIT {
         //     comment
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             UUID uuid = null;
             String value = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgCu",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysCu", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubCu", "description", "comment"),
@@ -577,6 +644,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtCu",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCu",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCu",     Boolean.FALSE);
@@ -591,17 +661,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCu",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCu",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCu",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCu",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCu", Boolean.TRUE);
@@ -615,54 +689,54 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCu",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCu",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
             uuid = approvedStructureElements[1].getUuid();
-            approvedStructureElements[1].setUuid(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setUuid(uuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
-
-            approvedStructureElements[1].setType(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
-
-            approvedStructureElements[1].setParent(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setParent(systemUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setParent(subsystemUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getName();
-            approvedStructureElements[1].setName(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setName(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getDescription();
-            approvedStructureElements[1].setDescription(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setDescription(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getComment();
-            approvedStructureElements[1].setComment(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.FALSE);
-            approvedStructureElements[1].setComment(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE, Boolean.TRUE);
+            structureElementCommandsUpdate[1].setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+
+            structureElementCommandsUpdate[1].setType(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setType(Type.SYSTEMGROUP);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setType(Type.SUBSYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setType(Type.SYSTEM);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+
+            structureElementCommandsUpdate[1].setParent(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setParent(systemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setParent(subsystemUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setParent(systemGroupUuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+
+            value = structureElementCommandsUpdate[1].getName();
+            structureElementCommandsUpdate[1].setName(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setName(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+
+            value = structureElementCommandsUpdate[1].getDescription();
+            structureElementCommandsUpdate[1].setDescription(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setDescription(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
+
+            value = structureElementCommandsUpdate[1].getComment();
+            structureElementCommandsUpdate[1].setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.FALSE);
+            structureElementCommandsUpdate[1].setComment(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate, StructureCommand.UPDATE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -687,11 +761,14 @@ class StructuresMultipleIT {
         //     create, approve in order to update, approve
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] updatedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgUa",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysUa", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubUa", "description", "comment"),
@@ -699,6 +776,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtUa",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUa",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUa",     Boolean.FALSE);
@@ -713,17 +793,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUa",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUa", Boolean.TRUE);
@@ -737,19 +821,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements[0].setDescription("0");
-            approvedStructureElements[1].setDescription("1");
-            approvedStructureElements[2].setDescription("2");
-            approvedStructureElements[3].setDescription("3");
-            approvedStructureElements[4].setDescription("4");
-            approvedStructureElements[5].setDescription("5");
+            structureElementCommandsUpdate[0].setDescription("0");
+            structureElementCommandsUpdate[1].setDescription("1");
+            structureElementCommandsUpdate[2].setDescription("2");
+            structureElementCommandsUpdate[3].setDescription("3");
+            structureElementCommandsUpdate[4].setDescription("4");
+            structureElementCommandsUpdate[5].setDescription("5");
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUa",     Boolean.TRUE);
@@ -764,17 +848,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            updatedStructureElements = ITUtilStructureElement.assertUpdate(approvedStructureElements);
+            updatedStructureElements = ITUtilStructureElement.assertUpdate(structureElementCommandsUpdate);
             assertNotNull(updatedStructureElements);
             assertEquals(6, updatedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(updatedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(updatedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(updatedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUa", Boolean.TRUE);
@@ -788,17 +876,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            approvedStructureElements = ITUtilStructureElement.assertApprove(updatedStructureElements);
+            approvedStructureElements = ITUtilStructureElement.assertApprove(structureElementCommandsConfirm);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUa", Boolean.TRUE);
@@ -812,12 +904,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -844,12 +936,15 @@ class StructuresMultipleIT {
         //     create, approve in order to update, cancel
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] updatedStructureElements = null;
             StructureElement[] cancelledStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgUc",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysUc", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubUc", "description", "comment"),
@@ -857,6 +952,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtUc",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUc",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUc",     Boolean.FALSE);
@@ -871,17 +969,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUc",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUc", Boolean.TRUE);
@@ -895,19 +997,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements[0].setDescription("0");
-            approvedStructureElements[1].setDescription("1");
-            approvedStructureElements[2].setDescription("2");
-            approvedStructureElements[3].setDescription("3");
-            approvedStructureElements[4].setDescription("4");
-            approvedStructureElements[5].setDescription("5");
+            structureElementCommandsUpdate[0].setDescription("0");
+            structureElementCommandsUpdate[1].setDescription("1");
+            structureElementCommandsUpdate[2].setDescription("2");
+            structureElementCommandsUpdate[3].setDescription("3");
+            structureElementCommandsUpdate[4].setDescription("4");
+            structureElementCommandsUpdate[5].setDescription("5");
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUc",     Boolean.TRUE);
@@ -922,17 +1024,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            updatedStructureElements = ITUtilStructureElement.assertUpdate(approvedStructureElements);
+            updatedStructureElements = ITUtilStructureElement.assertUpdate(structureElementCommandsUpdate);
             assertNotNull(updatedStructureElements);
             assertEquals(6, updatedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(updatedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(updatedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(updatedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUc", Boolean.TRUE);
@@ -946,17 +1052,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            cancelledStructureElements = ITUtilStructureElement.assertCancel(updatedStructureElements);
+            cancelledStructureElements = ITUtilStructureElement.assertCancel(structureElementCommandsConfirm);
             assertNotNull(cancelledStructureElements);
             assertEquals(6, cancelledStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(cancelledStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(cancelledStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(cancelledStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUc", Boolean.TRUE);
@@ -970,12 +1080,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1002,12 +1112,15 @@ class StructuresMultipleIT {
         //     create, approve in order to update, reject
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] updatedStructureElements = null;
             StructureElement[] rejectedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgUr",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysUr", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubUr", "description", "comment"),
@@ -1015,6 +1128,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtUr",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUr",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUr",     Boolean.FALSE);
@@ -1029,17 +1145,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUr",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUr", Boolean.TRUE);
@@ -1053,19 +1173,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements[0].setDescription("0");
-            approvedStructureElements[1].setDescription("1");
-            approvedStructureElements[2].setDescription("2");
-            approvedStructureElements[3].setDescription("3");
-            approvedStructureElements[4].setDescription("4");
-            approvedStructureElements[5].setDescription("5");
+            structureElementCommandsUpdate[0].setDescription("0");
+            structureElementCommandsUpdate[1].setDescription("1");
+            structureElementCommandsUpdate[2].setDescription("2");
+            structureElementCommandsUpdate[3].setDescription("3");
+            structureElementCommandsUpdate[4].setDescription("4");
+            structureElementCommandsUpdate[5].setDescription("5");
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUr",     Boolean.TRUE);
@@ -1080,17 +1200,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            updatedStructureElements = ITUtilStructureElement.assertUpdate(approvedStructureElements);
+            updatedStructureElements = ITUtilStructureElement.assertUpdate(structureElementCommandsUpdate);
             assertNotNull(updatedStructureElements);
             assertEquals(6, updatedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(updatedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(updatedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(updatedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUr", Boolean.TRUE);
@@ -1104,17 +1228,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(updatedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            rejectedStructureElements = ITUtilStructureElement.assertReject(updatedStructureElements);
+            rejectedStructureElements = ITUtilStructureElement.assertReject(structureElementCommandsConfirm);
             assertNotNull(rejectedStructureElements);
             assertEquals(6, rejectedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(rejectedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(rejectedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(rejectedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgUr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysUr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubUr", Boolean.TRUE);
@@ -1128,12 +1256,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpUr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtUr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1161,12 +1289,15 @@ class StructuresMultipleIT {
         //     comment
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             UUID uuid = null;
             String value = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgCd",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysCd", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubCd", "description", "comment"),
@@ -1174,6 +1305,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtCd",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCd",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCd",     Boolean.FALSE);
@@ -1188,17 +1322,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCd",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCd",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgCd",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysCd",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubCd", Boolean.TRUE);
@@ -1212,54 +1350,24 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpCd",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtCd",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
-
-            uuid = approvedStructureElements[1].getUuid();
-            approvedStructureElements[1].setUuid(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.FALSE);
-            approvedStructureElements[1].setUuid(uuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-
-            approvedStructureElements[1].setType(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SYSTEMGROUP);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SUBSYSTEM);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.FALSE);
-            approvedStructureElements[1].setType(Type.SYSTEM);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-
-            approvedStructureElements[1].setParent(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-            approvedStructureElements[1].setParent(systemUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-            approvedStructureElements[1].setParent(subsystemUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-            approvedStructureElements[1].setParent(systemGroupUuid);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getName();
-            approvedStructureElements[1].setName(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-            approvedStructureElements[1].setName(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getDescription();
-            approvedStructureElements[1].setDescription(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-            approvedStructureElements[1].setDescription(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
-
-            value = approvedStructureElements[1].getComment();
-            approvedStructureElements[1].setComment(null);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.FALSE);
-            approvedStructureElements[1].setComment(value);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
+
+            uuid = structureElementCommandsConfirm[1].getUuid();
+            structureElementCommandsConfirm[1].setUuid(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            structureElementCommandsConfirm[1].setUuid(uuid);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE);
+
+            value = structureElementCommandsConfirm[1].getComment();
+            structureElementCommandsConfirm[1].setComment(null);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.FALSE);
+            structureElementCommandsConfirm[1].setComment(value);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE, Boolean.TRUE);
         } catch (Exception e) {
             fail();
         }
@@ -1284,11 +1392,14 @@ class StructuresMultipleIT {
         //     create, approve in order to delete, approve
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] deletedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgDa",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysDa", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubDa", "description", "comment"),
@@ -1296,6 +1407,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtDa",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDa",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDa",     Boolean.FALSE);
@@ -1310,17 +1424,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDa",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDa", Boolean.TRUE);
@@ -1334,17 +1452,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            deletedStructureElements = ITUtilStructureElement.assertDelete(approvedStructureElements);
+            deletedStructureElements = ITUtilStructureElement.assertDelete(structureElementCommandsConfirm);
             assertNotNull(deletedStructureElements);
             assertEquals(6, deletedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(deletedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(deletedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(deletedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDa",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDa",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDa", Boolean.TRUE);
@@ -1358,17 +1480,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDa",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            approvedStructureElements = ITUtilStructureElement.assertApprove(deletedStructureElements);
+            approvedStructureElements = ITUtilStructureElement.assertApprove(structureElementCommandsConfirm);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDa",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDa",     Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDa", Boolean.FALSE);
@@ -1381,13 +1507,19 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DISCIPLINE,  "DiDa",      Boolean.TRUE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDa",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDa",   Boolean.TRUE);
-
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+/////
+//            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+//            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1414,12 +1546,15 @@ class StructuresMultipleIT {
         //     create, approve in order to delete, cancel
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] deletedStructureElements = null;
             StructureElement[] cancelledStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgDc",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysDc", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubDc", "description", "comment"),
@@ -1427,6 +1562,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtDc",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDc",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDc",     Boolean.FALSE);
@@ -1441,17 +1579,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDc",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDc", Boolean.TRUE);
@@ -1465,17 +1607,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            deletedStructureElements = ITUtilStructureElement.assertDelete(approvedStructureElements);
+            deletedStructureElements = ITUtilStructureElement.assertDelete(structureElementCommandsConfirm);
             assertNotNull(deletedStructureElements);
             assertEquals(6, deletedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(deletedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(deletedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(deletedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDc", Boolean.TRUE);
@@ -1489,17 +1635,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            cancelledStructureElements = ITUtilStructureElement.assertCancel(deletedStructureElements);
+            cancelledStructureElements = ITUtilStructureElement.assertCancel(structureElementCommandsConfirm);
             assertNotNull(cancelledStructureElements);
             assertEquals(6, cancelledStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(cancelledStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(cancelledStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(cancelledStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDc",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDc",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDc", Boolean.TRUE);
@@ -1513,12 +1663,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDc",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDc",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(cancelledStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
@@ -1545,12 +1695,15 @@ class StructuresMultipleIT {
         //     create, approve in order to delete, reject
 
         try {
-            StructureElementCommand[] structureElements = null;
+            StructureElementCommandCreate[] structureElementCommandsCreate = null;
+            StructureElementCommandUpdate[] structureElementCommandsUpdate = null;
+            StructureElementCommandConfirm[] structureElementCommandsConfirm = null;
+            StructureElementCommand[] structureElementCommands = null;
             StructureElement[] approvedStructureElements = null;
             StructureElement[] deletedStructureElements = null;
             StructureElement[] rejectedStructureElements = null;
 
-            structureElements = new StructureElementCommand[] {
+            structureElementCommands = new StructureElementCommand[] {
                     new StructureElementCommand(null, Type.SYSTEMGROUP, null,            "name", "SgDr",  "description", "comment"),
                     new StructureElementCommand(null, Type.SYSTEM,      systemGroupUuid, "name", "SysDr", "description", "comment"),
                     new StructureElementCommand(null, Type.SUBSYSTEM,   systemUuid,      "name", "SubDr", "description", "comment"),
@@ -1558,6 +1711,9 @@ class StructuresMultipleIT {
                     new StructureElementCommand(null, Type.DEVICEGROUP, disciplineUuid,  "name", "",      "description", "comment"),
                     new StructureElementCommand(null, Type.DEVICETYPE,  deviceGroupUuid, "name", "DtDr",  "description", "comment")
             };
+            structureElementCommandsCreate = StructureElementUtil.convertCommand2CommandCreate(structureElementCommands);
+            structureElementCommandsUpdate = StructureElementUtil.convertCommand2CommandUpdate(structureElementCommands);
+            structureElementCommandsConfirm = StructureElementUtil.convertCommand2CommandConfirm(structureElementCommands);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDr",      Boolean.FALSE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDr",     Boolean.FALSE);
@@ -1572,17 +1728,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDr",   Boolean.TRUE);
 
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CREATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(structureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElements);
+            approvedStructureElements = ITUtilStructureElement.assertCreateApprove(structureElementCommandsCreate);
             assertNotNull(approvedStructureElements);
             assertEquals(6, approvedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(approvedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(approvedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(approvedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDr", Boolean.TRUE);
@@ -1596,17 +1756,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(approvedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
 
-            deletedStructureElements = ITUtilStructureElement.assertDelete(approvedStructureElements);
+            deletedStructureElements = ITUtilStructureElement.assertDelete(structureElementCommandsConfirm);
             assertNotNull(deletedStructureElements);
             assertEquals(6, deletedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(deletedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(deletedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(deletedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDr", Boolean.TRUE);
@@ -1620,17 +1784,21 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.UPDATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.DELETE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.APPROVE, Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.CANCEL,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(deletedStructureElements, StructureCommand.REJECT,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.TRUE);
 
-            rejectedStructureElements = ITUtilStructureElement.assertReject(deletedStructureElements);
+            rejectedStructureElements = ITUtilStructureElement.assertReject(structureElementCommandsConfirm);
             assertNotNull(rejectedStructureElements);
             assertEquals(6, rejectedStructureElements.length);
 
+            structureElementCommandsCreate = StructureElementUtil.convertElement2CommandCreate(rejectedStructureElements);
+            structureElementCommandsUpdate = StructureElementUtil.convertElement2CommandUpdate(rejectedStructureElements);
+            structureElementCommandsConfirm = StructureElementUtil.convertElement2CommandConfirm(rejectedStructureElements);
+
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "SgDr",      Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM,      "SysDr",     Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM,   "Sys-SubDr", Boolean.TRUE);
@@ -1644,12 +1812,12 @@ class StructuresMultipleIT {
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICEGROUP, "GrpDr",     Boolean.FALSE);
             ITUtilStructureElement.assertIsValidToCreate(Type.DEVICETYPE,  "Di-DtDr",   Boolean.FALSE);
 
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CREATE,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.UPDATE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.DELETE,  Boolean.TRUE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.APPROVE, Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.CANCEL,  Boolean.FALSE);
-            ITUtilStructureElement.assertValidate(rejectedStructureElements, StructureCommand.REJECT,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsCreate,  StructureCommand.CREATE,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsUpdate,  StructureCommand.UPDATE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.DELETE,  Boolean.TRUE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.APPROVE, Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.CANCEL,  Boolean.FALSE);
+            ITUtilStructureElement.assertValidate(structureElementCommandsConfirm, StructureCommand.REJECT,  Boolean.FALSE);
         } catch (Exception e) {
             fail();
         }
diff --git a/src/test/java/org/openepics/names/util/NameElementUtilTest.java b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
index 6cf73248..7ad67bcb 100644
--- a/src/test/java/org/openepics/names/util/NameElementUtilTest.java
+++ b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
@@ -22,6 +22,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 
+import java.util.Date;
 import java.util.UUID;
 
 import org.junit.jupiter.api.Test;
@@ -75,58 +76,145 @@ class NameElementUtilTest {
      */
     @Test
     void getNameElementContent() {
+        UUID uuid = UUID.randomUUID();
+        UUID parentSystemStructure =  UUID.randomUUID();
+        UUID parentDeviceStructure = UUID.randomUUID();
+        String systemStructure = "qw";
+        String deviceStructure = "er";
+        String index = "ty";
+        String name = "ui";
+        String description = "op";
+        Status status = Status.APPROVED;
+        Boolean latest = Boolean.TRUE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "as";
+        String comment = "df";
+
         NameElement nameElement = NameElementUtil.getNameElement(
-                null,
-                null, null,
-                null, null,
-                null, null,
-                null, null, null, null,
-                null, null, null);
+                uuid,
+                parentSystemStructure, parentDeviceStructure,
+                systemStructure, deviceStructure,
+                index, name,
+                description, status, latest, deleted,
+                when, who, comment);
 
         assertNotNull(nameElement);
-        assertEquals(null, nameElement.getUuid());
-        assertEquals(null, nameElement.getParentSystemStructure());
-        assertEquals(null, nameElement.getParentDeviceStructure());
-        assertEquals(null, nameElement.getSystemStructure());
-        assertEquals(null, nameElement.getDeviceStructure());
-        assertEquals(null, nameElement.getIndex());
-        assertEquals(null, nameElement.getName());
-        assertEquals(null, nameElement.getDescription());
-        assertEquals(null, nameElement.getStatus());
-        assertEquals(null, nameElement.isLatest());
-        assertEquals(null, nameElement.isDeleted());
-        assertEquals(null, nameElement.getWhen());
-        assertEquals(null, nameElement.getWho());
-        assertEquals(null, nameElement.getComment());
+        assertEquals(uuid, nameElement.getUuid());
+        assertEquals(parentSystemStructure, nameElement.getParentSystemStructure());
+        assertEquals(parentDeviceStructure, nameElement.getParentDeviceStructure());
+        assertEquals(systemStructure, nameElement.getSystemStructure());
+        assertEquals(deviceStructure, nameElement.getDeviceStructure());
+        assertEquals(index, nameElement.getIndex());
+        assertEquals(name, nameElement.getName());
+        assertEquals(description, nameElement.getDescription());
+        assertEquals(status, nameElement.getStatus());
+        assertEquals(latest, nameElement.isLatest());
+        assertEquals(deleted, nameElement.isDeleted());
+        assertEquals(when, nameElement.getWhen());
+        assertEquals(who, nameElement.getWho());
+        assertEquals(comment, nameElement.getComment());
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert name element command for create to name element command.
+     */
+    @Test
+    void convertCommandCreate2Command() {
+        UUID uuid2 = UUID.randomUUID();
+        UUID uuid3 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+
+        NameElementCommandCreate commandCreate = new NameElementCommandCreate(uuid2, uuid3, str1, str2, str3);
+        NameElementCommand command = NameElementUtil.convertCommandCreate2Command(commandCreate);
+
+        assertNotNull(command);
+        assertNull(command.getUuid());
+        assertEquals(uuid2, command.getParentSystemStructure());
+        assertEquals(uuid3, command.getParentDeviceStructure());
+        assertEquals(str1, command.getIndex());
+        assertEquals(str2, command.getDescription());
+        assertEquals(str3, command.getComment());
+    }
+
+    /**
+     * Test of convert name element command for update to name element command.
+     */
+    @Test
+    void convertCommandUpdate2Command() {
+        UUID uuid1 = UUID.randomUUID();
+        UUID uuid2 = UUID.randomUUID();
+        UUID uuid3 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+
+        NameElementCommandUpdate commandUpdate = new NameElementCommandUpdate(uuid1, uuid2, uuid3, str1, str2, str3);
+        NameElementCommand command = NameElementUtil.convertCommandUpdate2Command(commandUpdate);
+
+        assertNotNull(command);
+        assertEquals(uuid1, command.getUuid());
+        assertEquals(uuid2, command.getParentSystemStructure());
+        assertEquals(uuid3, command.getParentDeviceStructure());
+        assertEquals(str1, command.getIndex());
+        assertEquals(str2, command.getDescription());
+        assertEquals(str3, command.getComment());
     }
 
     /**
-     * Test of get name element command given name element command for create.
+     * Test of convert name element command for confirm to name element command.
      */
     @Test
-    void getNameElementCommandCreate() {
+    void convertCommandConfirm2Command() {
+        UUID uuid1 = UUID.randomUUID();
+        String str3 = "zxcv";
+
+        NameElementCommandConfirm commandConfirm = new NameElementCommandConfirm(uuid1, str3);
+        NameElementCommand command = NameElementUtil.convertCommandConfirm2Command(commandConfirm);
+
+        assertNotNull(command);
+        assertEquals(uuid1, command.getUuid());
+        assertNull(command.getParentSystemStructure());
+        assertNull(command.getParentDeviceStructure());
+        assertNull(command.getIndex());
+        assertNull(command.getDescription());
+        assertEquals(str3, command.getComment());
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert name element command to name element command for create.
+     */
+    @Test
+    void convertCommand2CommandCreate() {
+        UUID uuid1 = UUID.randomUUID();
         UUID uuid2 = UUID.randomUUID();
         UUID uuid3 = UUID.randomUUID();
         String str1 = "qwer";
         String str2 = "asdf";
         String str3 = "zxcv";
 
-        NameElementCommandCreate nameElementCommandCreate = new NameElementCommandCreate(uuid2, uuid3, str1, str2, str3);
-        NameElementCommand nameElementCommand = NameElementUtil.getNameElementCommand(nameElementCommandCreate);
+        NameElementCommand command = new NameElementCommand(uuid1, uuid2, uuid3, str1, str2, str3);
+        NameElementCommandCreate commandCreate = NameElementUtil.convertCommand2CommandCreate(command);
 
-        assertNull(nameElementCommand.getUuid());
-        assertEquals(uuid2, nameElementCommand.getParentSystemStructure());
-        assertEquals(uuid3, nameElementCommand.getParentDeviceStructure());
-        assertEquals(str1, nameElementCommand.getIndex());
-        assertEquals(str2, nameElementCommand.getDescription());
-        assertEquals(str3, nameElementCommand.getComment());
+        assertNotNull(commandCreate);
+        assertEquals(uuid2, commandCreate.getParentSystemStructure());
+        assertEquals(uuid3, commandCreate.getParentDeviceStructure());
+        assertEquals(str1, commandCreate.getIndex());
+        assertEquals(str2, commandCreate.getDescription());
+        assertEquals(str3, commandCreate.getComment());
     }
 
     /**
-     * Test of get name element command given name element command for update.
+     * Test of convert name element command to name element command for update.
      */
     @Test
-    void getNameElementCommandUpdate() {
+    void convertCommand2CommandUpdate() {
         UUID uuid1 = UUID.randomUUID();
         UUID uuid2 = UUID.randomUUID();
         UUID uuid3 = UUID.randomUUID();
@@ -134,34 +222,150 @@ class NameElementUtilTest {
         String str2 = "asdf";
         String str3 = "zxcv";
 
-        NameElementCommandUpdate nameElementCommandUpdate = new NameElementCommandUpdate(uuid1, uuid2, uuid3, str1, str2, str3);
-        NameElementCommand nameElementCommand = NameElementUtil.getNameElementCommand(nameElementCommandUpdate);
+        NameElementCommand command = new NameElementCommand(uuid1, uuid2, uuid3, str1, str2, str3);
+        NameElementCommandUpdate commandUpdate = NameElementUtil.convertCommand2CommandUpdate(command);
 
-        assertEquals(uuid1, nameElementCommand.getUuid());
-        assertEquals(uuid2, nameElementCommand.getParentSystemStructure());
-        assertEquals(uuid3, nameElementCommand.getParentDeviceStructure());
-        assertEquals(str1, nameElementCommand.getIndex());
-        assertEquals(str2, nameElementCommand.getDescription());
-        assertEquals(str3, nameElementCommand.getComment());
+        assertNotNull(commandUpdate);
+        assertEquals(uuid1, commandUpdate.getUuid());
+        assertEquals(uuid2, commandUpdate.getParentSystemStructure());
+        assertEquals(uuid3, commandUpdate.getParentDeviceStructure());
+        assertEquals(str1, commandUpdate.getIndex());
+        assertEquals(str2, commandUpdate.getDescription());
+        assertEquals(str3, commandUpdate.getComment());
     }
 
     /**
-     * Test of get name element command given name element command for confirm.
+     * Test of convert name element command to name element command for confirm.
      */
     @Test
-    void getNameElementCommandConfirm() {
+    void convertCommand2CommandConfirm() {
         UUID uuid1 = UUID.randomUUID();
+        UUID uuid2 = UUID.randomUUID();
+        UUID uuid3 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
         String str3 = "zxcv";
 
-        NameElementCommandConfirm nameElementCommandConfirm = new NameElementCommandConfirm(uuid1, str3);
-        NameElementCommand nameElementCommand = NameElementUtil.getNameElementCommand(nameElementCommandConfirm);
+        NameElementCommand command = new NameElementCommand(uuid1, uuid2, uuid3, str1, str2, str3);
+        NameElementCommandConfirm commandConfirm = NameElementUtil.convertCommand2CommandConfirm(command);
+
+        assertNotNull(commandConfirm);
+        assertEquals(uuid1, commandConfirm.getUuid());
+        assertEquals(str3, commandConfirm.getComment());
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert name element to name element command for create.
+     */
+    @Test
+    void convertElement2CommandCreate() {
+        UUID uuid = UUID.randomUUID();
+        UUID parentSystemStructure =  UUID.randomUUID();
+        UUID parentDeviceStructure = UUID.randomUUID();
+        String systemStructure = "qw";
+        String deviceStructure = "er";
+        String index = "ty";
+        String name = "ui";
+        String description = "op";
+        Status status = Status.APPROVED;
+        Boolean latest = Boolean.TRUE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "as";
+        String comment = "df";
+
+        NameElement element = NameElementUtil.getNameElement(
+                uuid,
+                parentSystemStructure, parentDeviceStructure,
+                systemStructure, deviceStructure,
+                index, name,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        NameElementCommandCreate commandCreate = NameElementUtil.convertElement2CommandCreate(element);
+
+        assertNotNull(commandCreate);
+        assertEquals(parentSystemStructure, commandCreate.getParentSystemStructure());
+        assertEquals(parentDeviceStructure, commandCreate.getParentDeviceStructure());
+        assertEquals(index, commandCreate.getIndex());
+        assertEquals(description, commandCreate.getDescription());
+        assertEquals(comment, commandCreate.getComment());
+    }
+
+    /**
+     * Test of convert name element to name element command for update.
+     */
+    @Test
+    void convertElement2CommandUpdate() {
+        UUID uuid = UUID.randomUUID();
+        UUID parentSystemStructure =  UUID.randomUUID();
+        UUID parentDeviceStructure = UUID.randomUUID();
+        String systemStructure = "qw";
+        String deviceStructure = "er";
+        String index = "ty";
+        String name = "ui";
+        String description = "op";
+        Status status = Status.APPROVED;
+        Boolean latest = Boolean.TRUE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "as";
+        String comment = "df";
+
+        NameElement element = NameElementUtil.getNameElement(
+                uuid,
+                parentSystemStructure, parentDeviceStructure,
+                systemStructure, deviceStructure,
+                index, name,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        NameElementCommandUpdate commandUpdate = NameElementUtil.convertElement2CommandUpdate(element);
+
+        assertNotNull(commandUpdate);
+        assertEquals(uuid, commandUpdate.getUuid());
+        assertEquals(parentSystemStructure, commandUpdate.getParentSystemStructure());
+        assertEquals(parentDeviceStructure, commandUpdate.getParentDeviceStructure());
+        assertEquals(index, commandUpdate.getIndex());
+        assertEquals(description, commandUpdate.getDescription());
+        assertEquals(comment, commandUpdate.getComment());
+    }
+
+    /**
+     * Test of convert name element to name element command for confirm.
+     */
+    @Test
+    void convertElement2CommandConfirm() {
+        UUID uuid = UUID.randomUUID();
+        UUID parentSystemStructure =  UUID.randomUUID();
+        UUID parentDeviceStructure = UUID.randomUUID();
+        String systemStructure = "qw";
+        String deviceStructure = "er";
+        String index = "ty";
+        String name = "ui";
+        String description = "op";
+        Status status = Status.APPROVED;
+        Boolean latest = Boolean.TRUE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "as";
+        String comment = "df";
+
+        NameElement element = NameElementUtil.getNameElement(
+                uuid,
+                parentSystemStructure, parentDeviceStructure,
+                systemStructure, deviceStructure,
+                index, name,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        NameElementCommandConfirm commandConfirm = NameElementUtil.convertElement2CommandConfirm(element);
 
-        assertEquals(uuid1, nameElementCommand.getUuid());
-        assertNull(nameElementCommand.getParentSystemStructure());
-        assertNull(nameElementCommand.getParentDeviceStructure());
-        assertNull(nameElementCommand.getIndex());
-        assertNull(nameElementCommand.getDescription());
-        assertEquals(str3, nameElementCommand.getComment());
+        assertNotNull(commandConfirm);
+        assertEquals(uuid, commandConfirm.getUuid());
+        assertEquals(comment, commandConfirm.getComment());
     }
 
 }
diff --git a/src/test/java/org/openepics/names/util/StructureElementUtilTest.java b/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
index 60114c5d..d12030b5 100644
--- a/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
+++ b/src/test/java/org/openepics/names/util/StructureElementUtilTest.java
@@ -20,10 +20,20 @@ package org.openepics.names.util;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
+import java.util.Date;
+import java.util.UUID;
+
 import org.junit.jupiter.api.Test;
+import org.openepics.names.rest.beans.Status;
+import org.openepics.names.rest.beans.Type;
 import org.openepics.names.rest.beans.element.StructureElement;
+import org.openepics.names.rest.beans.element.StructureElementCommand;
+import org.openepics.names.rest.beans.element.StructureElementCommandConfirm;
+import org.openepics.names.rest.beans.element.StructureElementCommandCreate;
+import org.openepics.names.rest.beans.element.StructureElementCommandUpdate;
 
 /**
  * Unit tests for StructureElementUtil class.
@@ -39,31 +49,48 @@ class StructureElementUtilTest {
      */
     @Test
     void getStructureElementContent() {
+        UUID uuid = UUID.randomUUID();
+        Type type = Type.DEVICETYPE;
+        UUID parent = UUID.randomUUID();
+        String name = "gh";
+        String mnemonic = "jk";
+        String mnemonicPath = "zx";
+        Integer level = 3;
+        String description = "cv";
+        Status status = Status.PENDING;
+        Boolean latest = Boolean.FALSE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "bn";
+        String comment = "ml";
+
         StructureElement structureElement = StructureElementUtil.getStructureElement(
-                null,
-                null,
-                null,
-                null, null, null, null,
-                null, null, null, null,
-                null, null, null);
+                uuid,
+                type,
+                parent,
+                name, mnemonic, mnemonicPath, level,
+                description, status, latest, deleted,
+                when, who, comment);
 
         assertNotNull(structureElement);
-        assertEquals(null, structureElement.getType());
-        assertEquals(null, structureElement.getUuid());
-        assertEquals(null, structureElement.getParent());
-        assertEquals(null, structureElement.getName());
-        assertEquals(null, structureElement.getMnemonic());
-        assertEquals(null, structureElement.getMnemonicPath());
-        assertEquals(null, structureElement.getLevel());
-        assertEquals(null, structureElement.getDescription());
-        assertEquals(null, structureElement.getStatus());
-        assertEquals(null, structureElement.isLatest());
-        assertEquals(null, structureElement.isDeleted());
-        assertEquals(null, structureElement.getWhen());
-        assertEquals(null, structureElement.getWho());
-        assertEquals(null, structureElement.getComment());
+        assertEquals(uuid, structureElement.getUuid());
+        assertEquals(type, structureElement.getType());
+        assertEquals(parent, structureElement.getParent());
+        assertEquals(name, structureElement.getName());
+        assertEquals(mnemonic, structureElement.getMnemonic());
+        assertEquals(mnemonicPath, structureElement.getMnemonicPath());
+        assertEquals(level, structureElement.getLevel());
+        assertEquals(description, structureElement.getDescription());
+        assertEquals(status, structureElement.getStatus());
+        assertEquals(latest, structureElement.isLatest());
+        assertEquals(deleted, structureElement.isDeleted());
+        assertEquals(when, structureElement.getWhen());
+        assertEquals(who, structureElement.getWho());
+        assertEquals(comment, structureElement.getComment());
     }
 
+    // ----------------------------------------------------------------------------------------------------
+
     @Test
     void equals() {
         StructureElement se1 = new StructureElement();
@@ -94,4 +121,268 @@ class StructureElementUtilTest {
         assertTrue(se1.equals(se2));
     }
 
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert structure element command for create to structure element command.
+     */
+    @Test
+    void convertCommandCreate2Command() {
+        Type type = Type.SUBSYSTEM;
+        UUID uuid2 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+        String str4 = "tyui";
+
+        StructureElementCommandCreate commandCreate = new StructureElementCommandCreate(type, uuid2, str1, str2, str3, str4);
+        StructureElementCommand command = StructureElementUtil.convertCommandCreate2Command(commandCreate);
+
+        assertNull(command.getUuid());
+        assertEquals(type, command.getType());
+        assertEquals(uuid2, command.getParent());
+        assertEquals(str1, command.getName());
+        assertEquals(str2, command.getMnemonic());
+        assertEquals(str3, command.getDescription());
+        assertEquals(str4, command.getComment());
+    }
+
+    /**
+     * Test of convert structure element command for update to structure element command.
+     */
+    @Test
+    void convertCommandUpdate2Command() {
+        UUID uuid1 = UUID.randomUUID();
+        Type type = Type.SUBSYSTEM;
+        UUID uuid2 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+        String str4 = "tyui";
+
+        StructureElementCommandUpdate commandUpdate = new StructureElementCommandUpdate(uuid1, type, uuid2, str1, str2, str3, str4);
+        StructureElementCommand command = StructureElementUtil.convertCommandUpdate2Command(commandUpdate);
+
+        assertEquals(uuid1, command.getUuid());
+        assertEquals(type, command.getType());
+        assertEquals(uuid2, command.getParent());
+        assertEquals(str1, command.getName());
+        assertEquals(str2, command.getMnemonic());
+        assertEquals(str3, command.getDescription());
+        assertEquals(str4, command.getComment());
+    }
+
+    /**
+     * Test of convert structure element command for confirm to structure element command.
+     */
+    @Test
+    void convertCommandConfirm2Command() {
+        UUID uuid1 = UUID.randomUUID();
+        Type type = Type.SUBSYSTEM;
+        String str4 = "tyui";
+
+        StructureElementCommandConfirm commandConfirm = new StructureElementCommandConfirm(uuid1, type, str4);
+        StructureElementCommand command = StructureElementUtil.convertCommandConfirm2Command(commandConfirm);
+
+        assertEquals(uuid1, command.getUuid());
+        assertEquals(type, command.getType());
+        assertNull(command.getParent());
+        assertNull(command.getName());
+        assertNull(command.getMnemonic());
+        assertNull(command.getDescription());
+        assertEquals(str4,  command.getComment());
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert structure element command to structure element command for create.
+     */
+    @Test
+    void convertCommand2CommandCreate() {
+        UUID uuid1 = UUID.randomUUID();
+        Type type = Type.SUBSYSTEM;
+        UUID uuid2 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+        String str4 = "tyui";
+
+        StructureElementCommand command = new StructureElementCommand(uuid1, type, uuid2, str1, str2, str3, str4);
+        StructureElementCommandCreate commandCreate = StructureElementUtil.convertCommand2CommandCreate(command);
+
+        assertNotNull(commandCreate);
+        assertEquals(type, commandCreate.getType());
+        assertEquals(uuid2, commandCreate.getParent());
+        assertEquals(str1, commandCreate.getName());
+        assertEquals(str2, commandCreate.getMnemonic());
+        assertEquals(str3, commandCreate.getDescription());
+        assertEquals(str4, commandCreate.getComment());
+    }
+
+    /**
+     * Test of convert structure element command to structure element command for update.
+     */
+    @Test
+    void convertCommand2CommandUpdate() {
+        UUID uuid1 = UUID.randomUUID();
+        Type type = Type.SUBSYSTEM;
+        UUID uuid2 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+        String str4 = "tyui";
+
+        StructureElementCommand command = new StructureElementCommand(uuid1, type, uuid2, str1, str2, str3, str4);
+        StructureElementCommandUpdate commandUpdate = StructureElementUtil.convertCommand2CommandUpdate(command);
+
+        assertNotNull(commandUpdate);
+        assertEquals(uuid1, commandUpdate.getUuid());
+        assertEquals(type, commandUpdate.getType());
+        assertEquals(uuid2, commandUpdate.getParent());
+        assertEquals(str1, commandUpdate.getName());
+        assertEquals(str2, commandUpdate.getMnemonic());
+        assertEquals(str3, commandUpdate.getDescription());
+        assertEquals(str4, commandUpdate.getComment());
+    }
+
+    /**
+     * Test of convert structure element command to structure element command for confirm.
+     */
+    @Test
+    void convertCommand2CommandConfirm() {
+        UUID uuid1 = UUID.randomUUID();
+        Type type = Type.SUBSYSTEM;
+        UUID uuid2 = UUID.randomUUID();
+        String str1 = "qwer";
+        String str2 = "asdf";
+        String str3 = "zxcv";
+        String str4 = "tyui";
+
+        StructureElementCommand command = new StructureElementCommand(uuid1, type, uuid2, str1, str2, str3, str4);
+        StructureElementCommandConfirm commandConfirm = StructureElementUtil.convertCommand2CommandConfirm(command);
+
+        assertNotNull(commandConfirm);
+        assertEquals(uuid1, commandConfirm.getUuid());
+        assertEquals(type, commandConfirm.getType());
+        assertEquals(str4, commandConfirm.getComment());
+    }
+
+    // ----------------------------------------------------------------------------------------------------
+
+    /**
+     * Test of convert structure element to structure element command for create.
+     */
+    @Test
+    void convertElement2CommandCreate() {
+        UUID uuid = UUID.randomUUID();
+        Type type = Type.DEVICETYPE;
+        UUID parent = UUID.randomUUID();
+        String name = "gh";
+        String mnemonic = "jk";
+        String mnemonicPath = "zx";
+        Integer level = 3;
+        String description = "cv";
+        Status status = Status.PENDING;
+        Boolean latest = Boolean.FALSE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "bn";
+        String comment = "ml";
+
+        StructureElement element = StructureElementUtil.getStructureElement(
+                uuid,
+                type,
+                parent,
+                name, mnemonic, mnemonicPath, level,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        StructureElementCommandCreate commandCreate = StructureElementUtil.convertElement2CommandCreate(element);
+
+        assertNotNull(commandCreate);
+        assertEquals(type, commandCreate.getType());
+        assertEquals(parent, commandCreate.getParent());
+        assertEquals(name, commandCreate.getName());
+        assertEquals(mnemonic, commandCreate.getMnemonic());
+        assertEquals(description, commandCreate.getDescription());
+        assertEquals(comment, commandCreate.getComment());
+    }
+
+    /**
+     * Test of convert structure element to structure element command for update.
+     */
+    @Test
+    void convertElement2CommandUpdate() {
+        UUID uuid = UUID.randomUUID();
+        Type type = Type.DEVICETYPE;
+        UUID parent = UUID.randomUUID();
+        String name = "gh";
+        String mnemonic = "jk";
+        String mnemonicPath = "zx";
+        Integer level = 3;
+        String description = "cv";
+        Status status = Status.PENDING;
+        Boolean latest = Boolean.FALSE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "bn";
+        String comment = "ml";
+
+        StructureElement element = StructureElementUtil.getStructureElement(
+                uuid,
+                type,
+                parent,
+                name, mnemonic, mnemonicPath, level,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        StructureElementCommandUpdate commandUpdate = StructureElementUtil.convertElement2CommandUpdate(element);
+
+        assertNotNull(commandUpdate);
+        assertEquals(uuid, commandUpdate.getUuid());
+        assertEquals(type, commandUpdate.getType());
+        assertEquals(parent, commandUpdate.getParent());
+        assertEquals(name, commandUpdate.getName());
+        assertEquals(mnemonic, commandUpdate.getMnemonic());
+        assertEquals(description, commandUpdate.getDescription());
+        assertEquals(comment, commandUpdate.getComment());
+    }
+
+    /**
+     * Test of convert structure element to structure element command for confirm.
+     */
+    @Test
+    void convertElement2CommandConfirm() {
+        UUID uuid = UUID.randomUUID();
+        Type type = Type.DEVICETYPE;
+        UUID parent = UUID.randomUUID();
+        String name = "gh";
+        String mnemonic = "jk";
+        String mnemonicPath = "zx";
+        Integer level = 3;
+        String description = "cv";
+        Status status = Status.PENDING;
+        Boolean latest = Boolean.FALSE;
+        Boolean deleted = Boolean.FALSE;
+        Date when = new Date();
+        String who = "bn";
+        String comment = "ml";
+
+        StructureElement element = StructureElementUtil.getStructureElement(
+                uuid,
+                type,
+                parent,
+                name, mnemonic, mnemonicPath, level,
+                description, status, latest, deleted,
+                when, who, comment);
+
+        StructureElementCommandConfirm commandConfirm = StructureElementUtil.convertElement2CommandConfirm(element);
+
+        assertNotNull(commandConfirm);
+        assertEquals(uuid, commandConfirm.getUuid());
+        assertEquals(type, commandConfirm.getType());
+        assertEquals(comment, commandConfirm.getComment());
+    }
+
 }
-- 
GitLab