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 c22d17a9cd01092ced007769d1ff40dddb752679..6a55f8e7fbecf5f990b80e27067defafc0bd0ba8 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
@@ -683,7 +683,7 @@ public interface IStructures {
             value = "/history",
             produces = {"application/json"})
     public ResponsePageStructureElements readStructuresHistory(
-            @Parameter(in = ParameterIn.QUERY, description = "search by type of structure") @RequestParam(required = false) Type type,
+            @Parameter(in = ParameterIn.QUERY, description = "search by type of structure") @RequestParam(required = true) Type type,
             @Parameter(in = ParameterIn.QUERY, description = "find by uuid") @RequestParam(required = false) String uuid,
             @Parameter(in = ParameterIn.QUERY, description = "search by parent uuid") @RequestParam(required = false) String parent,
             @Parameter(in = ParameterIn.QUERY, description = "search by name") @RequestParam(required = false) String name,
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 a13916cd0b2c27b4d175dc59b1f53b81bea34145..7144b6d6e0b565fd7ae287336472b35d290fe3e9 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -261,6 +261,7 @@ public class StructuresController implements IStructures {
         // read names
 
         try {
+            ValidateUtil.validateInputType(type);
             ValidateUtil.validateInputAvailable(
                     !ValidateUtil.areAllNull(uuid, parent, name, mnemonic, mnemonicEquivalence, description, who));
             ValidateStructureElementUtil.validateStructuresInputRead(
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index cb099d6dd6bf42dcc540f877056d867e74271e21..4aab2bb7f4f75db2556751cc49ed976d5a34bffa 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -269,6 +269,9 @@ public class NamesService {
             totalCount = nameRepository.countNames(deleted, uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description, who, includeHistory);
         }
 
+        // one name entry will give one name element
+        //     history does not affect totalCount, sorting, pagination
+
         final List<NameElement> nameElements = NameElementUtil.getNameElements(names);
 
         ResponsePageNameElements response = new ResponsePageNameElements(nameElements, totalCount, nameElements.size(), offset, limit);
diff --git a/src/main/java/org/openepics/names/service/StructuresService.java b/src/main/java/org/openepics/names/service/StructuresService.java
index 6b4de7ac6149c458e826d21594e4af18ffb9bbf1..48c9d09a4ad7d066ce2bd13f3f836175b043033f 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -261,6 +261,18 @@ public class StructuresService {
         // initiate holder of system and device structure content, for performance reasons
         HolderSystemDeviceStructure holderStructure = new HolderSystemDeviceStructure(holderIRepositories);
 
+        // one structure entry will give one or two structure elements
+        //     depends on history or not - history may give one or two elements, if not history then one element
+        //     history affects totalCount, sorting, pagination
+        //         additional effects (entries) if type is not given
+        //         totalCount = Long.valueOf(structureElements.size())
+        //         this affects result
+        //         -->
+        //         actions to mitigate / handle
+        //             have type as required parameter
+        //             have pagination for history in StructuresService and not in Repository classes
+        //             analyse and decide on sorting for history
+
         final List<StructureElement> structureElements = Lists.newArrayList();
         Long totalCount = 0L;
 
@@ -470,6 +482,9 @@ public class StructuresService {
             LOGGER.log(Level.FINE, MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_STRUCTURES_HISTORY, "limit", limit));
         }
 
+        // one structure entry will give one or two structure elements
+        //     have type as required parameter for history
+
         boolean typeSystemGroup = Type.SYSTEMGROUP.equals(type);
         boolean typeSystem      = Type.SYSTEM.equals(type);
         boolean typeSubsystem   = Type.SUBSYSTEM.equals(type);
@@ -485,7 +500,7 @@ public class StructuresService {
         //     not possible to search on mnemonic path for history
 
         final List<StructureElement> structureElements = Lists.newArrayList();
-        ResponsePageStructureElements response = null;
+        ResponsePageStructureElements response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);;
         if (typeEither) {
             if (typeSystemGroup) {
                 response = readStructures(Type.SYSTEMGROUP, null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
@@ -500,28 +515,7 @@ public class StructuresService {
             } else if (typeDeviceType) {
                 response = readStructures(Type.DEVICETYPE,  null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             }
-        } else {
-            // go through all structures and see if / where uuid is found
-            //     uuid in 0 or 1 of structures
-
-            ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  null, null, uuid, parent, name, mnemonic, mnemonicEquivalence, null, description, who, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-
-            structureElements.addAll(responseSystemGroup.getList());
-            structureElements.addAll(responseSystem.getList());
-            structureElements.addAll(responseSubsystem.getList());
-            structureElements.addAll(responseDiscipline.getList());
-            structureElements.addAll(responseDeviceGroup.getList());
-            structureElements.addAll(responseDeviceType.getList());
-
-            // uuid is in max one structure
-            response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);
         }
-
         return response;
     }
 
@@ -558,7 +552,7 @@ public class StructuresService {
         // therefore empty mnemonic path for history for structure
 
         final List<StructureElement> structureElements = Lists.newArrayList();
-        ResponsePageStructureElements response = null;
+        ResponsePageStructureElements response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);;
         if (typeEither) {
             if (typeSystemGroup) {
                 response = readStructures(Type.SYSTEMGROUP, null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
@@ -574,27 +568,16 @@ public class StructuresService {
                 response = readStructures(Type.DEVICETYPE,  null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
             }
         } else {
-            // go through all structures and see if / where uuid is found
+            // go through structures and see if / where uuid is found
             //     uuid in 0 or 1 of structures
-
-            ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-            ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
-
-            structureElements.addAll(responseSystemGroup.getList());
-            structureElements.addAll(responseSystem.getList());
-            structureElements.addAll(responseSubsystem.getList());
-            structureElements.addAll(responseDiscipline.getList());
-            structureElements.addAll(responseDeviceGroup.getList());
-            structureElements.addAll(responseDeviceType.getList());
-
-            // uuid is in max one structure
-            response = new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);
+            //     uuid is in max one structure
+            response = readStructures(Type.SYSTEMGROUP, null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY);
+            response = response.getTotalCount() == 0 ? readStructures(Type.SYSTEM,      null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY) : response;
+            response = response.getTotalCount() == 0 ? readStructures(Type.SUBSYSTEM,   null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY) : response;
+            response = response.getTotalCount() == 0 ? readStructures(Type.DISCIPLINE,  null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY) : response;
+            response = response.getTotalCount() == 0 ? readStructures(Type.DEVICEGROUP, null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY) : response;
+            response = response.getTotalCount() == 0 ? readStructures(Type.DEVICETYPE,  null, null, uuid, null, null, null, null, null, null, null, Boolean.TRUE, orderBy, isAsc, offset, limit, StructureChoice.HISTORY) : response;
         }
-
         return response;
     }
 
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index 7abdac4bf0e1679928a591ca85be908162663d9e..5fda2dea5d04e569616e30b538f7dd6a62bf3dc4 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -978,101 +978,101 @@ class NamesIT {
             // read & search
             //     deleted, uuid, name, nameEquivalence, systemStructure, deviceStructure, index, description
             //     combination
-            ITUtilNameElement.assertRead("", 8, -1);
+            ITUtilNameElement.assertRead("", 13, -1);
 
-            ITUtilNameElement.assertRead("?deleted=false",                   6, -1);
-            ITUtilNameElement.assertRead("?deleted=true",                    2, -1);
+            ITUtilNameElement.assertRead("?deleted=false",                    11, -1);
+            ITUtilNameElement.assertRead("?deleted=true",                      2, -1);
 
-            ITUtilNameElement.assertRead("?uuid=" + deviceTypeFS.toString(), 0);
-            ITUtilNameElement.assertRead("?uuid=" + uuid.toString(),         1);
+            ITUtilNameElement.assertRead("?uuid=" + deviceTypeFS.toString(),   0);
+            ITUtilNameElement.assertRead("?uuid=" + uuid.toString(),           1);
 
-            ITUtilNameElement.assertRead("?name=RFQ-010:EMR-FS-005",         1);
-            ITUtilNameElement.assertRead("?name=RFQ-010%",                   8, -1);
-            ITUtilNameElement.assertRead("?name=RFQ-10%",                    0);
+            ITUtilNameElement.assertRead("?name=RFQ-010:EMR-FS-005",           1);
+            ITUtilNameElement.assertRead("?name=RFQ-010%",                    10, -1);
+            ITUtilNameElement.assertRead("?name=RFQ-10%",                      0);
 
-            ITUtilNameElement.assertRead("?nameEquivalence=RFQ-10%",         8, -1);
+            ITUtilNameElement.assertRead("?nameEquivalence=RFQ-10%",          10, -1);
 
-            ITUtilNameElement.assertRead("?systemStructure=RFQ-010",         6, -1);
-            ITUtilNameElement.assertRead("?systemStructure=RFQ-0",           0);
-            ITUtilNameElement.assertRead("?systemStructure=RFQ-0__",         6, -1);
-            ITUtilNameElement.assertRead("?systemStructure=RFQ-N1U1",        0, -1);
+            ITUtilNameElement.assertRead("?systemStructure=RFQ-010",           9, -1);
+            ITUtilNameElement.assertRead("?systemStructure=RFQ-0",             0);
+            ITUtilNameElement.assertRead("?systemStructure=RFQ-0__",           9, -1);
+            ITUtilNameElement.assertRead("?systemStructure=RFQ-N1U1",          1, -1);
 
-            ITUtilNameElement.assertRead("?deviceStructure=EMR-FS",          8);
-            ITUtilNameElement.assertRead("?deviceStructure=EMR-F",           0);
-            ITUtilNameElement.assertRead("?deviceStructure=EMR-F_",          8);
-            ITUtilNameElement.assertRead("?deviceStructure=EMR-TT",          0);
+            ITUtilNameElement.assertRead("?deviceStructure=EMR-FS",            8);
+            ITUtilNameElement.assertRead("?deviceStructure=EMR-F",             0);
+            ITUtilNameElement.assertRead("?deviceStructure=EMR-F_",            8);
+            ITUtilNameElement.assertRead("?deviceStructure=EMR-TT",            0);
 
             ITUtilNameElement.assertRead("?index=003", 1);
 
-            ITUtilNameElement.assertRead("?description=description",                   7, -1);
-            ITUtilNameElement.assertRead("?description=%description%",                 8, -1);
-            ITUtilNameElement.assertRead("?description=updated description",           0, -1);
-            ITUtilNameElement.assertRead("?description=updated description%",          1, -1);
-            ITUtilNameElement.assertRead("?description=updated description again",     1);
-
-            ITUtilNameElement.assertRead("?who=test who",                    8, -1);
-            ITUtilNameElement.assertRead("?who=test",                        0);
-            ITUtilNameElement.assertRead("?who=who",                         0);
-            ITUtilNameElement.assertRead("?who=test%",                       8, -1);
-            ITUtilNameElement.assertRead("?who=%who",                        8, -1);
-            ITUtilNameElement.assertRead("?who=%est%",                       8, -1);
-            ITUtilNameElement.assertRead("?who=%wh%",                        8, -1);
-            ITUtilNameElement.assertRead("?who=wh%",                         0);
-            ITUtilNameElement.assertRead("?who=asdf",                        0);
-            ITUtilNameElement.assertRead("?who=%asdf%",                      0);
+            ITUtilNameElement.assertRead("?description=description",                    7, -1);
+            ITUtilNameElement.assertRead("?description=%description%",                  8, -1);
+            ITUtilNameElement.assertRead("?description=updated description",            0, -1);
+            ITUtilNameElement.assertRead("?description=updated description%",           1, -1);
+            ITUtilNameElement.assertRead("?description=updated description again",      1);
+
+            ITUtilNameElement.assertRead("?who=test who",                     13, -1);
+            ITUtilNameElement.assertRead("?who=test",                          0);
+            ITUtilNameElement.assertRead("?who=who",                           0);
+            ITUtilNameElement.assertRead("?who=test%",                        13, -1);
+            ITUtilNameElement.assertRead("?who=%who",                         13, -1);
+            ITUtilNameElement.assertRead("?who=%est%",                        13, -1);
+            ITUtilNameElement.assertRead("?who=%wh%",                         13, -1);
+            ITUtilNameElement.assertRead("?who=wh%",                           0);
+            ITUtilNameElement.assertRead("?who=asdf",                          0);
+            ITUtilNameElement.assertRead("?who=%asdf%",                        0);
 
             ITUtilNameElement.assertRead("?nameEquivalence=RFQ-10%&deviceStructure=EMR-FS", 8);
 
             // name or uuid
             //     /{name}
-            ITUtilNameElement.assertRead("/" + systemGroupAcc.toString(),    0);
-            ITUtilNameElement.assertRead("/" + systemRFQ.toString(),         0);
-            ITUtilNameElement.assertRead("/" + subsystem010.toString(),      0);
-            ITUtilNameElement.assertRead("/" + disciplineEMR.toString(),     0);
-            ITUtilNameElement.assertRead("/" + deviceGroupEMR.toString(),    0);
-            ITUtilNameElement.assertRead("/" + deviceTypeFS.toString(),      0);
-            ITUtilNameElement.assertRead("/" + uuid.toString(),              1);
-            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-001",              1);
-            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0",                0);
-            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0__",              6);
-            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0%",               6);
+            ITUtilNameElement.assertRead("/" + systemGroupAcc.toString(),      0);
+            ITUtilNameElement.assertRead("/" + systemRFQ.toString(),           0);
+            ITUtilNameElement.assertRead("/" + subsystem010.toString(),        0);
+            ITUtilNameElement.assertRead("/" + disciplineEMR.toString(),       0);
+            ITUtilNameElement.assertRead("/" + deviceGroupEMR.toString(),      0);
+            ITUtilNameElement.assertRead("/" + deviceTypeFS.toString(),        0);
+            ITUtilNameElement.assertRead("/" + uuid.toString(),                1);
+            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-001",                1);
+            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0",                  0);
+            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0__",                6);
+            ITUtilNameElement.assertRead("/RFQ-010:EMR-FS-0%",                 6);
 
             // system structure mnemonic path
             //     /systemStructure/{mnemonicPath}
-            ITUtilNameElement.assertRead("/systemStructure/RFQ-010",         6, -1);
-            ITUtilNameElement.assertRead("/systemStructure/RFQ-0",           0);
-            ITUtilNameElement.assertRead("/systemStructure/RFQ-0__",         6, -1);
-            ITUtilNameElement.assertRead("/systemStructure/RFQ-N1U1",        0, -1);
+            ITUtilNameElement.assertRead("/systemStructure/RFQ-010",           7, -1);
+            ITUtilNameElement.assertRead("/systemStructure/RFQ-0",             0);
+            ITUtilNameElement.assertRead("/systemStructure/RFQ-0__",           7, -1);
+            ITUtilNameElement.assertRead("/systemStructure/RFQ-N1U1",          0, -1);
 
             // device structure mnemonic path
             //     /deviceStructure/{mnemonicPath}
-            ITUtilNameElement.assertRead("/deviceStructure/EMR-FS",          6);
-            ITUtilNameElement.assertRead("/deviceStructure/EMR-F",           0);
-            ITUtilNameElement.assertRead("/deviceStructure/EMR-F_",          6);
-            ITUtilNameElement.assertRead("/deviceStructure/EMR-TT",          0);
+            ITUtilNameElement.assertRead("/deviceStructure/EMR-FS",            6);
+            ITUtilNameElement.assertRead("/deviceStructure/EMR-F",             0);
+            ITUtilNameElement.assertRead("/deviceStructure/EMR-F_",            6);
+            ITUtilNameElement.assertRead("/deviceStructure/EMR-TT",            0);
 
             // history
             //     /history/{uuid}
-            ITUtilNameElement.assertRead("/history/" + systemGroupAcc.toString(),      0);
-            ITUtilNameElement.assertRead("/history/" + systemRFQ.toString(),           0);
-            ITUtilNameElement.assertRead("/history/" + subsystem010.toString(),        0);
-            ITUtilNameElement.assertRead("/history/" + disciplineEMR.toString(),       0);
-            ITUtilNameElement.assertRead("/history/" + deviceGroupEMR.toString(),      0);
-            ITUtilNameElement.assertRead("/history/" + deviceTypeFS.toString(),        0);
-            ITUtilNameElement.assertRead("/history/" + uuid.toString(),                3);
-            ITUtilNameElement.assertRead("/history/" + uuid2.toString(),               1);
+            ITUtilNameElement.assertRead("/history/" + systemGroupAcc.toString(),       0);
+            ITUtilNameElement.assertRead("/history/" + systemRFQ.toString(),            0);
+            ITUtilNameElement.assertRead("/history/" + subsystem010.toString(),         0);
+            ITUtilNameElement.assertRead("/history/" + disciplineEMR.toString(),        0);
+            ITUtilNameElement.assertRead("/history/" + deviceGroupEMR.toString(),       0);
+            ITUtilNameElement.assertRead("/history/" + deviceTypeFS.toString(),         0);
+            ITUtilNameElement.assertRead("/history/" + uuid.toString(),                 3);
+            ITUtilNameElement.assertRead("/history/" + uuid2.toString(),                1);
 
             //     /history?parameter=value
             //         parameter must be available
-            ITUtilNameElement.assertRead("/history?uuid=" + uuid.toString(),           3);
-            ITUtilNameElement.assertRead("/history?uuid=" + uuid2.toString(),          1);
-            ITUtilNameElement.assertRead("/history?name=%010%",                       14, -1);
-            ITUtilNameElement.assertRead("/history?nameEquivalence=RFQ-10%",          14, -1);
-            ITUtilNameElement.assertRead("/history?systemStructure=RFQ-0__",          13, -1);
-            ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS",           12);
-            ITUtilNameElement.assertRead("/history?index=003",                         1, -1);
-            ITUtilNameElement.assertRead("/history?description=updated description%",  3, -1);
-            ITUtilNameElement.assertRead("/history?who=test%",                         8, -1);
+            ITUtilNameElement.assertRead("/history?uuid=" + uuid.toString(),            3);
+            ITUtilNameElement.assertRead("/history?uuid=" + uuid2.toString(),           1);
+            ITUtilNameElement.assertRead("/history?name=%010%",                        14, -1);
+            ITUtilNameElement.assertRead("/history?nameEquivalence=RFQ-10%",           14, -1);
+            ITUtilNameElement.assertRead("/history?systemStructure=RFQ-0__",           13, -1);
+            ITUtilNameElement.assertRead("/history?deviceStructure=EMR-FS",            12);
+            ITUtilNameElement.assertRead("/history?index=003",                          1, -1);
+            ITUtilNameElement.assertRead("/history?description=updated description%",   3, -1);
+            ITUtilNameElement.assertRead("/history?who=test%",                         17, -1);
 
             ITUtilNameElement.assertRead("/history?uuid=" + uuid.toString() + "&description=updated%", 3);
         } catch (Exception e) {
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
index bcc377252b6dd3de678de9e09304e33ae811aad5..167728ef6aa726503caf8800308126fb2706fdac 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
@@ -1958,12 +1958,12 @@ class StructuresDeviceGroupIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                   0);
-            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString(),                       15, -1);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICEGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString() + "?type=DEVICEGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DISCIPLINE",   0);
-            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString() + "?type=DISCIPLINE",  15, -1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                      0);
+            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString(),                          15, -1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICEGROUP",     0);
+            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString() + "?type=DEVICEGROUP",     0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DISCIPLINE",      0);
+            ITUtilStructureElement.assertRead("/children/" + discipline2Uuid.toString() + "?type=DISCIPLINE",     15, -1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -1976,7 +1976,7 @@ class StructuresDeviceGroupIT {
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
             ITUtilStructureElement.assertRead("/mnemonicPath/D",                                    0);
-            ITUtilStructureElement.assertRead("/mnemonicPath/D%",                                  16, -1);
+            ITUtilStructureElement.assertRead("/mnemonicPath/D%",                                  17, -1);
             ITUtilStructureElement.assertRead("/mnemonicPath/D__",                                 16, -1);
             ITUtilStructureElement.assertRead("/mnemonicPath/Di_",                                 16, -1);
             ITUtilStructureElement.assertRead("/mnemonicPath/Di2",                                 16);
@@ -1984,25 +1984,25 @@ class StructuresDeviceGroupIT {
             // history
             //     /history/{uuid}
             ITUtilStructureElement.assertRead("/history/" + uuid.toString(),                        2);
+            ITUtilStructureElement.assertRead("/history/" + disciplineUuid.toString(),              2);
             ITUtilStructureElement.assertRead("/history/" + discipline2Uuid.toString(),             2);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid2.toString(),      8);
-            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + discipline2Uuid.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),                   2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),                  8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + disciplineUuid.toString(),         2);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),                 0);
-            ITUtilStructureElement.assertRead("/history?parent=" + disciplineUuid.toString(),      32);
-            ITUtilStructureElement.assertRead("/history?name=na%",                                120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                              0);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",                   0);
-            ITUtilStructureElement.assertRead("/history?description=%other%",                      40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                                120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid.toString(),                 2);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid2.toString(),                8);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + disciplineUuid.toString(),       0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + discipline2Uuid.toString(),      0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&parent=" + uuid.toString(),               0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&parent=" + disciplineUuid.toString(),     0, -1);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&parent=" + discipline2Uuid.toString(),  110);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&name=na%",                              110, -1);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&mnemonic=AF_",                            0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&mnemonicEquivalence=_A_",                 0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&description=%other%",                    40);
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&who=%wh%",                              110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=DEVICEGROUP&uuid=" + uuid2.toString() + "&description=more%",       8);
 
             ITUtilStructureElement.assertExists(Type.DEVICEGROUP, "Di2", Boolean.FALSE);
         } catch (Exception e) {
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
index af080763b2b894b01f8067f8f9aa7d0dfe2c3ecc..7e98568b7fd34bc00c1c474d9dc5c82b1cd02e09 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
@@ -1968,18 +1968,18 @@ class StructuresDeviceTypeIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                   0);
-            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString(),                       15, -1);
-            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString(),                         1);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICETYPE",   0);
-            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DEVICETYPE",   0);
-            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DEVICETYPE",   0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICEGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DEVICEGROUP", 15, -1);
-            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DEVICEGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DISCIPLINE",   0);
-            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DISCIPLINE",   0);
-            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DISCIPLINE",   1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                     0);
+            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString(),                         15, -1);
+            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString(),                           1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICETYPE",     0);
+            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DEVICETYPE",     0);
+            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DEVICETYPE",     0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DEVICEGROUP",    0);
+            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DEVICEGROUP",   15, -1);
+            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DEVICEGROUP",    0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=DISCIPLINE",     0);
+            ITUtilStructureElement.assertRead("/children/" + deviceGroupUuid.toString() + "?type=DISCIPLINE",     0);
+            ITUtilStructureElement.assertRead("/children/" + disciplineUuid.toString()  + "?type=DISCIPLINE",     1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -2008,22 +2008,22 @@ class StructuresDeviceTypeIT {
             ITUtilStructureElement.assertRead("/history/" + disciplineUuid.toString(),             2);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString(),      8);
-            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + deviceGroupUuid.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),                  2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),                 8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + deviceGroupUuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),                0);
-            ITUtilStructureElement.assertRead("/history?parent=" + deviceGroupUuid.toString(),   120, -1);
-            ITUtilStructureElement.assertRead("/history?name=na%",                               120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                            20);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",                 10);
-            ITUtilStructureElement.assertRead("/history?description=%other%",                     40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                               120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid.toString(),                 2);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString(),                8);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + deviceGroupUuid.toString(),      0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + disciplineUuid.toString(),       0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&parent=" + uuid.toString(),               0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&parent=" + uuid2.toString(),              0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&parent=" + deviceGroupUuid.toString(),  110, -1);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&parent=" + disciplineUuid.toString(),     0);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&name=na%",                              110, -1);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonic=AF_",                           20);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&mnemonicEquivalence=_A_",                10);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&description=%other%",                    40);
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&who=%wh%",                              110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=DEVICETYPE&uuid=" + uuid2.toString() + "&description=more%",   8);
 
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-AA1", Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.DEVICETYPE, "Di-AA2", Boolean.TRUE);
diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
index f8e59f157fa93d4fa183cdb07dc0b7bc31dea5a2..58b939ddd556541a88582578ed58f2028b6e8c2b 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
@@ -1863,8 +1863,8 @@ class StructuresDisciplineIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                      0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString() + "?type=DISCIPLINE", 0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString() + "?type=DISCIPLINE",           0);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -1887,21 +1887,20 @@ class StructuresDisciplineIT {
             ITUtilStructureElement.assertRead("/history/" + uuidRandom.toString(),          0);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString(),      8);
-            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuidRandom.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),           2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),          8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuidRandom.toString(),     0);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),         0);
-            ITUtilStructureElement.assertRead("/history?name=na%",                        120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                     20);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",          10);
-            ITUtilStructureElement.assertRead("/history?description=%other%",              40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                        120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid.toString(),            2);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString(),           8);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuidRandom.toString(),      0);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&parent=" + uuid.toString(),          0);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&parent=" + uuid2.toString(),         0);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&parent=" + uuidRandom.toString(),    0);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&name=na%",                         110, -1);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonic=AF_",                      20);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&mnemonicEquivalence=_A_",           10);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&description=%other%",               40);
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&who=%wh%",                         110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=DISCIPLINE&uuid=" + uuid2.toString() + "&description=more%",   8);
 
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "AA1", Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.DISCIPLINE, "AA2", Boolean.TRUE);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
index f4a960fedfbb3a0367ab28f99bfbe6f4a8677a4a..6e0f47129bad354f08e5c03baef0a75d43700a9a 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
@@ -2016,18 +2016,18 @@ class StructuresSubsystemIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                   0);
-            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString(),                            15, -1);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString(),                        1);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SUBSYSTEM",    0);
-            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SUBSYSTEM",    0);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SUBSYSTEM",    0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEM",       0);
-            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SYSTEM",      15, -1);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEM",       0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEMGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SYSTEMGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEMGROUP",  1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                    0);
+            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString(),                             15, -1);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString(),                         1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SUBSYSTEM",     0);
+            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SUBSYSTEM",     0);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SUBSYSTEM",     0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEM",        0);
+            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SYSTEM",       15, -1);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEM",        0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEMGROUP",   0);
+            ITUtilStructureElement.assertRead("/children/" + systemUuid.toString()      + "?type=SYSTEMGROUP",   0);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEMGROUP",   1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -2066,22 +2066,22 @@ class StructuresSubsystemIT {
             ITUtilStructureElement.assertRead("/history/" + systemGroupUuid.toString(),           2);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString(),      8);
-            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + systemUuid.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),                 2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),                8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + systemUuid.toString(),           2);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),               0);
-            ITUtilStructureElement.assertRead("/history?parent=" + systemUuid.toString(),       142);
-            ITUtilStructureElement.assertRead("/history?name=na%",                              120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                           20);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",                10);
-            ITUtilStructureElement.assertRead("/history?description=%other%",                    40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                              120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid.toString(),                 2);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString(),                8);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + systemUuid.toString(),           0);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + systemGroupUuid.toString(),      0);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&parent=" + uuid.toString(),               0);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&parent=" + uuid2.toString(),              0);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&parent=" + systemUuid.toString(),       110, -1);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&parent=" + systemGroupUuid.toString(),    0);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&name=na%",                              110, -1);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonic=AF_",                           20);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&mnemonicEquivalence=_A_",                10);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&description=%other%",                    40);
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&who=%wh%",                              110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=SUBSYSTEM&uuid=" + uuid2.toString() + "&description=more%",   8);
 
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys-AA1", Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SUBSYSTEM, "Sys-AA2", Boolean.TRUE);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
index 2e22be0195e549995b1d67416300649329524f12..b2ec67a6950d575546b7790234bd6e102cf651d3 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
@@ -1925,8 +1925,8 @@ class StructuresSystemGroupIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                       0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString() + "?type=SYSTEMGROUP", 0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                 0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString() + "?type=SYSTEMGROUP",           0);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -1949,21 +1949,20 @@ class StructuresSystemGroupIT {
             ITUtilStructureElement.assertRead("/history/" + uuidRandom.toString(),           0);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid.toString(),       2);
-            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString(),      8);
-            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuidRandom.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),            2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),           8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuidRandom.toString(),      0);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),          0);
-            ITUtilStructureElement.assertRead("/history?name=na%",                         120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                      20);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",           10);
-            ITUtilStructureElement.assertRead("/history?description=%other%",               40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                         120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid.toString(),            2);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString(),           8);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuidRandom.toString(),      0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&parent=" + uuid.toString(),          0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&parent=" + uuid2.toString(),         0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&parent=" + uuidRandom.toString(),    0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&name=na%",                         110, -1);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonic=AF_",                      20);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&mnemonicEquivalence=_A_",           10);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&description=%other%",               40);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&who=%wh%",                         110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=SYSTEMGROUP&uuid=" + uuid2.toString() + "&description=more%",   8);
 
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "AA1", Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEMGROUP, "AA2", Boolean.TRUE);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
index b06c4d08e83e54af2479135d485cc0ec57939319..27b4dc6d552a0bf827cff31218245a20d3f1e067 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
@@ -1947,12 +1947,12 @@ class StructuresSystemIT {
             // children
             //     /children/{uuid}
             //     uuid, type, statuses, deleted, name, mnemonic, mnemonicEquivalence, mnemonicPath, description
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                   0);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString(),                       15, -1);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEM",       0);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEM",       0);
-            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEMGROUP",  0);
-            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEMGROUP", 15, -1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString(),                                    0);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString(),                        15, -1);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEM",        0);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEM",        0);
+            ITUtilStructureElement.assertRead("/children/" + uuid.toString()            + "?type=SYSTEMGROUP",   0);
+            ITUtilStructureElement.assertRead("/children/" + systemGroupUuid.toString() + "?type=SYSTEMGROUP",  15, -1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
@@ -1980,22 +1980,20 @@ class StructuresSystemIT {
             ITUtilStructureElement.assertRead("/history/" + systemGroupUuid.toString(),           2);
 
             //     /history?parameter=value
-            //         parameter must be available
-            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid.toString(),            2);
-            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString(),           8);
-            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + systemGroupUuid.toString(), 0);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid.toString(),                 2);
-            ITUtilStructureElement.assertRead("/history?uuid=" + uuid2.toString(),                8);
-            ITUtilStructureElement.assertRead("/history?uuid=" + systemGroupUuid.toString(),      2);
-            ITUtilStructureElement.assertRead("/history?parent=" + uuid.toString(),               0);
-            ITUtilStructureElement.assertRead("/history?parent=" + systemGroupUuid.toString(),  142);
-            ITUtilStructureElement.assertRead("/history?name=na%",                              120, -1);
-            ITUtilStructureElement.assertRead("/history?mnemonic=AF_",                           20);
-            ITUtilStructureElement.assertRead("/history?mnemonicEquivalence=_A_",                10);
-            ITUtilStructureElement.assertRead("/history?description=%other%",                    40);
-            ITUtilStructureElement.assertRead("/history?who=%wh%",                              120, -1);
-
-            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString() + "&description=more%", 8);
+            //         type must be available
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid.toString(),                    2);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString(),                   8);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + systemGroupUuid.toString(),         0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&parent=" + uuid.toString(),                  0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&parent=" + uuid2.toString(),                 0);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&parent=" + systemGroupUuid.toString(),     110, -1);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&name=na%",                                 110, -1);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonic=AF_",                              20);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&mnemonicEquivalence=_A_",                   10);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&description=%other%",                       40);
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&who=%wh%",                                 110, -1);
+
+            ITUtilStructureElement.assertRead("/history?type=SYSTEM&uuid=" + uuid2.toString() + "&description=more%",   8);
 
             ITUtilStructureElement.assertExists(Type.SYSTEM, "AA1", Boolean.TRUE);
             ITUtilStructureElement.assertExists(Type.SYSTEM, "AA2", Boolean.TRUE);