diff --git a/src/main/java/org/openepics/names/rest/beans/NameElement.java b/src/main/java/org/openepics/names/rest/beans/NameElement.java
index b5b38a8154ad8bac393f0753ec5a60f2e0796082..3177127b7c424f29e315b778ebbc29a4b703f97e 100644
--- a/src/main/java/org/openepics/names/rest/beans/NameElement.java
+++ b/src/main/java/org/openepics/names/rest/beans/NameElement.java
@@ -34,10 +34,8 @@ public class NameElement extends NameStructureElement implements Serializable {
      */
     private static final long serialVersionUID = -5998490678202969520L;
 
-    private UUID systemgroup;
-    private UUID system;
-    private UUID subsystem;
-    private UUID devicetype;
+    private UUID parentsystemstructure;
+    private UUID parentdevicestructure;
     private String systemstructure;
     private String devicestructure;
     private String index;
@@ -53,10 +51,8 @@ public class NameElement extends NameStructureElement implements Serializable {
      * Public constructor.
      *
      * @param uuid uuid
-     * @param systemgroup system group
-     * @param system system
-     * @param subsystem subsystem
-     * @param devicetype device type
+     * @param parentsystemstructure parent system structure uuid (system group, system, subsystem)
+     * @param parentdevicestructure parent device structure uuid (device type)
      * @param systemstructure system structure mnemonic path
      * @param devicestructure device structure mnemonic path
      * @param index instance index
@@ -71,7 +67,7 @@ public class NameElement extends NameStructureElement implements Serializable {
      */
     public NameElement (
             UUID uuid,
-            UUID systemgroup, UUID system, UUID subsystem, UUID devicetype,
+            UUID parentsystemstructure, UUID parentdevicestructure,
             String systemstructure, String devicestructure,
             String index, String name,
             String description, Status status, Boolean latest, Boolean deleted,
@@ -79,39 +75,25 @@ public class NameElement extends NameStructureElement implements Serializable {
 
         super(uuid, description, status, latest, deleted, when, who, comment);
 
-        setSystemgroup(systemgroup);
-        setSystem(system);
-        setSubsystem(subsystem);
-        setDevicetype(devicetype);
+        setParentsystemstructure(parentsystemstructure);
+        setParentdevicestructure(parentdevicestructure);
         setSystemstructure(systemstructure);
         setDevicestructure(devicestructure);
         setIndex(index);
         setName(name);
     }
 
-    public UUID getSystemgroup() {
-        return systemgroup;
+    public UUID getParentsystemstructure() {
+        return parentsystemstructure;
     }
-    public void setSystemgroup(UUID systemgroup) {
-        this.systemgroup = systemgroup;
+    public void setParentsystemstructure(UUID parentsystemstructure) {
+        this.parentsystemstructure = parentsystemstructure;
     }
-    public UUID getSystem() {
-        return system;
+    public UUID getParentdevicestructure() {
+        return parentdevicestructure;
     }
-    public void setSystem(UUID system) {
-        this.system = system;
-    }
-    public UUID getSubsystem() {
-        return subsystem;
-    }
-    public void setSubsystem(UUID subsystem) {
-        this.subsystem = subsystem;
-    }
-    public UUID getDevicetype() {
-        return devicetype;
-    }
-    public void setDevicetype(UUID devicetype) {
-        this.devicetype = devicetype;
+    public void setParentdevicestructure(UUID parentdevicestructure) {
+        this.parentdevicestructure = parentdevicestructure;
     }
     public String getSystemstructure() {
         return systemstructure;
@@ -140,8 +122,8 @@ public class NameElement extends NameStructureElement implements Serializable {
 
     // utility method
     public void setNameAndIndex(String name, String index) {
-    	this.index = index;
-    	this.name = name;
+        this.index = index;
+        this.name = name;
     }
 
     @Override
@@ -164,25 +146,15 @@ public class NameElement extends NameStructureElement implements Serializable {
             return false;
         }
 
-        if (getSystemgroup() == null) {
-            if (other.getSystemgroup() != null)
-                return false;
-        } else if (!getSystemgroup().equals(other.getSystemgroup()))
-            return false;
-        if (getSystem() == null) {
-            if (other.getSystem() != null)
-                return false;
-        } else if (!getSystem().equals(other.getSystem()))
-            return false;
-        if (getSubsystem() == null) {
-            if (other.getSubsystem() != null)
+        if (getParentsystemstructure() == null) {
+            if (other.getParentsystemstructure() != null)
                 return false;
-        } else if (!getSubsystem().equals(other.getSubsystem()))
+        } else if (!getParentsystemstructure().equals(other.getParentsystemstructure()))
             return false;
-        if (getDevicetype() == null) {
-            if (other.getDevicetype() != null)
+        if (getParentdevicestructure() == null) {
+            if (other.getParentdevicestructure() != null)
                 return false;
-        } else if (!getDevicetype().equals(other.getDevicetype()))
+        } else if (!getParentdevicestructure().equals(other.getParentdevicestructure()))
             return false;
         if (getSystemstructure() == null) {
             if (other.getSystemstructure() != null)
@@ -212,22 +184,20 @@ public class NameElement extends NameStructureElement implements Serializable {
     public String toString() {
         StringBuilder sb = new StringBuilder();
         sb.append("{");
-        sb.append("\"uuid\": "              + getUuid());
-        sb.append(", \"systemgroup\": "     + getSystemgroup());
-        sb.append(", \"system\": "          + getSystem());
-        sb.append(", \"subsystem\": "       + getSubsystem());
-        sb.append(", \"devicetype\": "      + getDevicetype());
-        sb.append(", \"systemstructure\": " + getSystemstructure());
-        sb.append(", \"devicestructure\": " + getDevicestructure());
-        sb.append(", \"index\": "           + getIndex());
-        sb.append(", \"name\": "            + getName());
-        sb.append(", \"description\": "     + getDescription());
-        sb.append(", \"status\": "          + getStatus());
-        sb.append(", \"latest\": "          + isLatest());
-        sb.append(", \"deleted\": "         + isDeleted());
-        sb.append(", \"when\": "            + getWhen());
-        sb.append(", \"who\": "             + getWho());
-        sb.append(", \"comment\": "         + getComment());
+        sb.append("\"uuid\": "                    + getUuid());
+        sb.append(", \"parentsystemstructure\": " + getParentsystemstructure());
+        sb.append(", \"parentdevicestructure\": " + getParentdevicestructure());
+        sb.append(", \"systemstructure\": "       + getSystemstructure());
+        sb.append(", \"devicestructure\": "       + getDevicestructure());
+        sb.append(", \"index\": "                 + getIndex());
+        sb.append(", \"name\": "                  + getName());
+        sb.append(", \"description\": "           + getDescription());
+        sb.append(", \"status\": "                + getStatus());
+        sb.append(", \"latest\": "                + isLatest());
+        sb.append(", \"deleted\": "               + isDeleted());
+        sb.append(", \"when\": "                  + getWhen());
+        sb.append(", \"who\": "                   + getWho());
+        sb.append(", \"comment\": "               + getComment());
         sb.append("}");
         return sb.toString();
     }
@@ -235,11 +205,11 @@ public class NameElement extends NameStructureElement implements Serializable {
     public String toStringSimple() {
         StringBuilder sb = new StringBuilder();
         sb.append("{");
-        sb.append("\"uuid\": "              + getUuid());
-        sb.append(", \"name\": "            + getName());
-        sb.append(", \"status\": "          + getStatus());
-        sb.append(", \"latest\": "          + isLatest());
-        sb.append(", \"deleted\": "         + isDeleted());
+        sb.append("\"uuid\": "                    + getUuid());
+        sb.append(", \"name\": "                  + getName());
+        sb.append(", \"status\": "                + getStatus());
+        sb.append(", \"latest\": "                + isLatest());
+        sb.append(", \"deleted\": "               + isDeleted());
         sb.append("}");
         return sb.toString();
     }
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 6a2055ce8210e196cde1e9382d4e5dd736f57925..0ba6b775811608b8a7fbcaf51cbfc42c97ccf6d5 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -39,6 +39,7 @@ import org.openepics.names.repository.model.DeviceType;
 import org.openepics.names.repository.model.Discipline;
 import org.openepics.names.repository.model.Name;
 import org.openepics.names.repository.model.Subsystem;
+import org.openepics.names.repository.model.System;
 import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.FieldName;
 import org.openepics.names.rest.beans.NameElement;
@@ -65,10 +66,15 @@ import com.google.common.collect.Lists;
 public class NamesService {
 
     // HolderIRepositories and HolderSystemDeviceStructure may or may not be used for preparation of what to return
-
+    //
     // for each method
     //     document what values come from NameElement and what values come from persistence layer
     //     somehow provide this information to user
+    //
+    // note
+    //     handling of system structure, device structure
+    //         parent system structure uuid (system group, system, subsystem) - ability to find structure
+    //         parent device structure uuid (device type)
 
     private static final Logger LOGGER = Logger.getLogger(NamesService.class.getName());
 
@@ -118,11 +124,17 @@ public class NamesService {
         String requestedBy = "test who";
         final List<NameElement> createdNameElements = Lists.newArrayList();
         for (NameElement nameElement : nameElements) {
+            // find out system group, system, subsystem
+            //     one of the three expected to be non-null, other two expected to be null
+            SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+
             // create
             Name name = new Name();
             setAttributes(name,
                     UUID.randomUUID(),
-                    nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                     new Date(), requestedBy, nameElement.getComment());
@@ -227,7 +239,7 @@ public class NamesService {
                 return new ResponsePageNameElements(nameElements, Long.valueOf(nameElements.size()), nameElements.size(), offset, limit);
             }
         } catch (IllegalArgumentException e) {
-        	return readNames(false, new FieldName[] {FieldName.NAME}, new String[] {name}, orderBy, isAsc, offset, limit);
+            return readNames(false, new FieldName[] {FieldName.NAME}, new String[] {name}, orderBy, isAsc, offset, limit);
         }
 
         return new ResponsePageNameElements();
@@ -293,10 +305,10 @@ public class NamesService {
         // do
         ResponsePageNameElements response = readNames(null, new FieldName[] {FieldName.UUID}, new String[] {uuid}, Boolean.TRUE, orderBy, isAsc, offset, limit);
         Collections.sort(response.getList(), new Comparator<NameElement>() {
-        	@Override
-        	public int compare(NameElement e1, NameElement e2) {
-        		return e1.getWhen().compareTo(e2.getWhen());
-        	}
+            @Override
+            public int compare(NameElement e1, NameElement e2) {
+                return e1.getWhen().compareTo(e2.getWhen());
+            }
         });
 
         return response;
@@ -568,7 +580,7 @@ public class NamesService {
 
             // skip if name element has same content as name
             //     proceed without fail
-            if (NameElementUtil.hasSameContent(nameElement, name)) {
+            if (NameElementUtil.hasSameContent(nameElement, name, holderIRepositories)) {
                 continue;
             }
 
@@ -576,11 +588,17 @@ public class NamesService {
             name.setLatest(Boolean.FALSE);
             nameRepository.updateName(name);
 
+            // find out system group, system, subsystem
+            //     one of the three expected to be non-null, other two expected to be null
+            SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+
             // create
             name = new Name();
             setAttributes(name,
                     nameElement.getUuid(),
-                    nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
                     new Date(), requestedBy, nameElement.getComment());
@@ -625,10 +643,16 @@ public class NamesService {
             name.setLatest(Boolean.FALSE);
             nameRepository.updateName(name);
 
+            // find out system group, system, subsystem
+            //     one of the three expected to be non-null, other two expected to be null
+            SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+
             name = new Name();
             setAttributes(name,
                     nameElement.getUuid(),
-                    nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    systemGroup != null ? systemGroup.getUuid() : null, system != null ? system.getUuid() : null, subsystem != null ? subsystem.getUuid() : null, nameElement.getParentdevicestructure(),
                     nameElement.getIndex(), nameElement.getName(), namingConvention.equivalenceClassRepresentative(nameElement.getName()),
                     nameElement.getDescription(), Status.APPROVED, Boolean.TRUE, Boolean.TRUE,
                     new Date(), requestedBy, nameElement.getComment());
@@ -655,7 +679,7 @@ public class NamesService {
      * @param systemgroupUuid system group uuid
      * @param systemUuid system uuid
      * @param subsystemUuid subsystem uuid
-     * @param devicetypeUuid device type uuid
+     * @param parentdevicestructure parent device structure uuid (device type)
      * @param index index
      * @param conventionName convention name
      * @param conventionNameEquivalence convention name equivalence
@@ -668,7 +692,7 @@ public class NamesService {
      * @param requestedComment requested comment
      */
     private void setAttributes(Name name,
-            UUID uuid, UUID systemgroupUuid, UUID systemUuid, UUID subsystemUuid, UUID devicetypeUuid,
+            UUID uuid, UUID systemgroupUuid, UUID systemUuid, UUID subsystemUuid, UUID parentdevicestructure,
             String index, String conventionName, String conventionNameEquivalence,
             String description, Status status, Boolean latest, Boolean deleted,
             Date requested, String requestedBy, String requestedComment) {
@@ -676,7 +700,7 @@ public class NamesService {
         name.setSystemgroupUuid(systemgroupUuid);
         name.setSystemUuid(systemUuid);
         name.setSubsystemUuid(subsystemUuid);
-        name.setDevicetypeUuid(devicetypeUuid);
+        name.setDevicetypeUuid(parentdevicestructure);
         name.setInstanceIndex(index);
         name.setConventionName(conventionName);
         name.setConventionNameEquivalence(conventionNameEquivalence);
@@ -689,4 +713,5 @@ public class NamesService {
         name.setRequestedComment(requestedComment);
 
     }
+
 }
diff --git a/src/main/java/org/openepics/names/util/NameElementUtil.java b/src/main/java/org/openepics/names/util/NameElementUtil.java
index 6ad6c2973ae024796fc3787c30a537bb774fccd6..3a535688a7b16ff630913a6b74237a85c27e3486 100644
--- a/src/main/java/org/openepics/names/util/NameElementUtil.java
+++ b/src/main/java/org/openepics/names/util/NameElementUtil.java
@@ -21,8 +21,12 @@ package org.openepics.names.util;
 import java.util.Date;
 import java.util.UUID;
 
+import org.apache.commons.lang3.StringUtils;
 import org.openepics.names.repository.model.Name;
 import org.openepics.names.repository.model.NameStructure;
+import org.openepics.names.repository.model.Subsystem;
+import org.openepics.names.repository.model.System;
+import org.openepics.names.repository.model.SystemGroup;
 import org.openepics.names.rest.beans.NameElement;
 import org.openepics.names.rest.beans.Status;
 
@@ -36,6 +40,11 @@ import org.openepics.names.rest.beans.Status;
  */
 public class NameElementUtil {
 
+    // note
+    //     handling of system structure, device structure
+    //         parent system structure uuid (system group, system, subsystem) - ability to find structure
+    //         parent device structure uuid (device type)
+
     /**
      * This class is not to be instantiated.
      */
@@ -54,9 +63,17 @@ public class NameElementUtil {
             return null;
         }
 
+        UUID parentsystemstructure = name.getSubsystemUuid() != null
+                ? name.getSubsystemUuid()
+                : name.getSystemUuid() != null
+                        ? name.getSystemUuid()
+                        : name.getSystemgroupUuid() != null
+                                ? name.getSystemgroupUuid()
+                                : null;
+
         return getNameElement(
                 name.getUuid(),
-                name.getSystemgroupUuid(), name.getSystemUuid(), name.getSubsystemUuid(), name.getDevicetypeUuid(),
+                parentsystemstructure, name.getDevicetypeUuid(),
                 NamingConventionUtil.extractMnemonicPathSystemStructure(name.getConventionName()),
                 NamingConventionUtil.extractMnemonicPathDeviceStructure(name.getConventionName()),
                 name.getInstanceIndex(), name.getConventionName(),
@@ -68,10 +85,8 @@ public class NameElementUtil {
      * Populate and return name element.
      *
      * @param uuid uuid
-     * @param systemgroup system group
-     * @param system system
-     * @param subsystem subsystem
-     * @param devicetype device type
+     * @param parentsystemstructure parent system structure uuid (system group, system, subsystem)
+     * @param parentdevicestructure parent device structure uuid (device type)
      * @param systemstructure system structure mnemonic path
      * @param devicestructure device structure mnemonic path
      * @param index instance index
@@ -87,7 +102,7 @@ public class NameElementUtil {
      */
     protected static NameElement getNameElement(
             UUID uuid,
-            UUID systemgroup, UUID system, UUID subsystem, UUID devicetype,
+            UUID parentsystemstructure, UUID parentdevicestructure,
             String systemstructure, String devicestructure,
             String index, String name,
             String description, Status status, Boolean latest, Boolean deleted,
@@ -95,7 +110,7 @@ public class NameElementUtil {
 
         return new NameElement(
                 uuid,
-                systemgroup, system, subsystem, devicetype,
+                parentsystemstructure, parentdevicestructure,
                 systemstructure, devicestructure,
                 index, name,
                 description, status, latest, deleted,
@@ -154,13 +169,11 @@ public class NameElementUtil {
         return true;
     }
 
-    public static boolean hasSameContent(NameElement nameElement, Name name) {
+    public static boolean hasSameContent(NameElement nameElement, Name name, HolderIRepositories holderIRepositories) {
         /*
            NameElement
-               x systemgroup
-               x system
-               x subsystem
-               x devicetype
+               x parentsystemstructure (system group, system, subsystem)
+               x parentdevicestructure (device type)
                x index
                x name
            Name
@@ -172,28 +185,40 @@ public class NameElementUtil {
                x convention_name
          */
 
-        if (!hasSameContent(nameElement, (NameStructure) name))
-            return false;
+        // find out system group, system, subsystem
+        //     one of the three expected to be non-null, other two expected to be null
+        SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+        System      system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+        Subsystem   subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
 
-        if (nameElement.getSystemgroup() == null) {
-            if (name.getSystemgroupUuid() != null)
+        // get mnemonic path for system structure
+        // compare with system structure part of convention name to find out if parent system structure has changed
+        String systemstructure = null;
+        if (subsystem != null) {
+            system = holderIRepositories.getSystemRepository().findLatestByUuid(subsystem.getParentUuid().toString());
+            if (system == null) {
                 return false;
-        } else if (!nameElement.getSystemgroup().equals(name.getSystemgroupUuid()))
+            }
+            systemstructure = system.getMnemonic() + "-" + subsystem.getMnemonic();
+        } else if (system != null) {
+            systemstructure = system.getMnemonic();
+        } else if (systemGroup != null) {
+            systemstructure = systemGroup.getMnemonic();
+        }
+        if (StringUtils.isEmpty(systemstructure)) {
             return false;
-        if (nameElement.getSystem() == null) {
-            if (name.getSystemUuid() != null)
-                return false;
-        } else if (!nameElement.getSystem().equals(name.getSystemUuid()))
+        }
+
+        if (!hasSameContent(nameElement, (NameStructure) name))
             return false;
-        if (nameElement.getSubsystem() == null) {
-            if (name.getSubsystemUuid() != null)
-                return false;
-        } else if (!nameElement.getSubsystem().equals(name.getSubsystemUuid()))
+
+        if (!StringUtils.equals(systemstructure, NamingConventionUtil.extractMnemonicPathSystemStructure(name.getConventionName()))) {
             return false;
-        if (nameElement.getDevicetype() == null) {
+        }
+        if (nameElement.getParentdevicestructure() == null) {
             if (name.getDevicetypeUuid() != null)
                 return false;
-        } else if (!nameElement.getDevicetype().equals(name.getDevicetypeUuid()))
+        } else if (!nameElement.getParentdevicestructure().equals(name.getDevicetypeUuid()))
             return false;
         if (nameElement.getIndex() == null) {
             if (name.getInstanceIndex() != null)
diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java
index d6c9a92c20803c25e35cd0b45146f0fc16a0615c..c9e3b92d1848593f6484ada5020a1e46878d443a 100644
--- a/src/main/java/org/openepics/names/util/ValidateUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateUtil.java
@@ -45,6 +45,11 @@ import org.springframework.http.HttpStatus;
  */
 public class ValidateUtil {
 
+    // note
+    //     handling of system structure, device structure
+    //         parent system structure uuid (system group, system, subsystem) - ability to find structure
+    //         parent device structure uuid (device type)
+
     private static enum NameChoice      {CREATE, UPDATE, DELETE};
     private static enum StructureChoice {CREATE, UPDATE, DELETE, APPROVE, REJECT, CANCEL};
 
@@ -286,23 +291,21 @@ public class ValidateUtil {
     private static void validateNameElementInput(NameElement nameElement, NameChoice nameChoice) {
         // attributes
         //     not check
-        //    	   uuid                   - n.a set server side
-        //    	   systemstructure        - n.a system structure mnemonic path
-        //    	   devicestructure        - n.a device structure mnemonic path
-        //    	   devicetype             - possibly validate uuid also validate data
-        //    	   index                  - possibly also validate data
-        //    	   name                   - possibly also validate data
-        //    	   status                 - n.a. set server side
-        //    	   latest                 - n.a. set server side
-        //    	   deleted                - n.a. set server side
-        //    	   when                   - n.a. set server side
-        //    	   who                    - n.a. set server side
+        //    	   uuid                  - n.a set server side
+        //    	   parentdevicestructure - possibly validate uuid also validate data
+        //    	   systemstructure       - n.a system structure mnemonic path
+        //    	   devicestructure       - n.a device structure mnemonic path
+        //    	   index                 - possibly also validate data
+        //    	   name                  - possibly also validate data
+        //    	   status                - n.a. set server side
+        //    	   latest                - n.a. set server side
+        //    	   deleted               - n.a. set server side
+        //    	   when                  - n.a. set server side
+        //    	   who                   - n.a. set server side
         //     check
-        //    	   systemgroup            - 1 either 1,2,3 possibly validate uuid also validate data
-        //    	   system                 - 2 either 1,2,3 possibly validate uuid also validate data
-        //    	   subsystem              - 3 either 1,2,3 possibly validate uuid also validate data
-        //    	   description            - required
-        //    	   comment                - required
+        //         parentsystemstructure - required
+        //    	   description           - required
+        //    	   comment               - required
 
         if (nameElement == null || nameChoice == null) {
             return;
@@ -315,20 +318,8 @@ public class ValidateUtil {
         validateInputDescription(nameElement.getDescription());
         validateInputComment(nameElement.getComment());
 
-        // uuid vs string
-        int count = 0;
-        if (nameElement.getSystemgroup() != null) {
-            count++;
-        };
-        if (nameElement.getSystem() != null) {
-            count++;
-        }
-        if (nameElement.getSubsystem() != null) {
-            count++;
-        }
-        // correct
-        ValidateUtil.validateCondition(count == 1, HttpStatus.BAD_REQUEST,
-                "system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+        ValidateUtil.validateCondition(nameElement.getParentsystemstructure() != null, HttpStatus.BAD_REQUEST,
+                "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
     }
 
     // ----------------------------------------------------------------------------------------------------
@@ -428,9 +419,9 @@ public class ValidateUtil {
         }
 
         SystemGroup systemGroup = null;
-        System system           = null;
-        Subsystem subsystem     = null;
-        DeviceType deviceType   = null;
+        System      system      = null;
+        Subsystem   subsystem   = null;
+        DeviceType  deviceType  = null;
 
         String mnemonicPathSystemStructure = null;
         String mnemonicPathDeviceStructure = null;
@@ -438,24 +429,24 @@ public class ValidateUtil {
         boolean condition = true;
 
         if (NameChoice.CREATE.equals(nameChoice) || NameChoice.UPDATE.equals(nameChoice)) {
+            // find out system group, system, subsystem
+            //     one of the three expected to be non-null, other two expected to be null
+            systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            system      = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+            subsystem   = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getParentsystemstructure().toString());
+
             // system structure
-            if (nameElement.getSystemgroup() != null) {
-                systemGroup = holderIRepositories.getSystemGroupRepository().findLatestByUuid(nameElement.getSystemgroup().toString());
-                ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
+            if (systemGroup != null) {
                 ValidateUtil.validateCondition(!systemGroup.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
                 mnemonicPathSystemStructure = systemGroup.getMnemonic();
-            } else if (nameElement.getSystem() != null) {
-                system = holderIRepositories.getSystemRepository().findLatestByUuid(nameElement.getSystem().toString());
-                ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
+            } else if (system != null) {
                 ValidateUtil.validateCondition(!system.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
                 mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(system, holder);
                 String[] mnemonicpath = NamingConventionUtil.string2MnemonicPath(mnemonicPathSystemStructure);
                 mnemonicPathSystemStructure = mnemonicpath != null && mnemonicpath.length == 2
                         ? mnemonicpath[1]
                         : null;
-            } else if (nameElement.getSubsystem() != null) {
-                subsystem = holderIRepositories.getSubsystemRepository().findLatestByUuid(nameElement.getSubsystem().toString());
-                ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
+            } else if (subsystem != null) {
                 ValidateUtil.validateCondition(!subsystem.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
                 mnemonicPathSystemStructure = StructureUtil.getMnemonicPath(subsystem, holder);
                 String[] mnemonicpath = NamingConventionUtil.string2MnemonicPath(mnemonicPathSystemStructure);
@@ -470,8 +461,8 @@ public class ValidateUtil {
             // mnemonicPathSystemStructure = NamingConventionUtil.mnemonicPathSystemStructure4Name(mnemonicPathSystemStructure);
 
             // device structure
-            if (nameElement.getDevicetype() != null) {
-                deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getDevicetype().toString());
+            if (nameElement.getParentdevicestructure() != null) {
+                deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
                 ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
                 ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
                 mnemonicPathDeviceStructure = StructureUtil.getMnemonicPath(deviceType, holder);
@@ -920,54 +911,54 @@ public class ValidateUtil {
 
         if (StructureChoice.UPDATE.equals(structureChoice) || StructureChoice.DELETE.equals(structureChoice)) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
-            	List<SystemGroup> systemGroups = null;
+                List<SystemGroup> systemGroups = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
-            	List<System> systems = null;
+                List<System> systems = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systems != null && systems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-            	List<Subsystem> subsystems = null;
+                List<Subsystem> subsystems = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
-            	List<Discipline> disciplines = null;
+                List<Discipline> disciplines = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-            	List<DeviceGroup> deviceGroups = null;
+                List<DeviceGroup> deviceGroups = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-            	List<DeviceType> deviceTypes = null;
+                List<DeviceType> deviceTypes = null;
 
-            	// status, uuid
+                // status, uuid
                 // status, not deleted, uuid
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
@@ -976,27 +967,27 @@ public class ValidateUtil {
             }
         } else if (StructureChoice.APPROVE.equals(structureChoice) || StructureChoice.CANCEL.equals(structureChoice) || StructureChoice.REJECT.equals(structureChoice)) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-            	// status, uuid
+                // status, uuid
                 List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
             }
@@ -1057,7 +1048,7 @@ public class ValidateUtil {
                     validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
                 }
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
-            	List<SystemGroup> systemGroups = null;
+                List<SystemGroup> systemGroups = null;
                 List<System> systems = null;
                 String message = null;
 
@@ -1083,7 +1074,7 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-            	List<System> systems = null;
+                List<System> systems = null;
                 List<Subsystem> subsystems = null;
                 String message = null;
 
@@ -1128,8 +1119,8 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-            	List<Discipline> disciplines = null;
-            	String message = null;
+                List<Discipline> disciplines = null;
+                String message = null;
 
                 // status, parent
                 message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
@@ -1142,7 +1133,7 @@ public class ValidateUtil {
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-            	List<DeviceGroup> deviceGroups = null;
+                List<DeviceGroup> deviceGroups = null;
                 List<DeviceType> deviceTypes = null;
                 String message = null;
 
@@ -1170,11 +1161,11 @@ public class ValidateUtil {
             }
         } else if (StructureChoice.APPROVE.equals(structureChoice)) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
-            	List<SystemGroup> toBeApproved = null;
-            	List<SystemGroup> systemGroups = null;
+                List<SystemGroup> toBeApproved = null;
+                List<SystemGroup> systemGroups = null;
                 String message = ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
 
-            	// to be approved - status, uuid
+                // to be approved - status, uuid
                 toBeApproved = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
 
@@ -1188,12 +1179,12 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
-            	List<SystemGroup> systemGroups = null;
-            	List<System> toBeApproved = null;
-            	List<System> systems = null;
-            	String message = null;
+                List<SystemGroup> systemGroups = null;
+                List<System> toBeApproved = null;
+                List<System> systems = null;
+                String message = null;
 
-            	// to be approved - status, uuid
+                // to be approved - status, uuid
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
@@ -1214,12 +1205,12 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-            	List<System> systems = null;
-            	List<Subsystem> toBeApproved = null;
-            	List<Subsystem> subsystems = null;
-            	String message = null;
+                List<System> systems = null;
+                List<Subsystem> toBeApproved = null;
+                List<Subsystem> subsystems = null;
+                String message = null;
 
-            	// to be approved - status, uuid
+                // to be approved - status, uuid
                 message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
@@ -1240,8 +1231,8 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
-            	List<Discipline> toBeApproved = null;
-            	List<Discipline> disciplines = null;
+                List<Discipline> toBeApproved = null;
+                List<Discipline> disciplines = null;
                 String message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
 
                 // to be approved - status, uuid
@@ -1258,11 +1249,11 @@ public class ValidateUtil {
                 validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
                 validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-            	List<Discipline> disciplines = null;
-            	List<DeviceGroup> toBeApproved = null;
-            	String message = null;
+                List<Discipline> disciplines = null;
+                List<DeviceGroup> toBeApproved = null;
+                String message = null;
 
-            	// to be approved - status, uuid
+                // to be approved - status, uuid
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
@@ -1278,13 +1269,13 @@ public class ValidateUtil {
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details);
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-            	List<DeviceGroup> deviceGroups = null;
-            	List<DeviceType> toBeApproved = null;
-            	List<DeviceType> deviceTypes = null;
-            	String message = null;
+                List<DeviceGroup> deviceGroups = null;
+                List<DeviceType> toBeApproved = null;
+                List<DeviceType> deviceTypes = null;
+                String message = null;
 
-            	// to be approved - status, uuid
-            	message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
+                // to be approved - status, uuid
+                message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
                 ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
 
diff --git a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
index a433eb0319f610636241276962ad948b925df3c9..235dce306f55ec8c03b6e23349d3874fce55efcd 100644
--- a/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
+++ b/src/test/java/org/openepics/names/docker/ITUtilNameElement.java
@@ -128,10 +128,8 @@ public class ITUtilNameElement {
      *
      * @param actual name element
      * @param expectedUuid expected uuid
-     * @param expectedSystemgroup expected system group
-     * @param expectedSystem expected system
-     * @param expectedSubsystem expected subsystem
-     * @param expectedDevicetype expected device type
+     * @param expectedParentSystemstructure expected parent system structure uuid (system group, system, subsystem)
+     * @param expectedParentDevicestructure parent device structure uuid (device type)
      * @param expectedSystemstructure expected system structure
      * @param expectedDevicestructure expected device structure
      * @param expectedIndex expected index
@@ -144,17 +142,15 @@ public class ITUtilNameElement {
      * @param expectedComment expected comment
      */
     static void assertContent(NameElement actual,
-            UUID expectedUuid, UUID expectedSystemgroup, UUID expectedSystem, UUID expectedSubsystem, UUID expectedDevicetype,
+            UUID expectedUuid, UUID expectedParentSystemstructure, UUID expectedParentDevicestructure,
             String expectedSystemstructure, String expectedDevicestructure,
             String expectedIndex, String expectedName,
             String expectedDescription, Status expectedStatus, Boolean expectedIsLatest, Boolean expectedIsDeleted,
             String expectedWho, String expectedComment) {
         assertNotNull(actual);
         assertEquals(expectedUuid, actual.getUuid());
-        assertEquals(expectedSystemgroup, actual.getSystemgroup());
-        assertEquals(expectedSystem, actual.getSystem());
-        assertEquals(expectedSubsystem, actual.getSubsystem());
-        assertEquals(expectedDevicetype, actual.getDevicetype());
+        assertEquals(expectedParentSystemstructure, actual.getParentsystemstructure());
+        assertEquals(expectedParentDevicestructure, actual.getParentdevicestructure());
         assertEquals(expectedSystemstructure, actual.getSystemstructure());
         assertEquals(expectedDevicestructure, actual.getDevicestructure());
         assertEquals(expectedIndex, actual.getIndex());
@@ -451,7 +447,7 @@ public class ITUtilNameElement {
             nameElement.setUuid(uuid);
 
             ITUtilNameElement.assertContent(createdNameElement,
-                    uuid, nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
                     nameElement.getSystemstructure(), nameElement.getDevicestructure(),
                     nameElement.getIndex(), nameElement.getName(),
                     nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.FALSE,
@@ -499,7 +495,7 @@ public class ITUtilNameElement {
             nameElement.setUuid(uuid);
 
             ITUtilNameElement.assertContent(updatedNameElement,
-                    uuid, nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
                     nameElement.getSystemstructure(), nameElement.getDevicestructure(),
                     nameElement.getIndex(), nameElement.getName(),
                     nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.FALSE,
@@ -547,7 +543,7 @@ public class ITUtilNameElement {
             nameElement.setUuid(uuid);
 
             ITUtilNameElement.assertContent(deletedNameElement,
-                    uuid, nameElement.getSystemgroup(), nameElement.getSystem(), nameElement.getSubsystem(), nameElement.getDevicetype(),
+                    uuid, nameElement.getParentsystemstructure(), nameElement.getParentdevicestructure(),
                     nameElement.getSystemstructure(), nameElement.getDevicestructure(),
                     nameElement.getIndex(), nameElement.getName(),
                     nameElement.getDescription(), nameElement.getStatus(), Boolean.TRUE, Boolean.TRUE,
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index c15cf614aa1e67c2637f449c27f36de610d54f62..750539922e3d59ef98d1169a7129cfc8e1e8b262 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -192,7 +192,7 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
-            nameElement.setSubsystem(subsystem010PRL);
+            nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             nameElement.setName("RFQ-010PRL");
@@ -208,19 +208,19 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
-            nameElement.setDevicetype(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             // ----------
 
-            nameElement.setSubsystem(null);
+            nameElement.setParentsystemstructure(null);
             nameElement.setName(null);
             nameElement.setIndex(null);
-            nameElement.setDevicetype(null);
+            nameElement.setParentdevicestructure(null);
 
             // ----------
 
-            nameElement.setSystem(systemRFQ);
+            nameElement.setParentsystemstructure(systemRFQ);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             nameElement.setName("RFQ");
@@ -236,19 +236,19 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
-            nameElement.setDevicetype(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             // ----------
 
-            nameElement.setSystem(null);
+            nameElement.setParentsystemstructure(null);
             nameElement.setName(null);
             nameElement.setIndex(null);
-            nameElement.setDevicetype(null);
+            nameElement.setParentdevicestructure(null);
 
             // ----------
 
-            nameElement.setSystemgroup(systemGroupAcc);
+            nameElement.setParentsystemstructure(systemGroupAcc);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
 
             nameElement.setName("Acc");
@@ -264,10 +264,10 @@ public class NamesIT {
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
             ITUtilNameElement.assertCreate(nameElement, HttpURLConnection.HTTP_BAD_REQUEST);
 
-            nameElement.setDevicetype(deviceTypeTT);
+            nameElement.setParentdevicestructure(deviceTypeTT);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.FALSE);
 
-            nameElement.setDevicetype(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, Boolean.TRUE);
         } catch (IOException e) {
             fail();
@@ -300,7 +300,7 @@ public class NamesIT {
 
             nameElement = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "052", "RFQ-010PRL:EMR-RFA-052",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -308,7 +308,7 @@ public class NamesIT {
 
             nameElement2 = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "062", "RFQ-010PRL:EMR-RFA-061",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -360,7 +360,7 @@ public class NamesIT {
 
             nameElement = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "053", "RFQ-010PRL:EMR-RFA-053",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -386,36 +386,36 @@ public class NamesIT {
             nameElement.setComment("checkUpdate");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
-            nameElement.setSubsystem(null);
+            nameElement.setParentsystemstructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setSystemgroup(systemGroupAcc);
+            nameElement.setParentsystemstructure(systemGroupAcc);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setSystemgroup(null);
-            nameElement.setSystem(systemRFQ);
+            nameElement.setParentsystemstructure(null);
+            nameElement.setParentsystemstructure(systemRFQ);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setSystem(null);
-            nameElement.setSubsystem(subsystemN1U1);
+            nameElement.setParentsystemstructure(null);
+            nameElement.setParentsystemstructure(subsystemN1U1);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setSubsystem(subsystem010PRL);
+            nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
-            nameElement.setDevicetype(null);
+            nameElement.setParentdevicestructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setDevicetype(deviceGroupEMR);
+            nameElement.setParentdevicestructure(deviceGroupEMR);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setDevicetype(deviceTypeFS);
+            nameElement.setParentdevicestructure(deviceTypeFS);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setDevicetype(deviceTypeTT);
+            nameElement.setParentdevicestructure(deviceTypeTT);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.FALSE);
 
-            nameElement.setDevicetype(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.UPDATE, Boolean.TRUE);
 
             nameElement.setName(null);
@@ -457,7 +457,7 @@ public class NamesIT {
 
             nameElement = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "054", "RFQ-010PRL:EMR-RFA-054",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -506,7 +506,7 @@ public class NamesIT {
 
             nameElement = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "055", "RFQ-010PRL:EMR-RFA-055",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -532,27 +532,27 @@ public class NamesIT {
             nameElement.setComment("checkDelete");
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
-            nameElement.setSystemgroup(systemGroupAcc);
+            nameElement.setParentsystemstructure(systemGroupAcc);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
 
-            nameElement.setSystemgroup(null);
+            nameElement.setParentsystemstructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
-            nameElement.setSystem(systemRFQ);
+            nameElement.setParentsystemstructure(systemRFQ);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
 
-            nameElement.setSystem(null);
+            nameElement.setParentsystemstructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
-            nameElement.setSubsystem(null);
+            nameElement.setParentsystemstructure(null);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.FALSE);
 
-            nameElement.setSubsystem(subsystem010PRL);
+            nameElement.setParentsystemstructure(subsystem010PRL);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             // device type not used for validation
 
-            nameElement.setDevicetype(deviceTypeRFA);
+            nameElement.setParentdevicestructure(deviceTypeRFA);
             ITUtilNameElement.assertValidate(nameElement, NameChoice.DELETE, Boolean.TRUE);
 
             // name, index not used for validation
@@ -584,7 +584,7 @@ public class NamesIT {
 
             nameElement = new NameElement(
                     null,
-                    null, null, subsystem010PRL, deviceTypeRFA,
+                    subsystem010PRL, deviceTypeRFA,
                     "RFQ-010PRL", "EMR-RFA",
                     "056", "RFQ-010PRL:EMR-RFA-056",
                     "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -634,7 +634,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "001", "RFQ-010:EMR-FS-001",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -647,7 +647,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "002", "RFQ-010:EMR-FS-002",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -657,7 +657,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "003", "RFQ-010:EMR-FS-003",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -666,7 +666,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "004", "RFQ-010:EMR-FS-004",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -675,7 +675,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "005", "RFQ-010:EMR-FS-005",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -684,7 +684,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "006", "RFQ-010:EMR-FS-006",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -693,7 +693,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "007", "RFQ-010:EMR-FS-007",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
@@ -703,7 +703,7 @@ public class NamesIT {
 
         nameElement = new NameElement(
                 null,
-                null, null, subsystem010, deviceTypeFS,
+                subsystem010, deviceTypeFS,
                 "RFQ-010", "EMR-FS",
                 "008", "RFQ-010:EMR-FS-008",
                 "description", Status.APPROVED, Boolean.TRUE, Boolean.FALSE,
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 68c234546155499c12a05a7de5281601bb160584..e298a2b9b7ad59f266a5cfd4ad6d00e13e7bdab6 100644
--- a/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
+++ b/src/test/java/org/openepics/names/docker/complex/NamesInstanceIndexIT.java
@@ -53,12 +53,12 @@ import org.testcontainers.junit.jupiter.Testcontainers;
 @Testcontainers
 public class NamesInstanceIndexIT {
 
-	// note
-	//     disciplines
-	//         P&ID
-	//         Scientific
-	//     mnemonic path P&ID numeric
-	//     see NamingConventionUtil
+    // note
+    //     disciplines
+    //         P&ID
+    //         Scientific
+    //     mnemonic path P&ID numeric
+    //     see NamingConventionUtil
 
     @Container
     public static final DockerComposeContainer<?> ENVIRONMENT =
@@ -68,7 +68,7 @@ public class NamesInstanceIndexIT {
     private static UUID systemGroupAcc  = null;
     private static UUID systemRFQ       = null;
     private static UUID subsystem010PRL = null;
-	private static UUID subsystem010    = null;
+    private static UUID subsystem010    = null;
     private static UUID subsystemN1U1   = null;
 
     private static UUID disciplineCryo  = null;
@@ -598,11 +598,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_Cryo_IOC);
+      nameElement.setParentdevicestructure(deviceType_Cryo_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-051",        "051",       Boolean.TRUE);
 
@@ -661,7 +661,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_Cryo_RFA);
+      nameElement.setParentdevicestructure(deviceType_Cryo_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Cryo-RFA-051",        "051",       Boolean.TRUE);
 
@@ -737,11 +737,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_EMR_IOC);
+      nameElement.setParentdevicestructure(deviceType_EMR_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-051",        "051",       Boolean.TRUE);
 
@@ -800,7 +800,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_EMR_RFA);
+      nameElement.setParentdevicestructure(deviceType_EMR_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:EMR-RFA-051",        "051",       Boolean.TRUE);
 
@@ -876,11 +876,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_HVAC_IOC);
+      nameElement.setParentdevicestructure(deviceType_HVAC_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-051",        "051",       Boolean.TRUE);
 
@@ -939,7 +939,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_HVAC_RFA);
+      nameElement.setParentdevicestructure(deviceType_HVAC_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:HVAC-RFA-051",        "051",       Boolean.TRUE);
 
@@ -1015,11 +1015,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_Proc_IOC);
+      nameElement.setParentdevicestructure(deviceType_Proc_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-051",        "051",       Boolean.TRUE);
 
@@ -1078,7 +1078,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_Proc_RFA);
+      nameElement.setParentdevicestructure(deviceType_Proc_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Proc-RFA-051",        "051",       Boolean.TRUE);
 
@@ -1154,11 +1154,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_SC_IOC);
+      nameElement.setParentdevicestructure(deviceType_SC_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-051",        "051",       Boolean.TRUE);
 
@@ -1217,7 +1217,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_SC_RFA);
+      nameElement.setParentdevicestructure(deviceType_SC_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:SC-RFA-051",        "051",       Boolean.TRUE);
 
@@ -1293,11 +1293,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_Vac_IOC);
+      nameElement.setParentdevicestructure(deviceType_Vac_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-051",        "051",       Boolean.TRUE);
 
@@ -1356,7 +1356,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_Vac_RFA);
+      nameElement.setParentdevicestructure(deviceType_Vac_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:Vac-RFA-051",        "051",       Boolean.TRUE);
 
@@ -1432,11 +1432,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_WtrC_IOC);
+      nameElement.setParentdevicestructure(deviceType_WtrC_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-051",        "051",       Boolean.TRUE);
 
@@ -1495,7 +1495,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_WtrC_RFA);
+      nameElement.setParentdevicestructure(deviceType_WtrC_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:WtrC-RFA-051",        "051",       Boolean.TRUE);
 
@@ -1571,11 +1571,11 @@ public class NamesInstanceIndexIT {
       NameElement nameElement = new NameElement();
       nameElement.setDescription("description");
       nameElement.setComment("comment");
-      nameElement.setSubsystem(subsystem010PRL);
+      nameElement.setParentsystemstructure(subsystem010PRL);
 
       // ----------------------------------------------------------------------------------------------------
 
-      nameElement.setDevicetype(deviceType_BMD_IOC);
+      nameElement.setParentdevicestructure(deviceType_BMD_IOC);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-051",        "051",       Boolean.TRUE);
 
@@ -1634,7 +1634,7 @@ public class NamesInstanceIndexIT {
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-abc123",     "abc123",    Boolean.FALSE);
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-IOC-a!",         "a!",        Boolean.FALSE);
 
-      nameElement.setDevicetype(deviceType_BMD_RFA);
+      nameElement.setParentdevicestructure(deviceType_BMD_RFA);
 
       ITUtilNameElement.assertValidate(nameElement, NameChoice.CREATE, "RFQ-010PRL:BMD-RFA-051",        "051",       Boolean.TRUE);
 
diff --git a/src/test/java/org/openepics/names/util/NameElementUtilTest.java b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
index 569d3e01ad99815a8f4d9356befe33b32de45e44..1751b8856dca62a033c74e1a45a7ef6c8dbc2046 100644
--- a/src/test/java/org/openepics/names/util/NameElementUtilTest.java
+++ b/src/test/java/org/openepics/names/util/NameElementUtilTest.java
@@ -49,10 +49,8 @@ public class NameElementUtilTest {
 
         assertNotNull(nameElement);
         assertEquals(null, nameElement.getUuid());
-        assertEquals(null, nameElement.getSystemgroup());
-        assertEquals(null, nameElement.getSystem());
-        assertEquals(null, nameElement.getSubsystem());
-        assertEquals(null, nameElement.getDevicetype());
+        assertEquals(null, nameElement.getParentsystemstructure());
+        assertEquals(null, nameElement.getParentdevicestructure());
         assertEquals(null, nameElement.getSystemstructure());
         assertEquals(null, nameElement.getDevicestructure());
         assertEquals(null, nameElement.getIndex());
@@ -73,7 +71,7 @@ public class NameElementUtilTest {
     public void getNameElementContent() {
         NameElement nameElement = NameElementUtil.getNameElement(
                 null,
-                null, null, null, null,
+                null, null,
                 null, null,
                 null, null,
                 null, null, null, null,
@@ -81,10 +79,8 @@ public class NameElementUtilTest {
 
         assertNotNull(nameElement);
         assertEquals(null, nameElement.getUuid());
-        assertEquals(null, nameElement.getSystemgroup());
-        assertEquals(null, nameElement.getSystem());
-        assertEquals(null, nameElement.getSubsystem());
-        assertEquals(null, nameElement.getDevicetype());
+        assertEquals(null, nameElement.getParentsystemstructure());
+        assertEquals(null, nameElement.getParentdevicestructure());
         assertEquals(null, nameElement.getSystemstructure());
         assertEquals(null, nameElement.getDevicestructure());
         assertEquals(null, nameElement.getIndex());