From 5047dfda470b05430b5be09769cf3aa9c9d1e24c Mon Sep 17 00:00:00 2001
From: Lars Johansson <lars.johansson@ess.eu>
Date: Wed, 13 Dec 2023 18:19:39 +0100
Subject: [PATCH] Adjust query behavior for lifecycle attributes status,
 deleted

Default for query is to have lifecycle attributes unless query is for specific resource or has specific use case.
---
 .../openepics/names/rest/api/v1/INames.java   |  20 +-
 .../names/rest/api/v1/IStructures.java        |  27 +-
 .../rest/controller/NamesController.java      |   8 +-
 .../rest/controller/StructuresController.java |   8 +-
 .../openepics/names/service/NamesService.java |   8 +-
 .../names/service/StructuresService.java      |  28 +-
 .../org/openepics/names/docker/NamesIT.java   | 114 ++--
 .../names/docker/StructuresDeviceGroupIT.java | 424 +++++++------
 .../names/docker/StructuresDeviceTypeIT.java  | 442 +++++++------
 .../names/docker/StructuresDisciplineIT.java  | 324 +++++-----
 .../names/docker/StructuresSubsystemIT.java   | 594 ++++++++++--------
 .../names/docker/StructuresSystemGroupIT.java | 324 +++++-----
 .../names/docker/StructuresSystemIT.java      | 412 ++++++------
 13 files changed, 1549 insertions(+), 1184 deletions(-)

diff --git a/src/main/java/org/openepics/names/rest/api/v1/INames.java b/src/main/java/org/openepics/names/rest/api/v1/INames.java
index 5fabd6f2..737c7baf 100644
--- a/src/main/java/org/openepics/names/rest/api/v1/INames.java
+++ b/src/main/java/org/openepics/names/rest/api/v1/INames.java
@@ -114,6 +114,9 @@ public interface INames {
                    no            - read
                    user          - create, update, delete
                  ( administrator )
+           default for read is to have lifecycle attributes unless query for specific resource or specific use case
+               status, latest, deleted
+               note - status not applicable as all entries have APPROVED status, latest handled by history
      */
 
     public static final String DEFAULT_PAGE            = "0";
@@ -205,6 +208,7 @@ public interface INames {
     /**
      * Find valid names (search).
      * Return paged list of name elements.
+     * Use deleted (false) to query for active names.
      *
      * @param deleted if deleted names are to be selected or not, omitted for both deleted and non-deleted names
      * (true for deleted names, false for non-deleted names, omitted for both deleted and non-deleted names)
@@ -225,6 +229,8 @@ public interface INames {
             description = """
                           Find valid names (search).
                           Return paged array of name elements.
+
+                          Use deleted (false) to query for active names.
                           """
     )
     @ApiResponses(value = {
@@ -323,9 +329,11 @@ public interface INames {
     /**
      * Find valid names by system structure mnemonic path (search).
      * Return paged list of name elements.
-     * Additional condition is not deleted.
+     * Use deleted (false) to query for active names.
      *
      * @param mnemonicPath mnemonic path
+     * @param deleted if deleted names are to be selected or not, omitted for both deleted and non-deleted names
+     * (true for deleted names, false for non-deleted names, omitted for both deleted and non-deleted names)
      * @param orderBy order by field
      * @param isAsc sort order, ascending or descending
      * @param page page starting from 0, offset
@@ -339,7 +347,7 @@ public interface INames {
                           Find valid names by system structure mnemonic path (search).
                           Return paged array of name elements.
 
-                          Additional condition is not deleted.
+                          Use deleted (false) to query for active names.
                           """
     )
     @ApiResponses(value = {
@@ -373,6 +381,7 @@ public interface INames {
             produces = {"application/json"})
     public ResponsePageNameElements readNamesSystemStructure(
             @Parameter(in = ParameterIn.PATH,  description = "search by system structure mnemonic path") @PathVariable("mnemonicPath") String mnemonicPath,
+            @Parameter(in = ParameterIn.QUERY, description = "if deleted names are to be selected or not, omitted for both deleted and non-deleted names") @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldName orderBy,
             @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
@@ -381,9 +390,11 @@ public interface INames {
     /**
      * Find valid names by device structure mnemonic path (search).
      * Return paged list of name elements.
-     * Additional condition is not deleted.
+     * Use deleted (false) to query for active names.
      *
      * @param mnemonicPath mnemonic path
+     * @param deleted if deleted names are to be selected or not, omitted for both deleted and non-deleted names
+     * (true for deleted names, false for non-deleted names, omitted for both deleted and non-deleted names)
      * @param orderBy order by field
      * @param isAsc sort order, ascending or descending
      * @param page page starting from 0, offset
@@ -397,7 +408,7 @@ public interface INames {
                           Find valid names by device structure mnemonic path (search).
                           Return paged array of name elements.
 
-                          Additional condition is not deleted.
+                          Use deleted (false) to query for active names.
                           """
     )
     @ApiResponses(value = {
@@ -431,6 +442,7 @@ public interface INames {
             produces = {"application/json"})
     public ResponsePageNameElements readNamesDeviceStructure(
             @Parameter(in = ParameterIn.PATH,  description = "search by device structure mnemonic path") @PathVariable("mnemonicPath") String mnemonicPath,
+            @Parameter(in = ParameterIn.QUERY, description = "if deleted names are to be selected or not, omitted for both deleted and non-deleted names") @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldName orderBy,
             @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
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 eb19075e..3a6cf2d3 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
@@ -121,6 +121,9 @@ public interface IStructures {
                    no            - read
                    user          - create, update, delete
                    administrator - approve, cancel, reject
+           default for read is to have lifecycle attributes unless query for specific resource or specific use case
+               status, latest, deleted
+               note - latest handled by history
            mnemonic path for structure includes all levels of mnemonics
      */
 
@@ -212,6 +215,7 @@ public interface IStructures {
     /**
      * Find valid structures (search).
      * Return paged list of structure elements.
+     * Use statuses (APPROVED) and deleted (false) to query for active structures.
      *
      * @param type type of structure
      * @param statuses statuses for structures
@@ -234,6 +238,8 @@ public interface IStructures {
             description = """
                           Find valid structures (search).
                           Return paged array of structure elements.
+
+                          Use statuses (APPROVED) and deleted (false) to query for active structures.
                           """
     )
     @ApiResponses(value = {
@@ -340,6 +346,7 @@ public interface IStructures {
     /**
      * Find valid children structures by parent uuid (exact match).
      * Return paged list of structure elements.
+     * Use statuses (APPROVED) and deleted (false) to query for active structures.
      *
      * @param uuid uuid
      * @param statuses statuses for structures
@@ -356,6 +363,8 @@ public interface IStructures {
             description = """
                           Find valid children structures by parent uuid (exact match).
                           Return paged array of structure elements.
+
+                          Use statuses (APPROVED) and deleted (false) to query for active structures.
                           """
     )
     @ApiResponses(value = {
@@ -399,9 +408,12 @@ public interface IStructures {
     /**
      * Find valid structures by mnemonic (search).
      * Return paged list of structure elements.
-     * Additional conditions are APPROVED and not deleted.
+     * Use statuses (APPROVED) and deleted (false) to query for active structures.
      *
      * @param mnemonic mnemonic
+     * @param statuses statuses for structures
+     * @param deleted if deleted structures are to be selected or not, omitted for both deleted and non-deleted structures
+     * (true for deleted structures, false for non-deleted structures, omitted for both deleted and non-deleted structures)
      * @param orderBy order by field
      * @param isAsc sort order, ascending or descending
      * @param page page starting from 0, offset
@@ -414,7 +426,7 @@ public interface IStructures {
                           Find valid structures by mnemonic (search).
                           Return paged array of structure elements.
 
-                          Additional conditions are APPROVED and not deleted.
+                          Use statuses (APPROVED) and deleted (false) to query for active structures.
                           """
     )
     @ApiResponses(value = {
@@ -448,6 +460,8 @@ public interface IStructures {
             produces = {"application/json"})
     public ResponsePageStructureElements readStructuresMnemonic(
             @Parameter(in = ParameterIn.PATH,  description = "search by mnemonic") @PathVariable("mnemonic") String mnemonic,
+            @Parameter(in = ParameterIn.QUERY, description = "search by statuses") @RequestParam(required = false) Status[] statuses,
+            @Parameter(in = ParameterIn.QUERY, description = "if deleted structures are to be selected or not, omitted for both deleted and non-deleted structures", required = false) @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldStructure orderBy,
             @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
@@ -456,9 +470,12 @@ public interface IStructures {
     /**
      * Find valid structures by mnemonic path (search).
      * Return paged list of structure elements.
-     * Additional conditions are APPROVED and not deleted.
+     * Use statuses (APPROVED) and deleted (false) to query for active structures.
      *
      * @param mnemonicPath mnemonic path
+     * @param statuses statuses for structures
+     * @param deleted if deleted structures are to be selected or not, omitted for both deleted and non-deleted structures
+     * (true for deleted structures, false for non-deleted structures, omitted for both deleted and non-deleted structures)
      * @param orderBy order by field
      * @param isAsc sort order, ascending or descending
      * @param page page starting from 0, offset
@@ -471,7 +488,7 @@ public interface IStructures {
                           Find valid structures by mnemonic path (search).
                           Return paged array of structure elements.
 
-                          Additional conditions are APPROVED and not deleted.
+                          Use statuses (APPROVED) and deleted (false) to query for active structures.
                           """
     )
     @ApiResponses(value = {
@@ -505,6 +522,8 @@ public interface IStructures {
             produces = {"application/json"})
     public ResponsePageStructureElements readStructuresMnemonicpath(
             @Parameter(in = ParameterIn.PATH,  description = "search by mnemonic path") @PathVariable("mnemonicPath") String mnemonicPath,
+            @Parameter(in = ParameterIn.QUERY, description = "search by statuses") @RequestParam(required = false) Status[] statuses,
+            @Parameter(in = ParameterIn.QUERY, description = "if deleted structures are to be selected or not, omitted for both deleted and non-deleted structures", required = false) @RequestParam(required = false) Boolean deleted,
             @Parameter(in = ParameterIn.QUERY, description = "order by field") @RequestParam(required = false) FieldStructure orderBy,
             @Parameter(in = ParameterIn.QUERY, description = "sort order, ascending or descending") @RequestParam(required = false) Boolean isAsc,
             @Parameter(in = ParameterIn.QUERY, description = "page starting from 0, offset") @RequestParam(required = false, defaultValue = DEFAULT_PAGE) Integer page,
diff --git a/src/main/java/org/openepics/names/rest/controller/NamesController.java b/src/main/java/org/openepics/names/rest/controller/NamesController.java
index c2532187..686b78a6 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -165,14 +165,14 @@ public class NamesController implements INames {
     }
 
     @Override
-    public ResponsePageNameElements readNamesSystemStructure(String mnemonicPath,
+    public ResponsePageNameElements readNamesSystemStructure(String mnemonicPath, Boolean deleted,
             FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read names
 
         try {
             ValidateUtil.validateInputMnemonicPath(mnemonicPath);
-            return namesService.readNamesSystemStructure(mnemonicPath,
+            return namesService.readNamesSystemStructure(mnemonicPath, deleted,
                     orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
@@ -185,14 +185,14 @@ public class NamesController implements INames {
     }
 
     @Override
-    public ResponsePageNameElements readNamesDeviceStructure(String mnemonicPath,
+    public ResponsePageNameElements readNamesDeviceStructure(String mnemonicPath, Boolean deleted,
             FieldName orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read names
 
         try {
             ValidateUtil.validateInputMnemonicPath(mnemonicPath);
-            return namesService.readNamesDeviceStructure(mnemonicPath,
+            return namesService.readNamesDeviceStructure(mnemonicPath, deleted,
                     orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
diff --git a/src/main/java/org/openepics/names/rest/controller/StructuresController.java b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
index 2862c187..f8b16a2a 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -185,14 +185,14 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponsePageStructureElements readStructuresMnemonic(String mnemonic,
+    public ResponsePageStructureElements readStructuresMnemonic(String mnemonic, Status[] statuses, Boolean deleted,
             FieldStructure orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read structures
 
         try {
             ValidateUtil.validateInputMnemonic(mnemonic);
-            return structuresService.readStructuresMnemonic(mnemonic, orderBy, isAsc, page, pageSize);
+            return structuresService.readStructuresMnemonic(mnemonic, statuses, deleted, orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
@@ -204,14 +204,14 @@ public class StructuresController implements IStructures {
     }
 
     @Override
-    public ResponsePageStructureElements readStructuresMnemonicpath(String mnemonicPath,
+    public ResponsePageStructureElements readStructuresMnemonicpath(String mnemonicPath, Status[] statuses, Boolean deleted,
             FieldStructure orderBy, Boolean isAsc, Integer page, Integer pageSize) {
         // validate
         // read structures
 
         try {
             ValidateUtil.validateInputMnemonicPath(mnemonicPath);
-            return structuresService.readStructuresMnemonicpath(mnemonicPath, orderBy, isAsc, page, pageSize);
+            return structuresService.readStructuresMnemonicpath(mnemonicPath, statuses, deleted, orderBy, isAsc, page, pageSize);
         } catch (ServiceException e) {
             logService.logServiceException(LOGGER, Level.WARNING, e);
             logService.logStackTraceElements(LOGGER, Level.WARNING, e);
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index dcc71418..83b35e56 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -307,7 +307,7 @@ public class NamesService {
         return new ResponsePageNameElements(nameElements, Long.valueOf(nameElements.size()), nameElements.size(), -1, -1);
     }
 
-    public ResponsePageNameElements readNamesSystemStructure(String mnemonicPath,
+    public ResponsePageNameElements readNamesSystemStructure(String mnemonicPath, Boolean deleted,
             FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read mnemonic path
@@ -315,12 +315,12 @@ public class NamesService {
 
         LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_SYSTEM_STRUCTURE, "mnemonicPath", mnemonicPath));
 
-        return readNames(false,
+        return readNames(deleted,
                 null, null, mnemonicPath, null, null, null, null,
                 orderBy, isAsc, offset, limit);
     }
 
-    public ResponsePageNameElements readNamesDeviceStructure(String mnemonicPath,
+    public ResponsePageNameElements readNamesDeviceStructure(String mnemonicPath, Boolean deleted,
             FieldName orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read mnemonic path
@@ -328,7 +328,7 @@ public class NamesService {
 
         LOGGER.log(Level.FINE, () -> MessageFormat.format(TextUtil.DESCRIPTION_NAME_VALUE, TextUtil.READ_NAMES_DEVICE_STRUCTURE, "mnemonicPath", mnemonicPath));
 
-        return readNames(false,
+        return readNames(deleted,
                 null, null, null,mnemonicPath, null, null, null,
                 orderBy, isAsc, 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 3d39e7a1..1ed3a575 100644
--- a/src/main/java/org/openepics/names/service/StructuresService.java
+++ b/src/main/java/org/openepics/names/service/StructuresService.java
@@ -406,7 +406,7 @@ public class StructuresService {
         return new ResponsePageStructureElements(structureElements, Long.valueOf(structureElements.size()), structureElements.size(), offset, limit);
     }
 
-    public ResponsePageStructureElements readStructuresMnemonic(String mnemonic,
+    public ResponsePageStructureElements readStructuresMnemonic(String mnemonic, Status[] statuses, Boolean deleted,
             FieldStructure orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read structure latest by mnemonic
@@ -421,12 +421,12 @@ public class StructuresService {
         //     separate pagination when result may be from multiple read operations
         //     read operations should not contain pagination in such cases
 
-        ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  new Status[] {Status.APPROVED}, false, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  statuses, deleted, null, null, null, mnemonic, null, null, null, orderBy, isAsc, null, null);
 
         List<StructureElement> structureElements = Lists.newArrayList();
         structureElements.addAll(responseSystemGroup.getList());
@@ -443,7 +443,7 @@ public class StructuresService {
         return new ResponsePageStructureElements(structureElements, totalCount, structureElements.size(), offset, structureElements.size());
     }
 
-    public ResponsePageStructureElements readStructuresMnemonicpath(String mnemonicPath,
+    public ResponsePageStructureElements readStructuresMnemonicpath(String mnemonicPath, Status[] statuses, Boolean deleted,
             FieldStructure orderBy, Boolean isAsc, Integer offset, Integer limit) {
         // validation outside method
         // read structure latest by mnemonic path
@@ -458,12 +458,12 @@ public class StructuresService {
         //     separate pagination when result may be from multiple read operations
         //     read operations should not contain pagination in such cases
 
-        ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
-        ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  new Status[] {Status.APPROVED}, false, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSystemGroup = readStructures(Type.SYSTEMGROUP, statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSystem      = readStructures(Type.SYSTEM,      statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseSubsystem   = readStructures(Type.SUBSYSTEM,   statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDiscipline  = readStructures(Type.DISCIPLINE,  statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDeviceGroup = readStructures(Type.DEVICEGROUP, statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
+        ResponsePageStructureElements responseDeviceType  = readStructures(Type.DEVICETYPE,  statuses, deleted, null, null, null, null, mnemonicPath, null, null, orderBy, isAsc, null, null);
 
         List<StructureElement> structureElements = Lists.newArrayList();
         structureElements.addAll(responseSystemGroup.getList());
diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index 607bbeba..16e6c5c7 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -1076,24 +1076,28 @@ class NamesIT {
             //             content for field in first and last items    -    always possible
             //             first and last items                         -    not always possible
 
-            ITUtilNames.assertRead("", 13, -1);
+            ITUtilNames.assertRead("",                                                 13, -1);
 
-            ITUtilNames.assertRead("?deleted=false",                    11, -1);
-            ITUtilNames.assertRead("?deleted=true",                      2, -1);
+            ITUtilNames.assertRead("?deleted=false",                                   11, -1);
+            ITUtilNames.assertRead("?deleted=true",                                     2, -1);
 
-            ITUtilNames.assertRead("?name=RFQ-010:EMR-FS-005",           1);
-            ITUtilNames.assertRead("?name=RFQ-010%",                    10, -1);
-            ITUtilNames.assertRead("?name=RFQ-10%",                      0);
+            ITUtilNames.assertRead("?name=RFQ-010:EMR-FS-005",                          1);
+            ITUtilNames.assertRead("?name=RFQ-010%",                                   10, -1);
+            ITUtilNames.assertRead("?name=RFQ-10%",                                     0);
 
-            ITUtilNames.assertRead("?systemStructure=RFQ-010",           9, -1);
-            ITUtilNames.assertRead("?systemStructure=RFQ-0",             0);
-            ITUtilNames.assertRead("?systemStructure=RFQ-0__",           9, -1);
-            ITUtilNames.assertRead("?systemStructure=RFQ-N1U1",          1, -1);
+            ITUtilNames.assertRead("?systemStructure=RFQ-010",                          9, -1);
+            ITUtilNames.assertRead("?systemStructure=RFQ-010&deleted=false",            7, -1);
+            ITUtilNames.assertRead("?systemStructure=RFQ-010&deleted=true",             2, -1);
+            ITUtilNames.assertRead("?systemStructure=RFQ-0",                            0);
+            ITUtilNames.assertRead("?systemStructure=RFQ-0__",                          9, -1);
+            ITUtilNames.assertRead("?systemStructure=RFQ-N1U1",                         1, -1);
 
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS",            8);
-            ITUtilNames.assertRead("?deviceStructure=EMR-F",             0);
-            ITUtilNames.assertRead("?deviceStructure=EMR-F_",            8);
-            ITUtilNames.assertRead("?deviceStructure=EMR-TT",            0);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS",                           8);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&deleted=false",             6);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&deleted=true",              2);
+            ITUtilNames.assertRead("?deviceStructure=EMR-F",                            0);
+            ITUtilNames.assertRead("?deviceStructure=EMR-F_",                           8);
+            ITUtilNames.assertRead("?deviceStructure=EMR-TT",                           0);
 
             ITUtilNames.assertRead("?index=003", 1);
 
@@ -1103,18 +1107,18 @@ class NamesIT {
             ITUtilNames.assertRead("?description=updated description%",                 1, -1);
             ITUtilNames.assertRead("?description=updated description again",            1);
 
-            ITUtilNames.assertRead("?who=test who",                     13, -1);
-            ITUtilNames.assertRead("?who=test",                          0);
-            ITUtilNames.assertRead("?who=who",                           0);
-            ITUtilNames.assertRead("?who=test%",                        13, -1);
-            ITUtilNames.assertRead("?who=%who",                         13, -1);
-            ITUtilNames.assertRead("?who=%est%",                        13, -1);
-            ITUtilNames.assertRead("?who=%wh%",                         13, -1);
-            ITUtilNames.assertRead("?who=wh%",                           0);
-            ITUtilNames.assertRead("?who=asdf",                          0);
-            ITUtilNames.assertRead("?who=%asdf%",                        0);
+            ITUtilNames.assertRead("?who=test who",                                    13, -1);
+            ITUtilNames.assertRead("?who=test",                                         0);
+            ITUtilNames.assertRead("?who=who",                                          0);
+            ITUtilNames.assertRead("?who=test%",                                       13, -1);
+            ITUtilNames.assertRead("?who=%who",                                        13, -1);
+            ITUtilNames.assertRead("?who=%est%",                                       13, -1);
+            ITUtilNames.assertRead("?who=%wh%",                                        13, -1);
+            ITUtilNames.assertRead("?who=wh%",                                          0);
+            ITUtilNames.assertRead("?who=asdf",                                         0);
+            ITUtilNames.assertRead("?who=%asdf%",                                       0);
 
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&index=003",  1);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&index=003",                 1);
 
             // order by
             response  = ITUtilNames.assertRead("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=true");
@@ -1167,14 +1171,14 @@ class NamesIT {
             assertEquals(response2.getList().get(0).getWhen().toString(),  response.getList().get(response.getList().size()-1).getWhen().toString());
 
             // pagination
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=100",       8);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=100",       0);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=8",         8);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=8",         0);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=3",         3);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=3",         3);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=2&pageSize=3",         2);
-            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=3&pageSize=3",         0);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=100",                        8);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=100",                        0);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=8",                          8);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=8",                          0);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=0&pageSize=3",                          3);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=1&pageSize=3",                          3);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=2&pageSize=3",                          2);
+            ITUtilNames.assertRead("?deviceStructure=EMR-FS&page=3&pageSize=3",                          0);
 
             // order by, pagination
             response  = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=0&pageSize=3",   3);
@@ -1200,37 +1204,37 @@ class NamesIT {
 
             // system structure mnemonic path
             //     /systemStructure/{mnemonicPath}
-            ITUtilNames.assertRead("/systemStructure/RFQ-010",           7, -1);
-            ITUtilNames.assertRead("/systemStructure/RFQ-0",             0);
-            ITUtilNames.assertRead("/systemStructure/RFQ-0__",           7, -1);
-            ITUtilNames.assertRead("/systemStructure/RFQ-N1U1",          0, -1);
+            ITUtilNames.assertRead("/systemStructure/RFQ-010",                                           7, -1);
+            ITUtilNames.assertRead("/systemStructure/RFQ-0",                                             0);
+            ITUtilNames.assertRead("/systemStructure/RFQ-0__",                                           7, -1);
+            ITUtilNames.assertRead("/systemStructure/RFQ-N1U1",                                          0, -1);
 
             // device structure mnemonic path
             //     /deviceStructure/{mnemonicPath}
-            ITUtilNames.assertRead("/deviceStructure/EMR-FS",            6);
-            ITUtilNames.assertRead("/deviceStructure/EMR-F",             0);
-            ITUtilNames.assertRead("/deviceStructure/EMR-F_",            6);
-            ITUtilNames.assertRead("/deviceStructure/EMR-TT",            0);
+            ITUtilNames.assertRead("/deviceStructure/EMR-FS",                                            8);
+            ITUtilNames.assertRead("/deviceStructure/EMR-F",                                             0);
+            ITUtilNames.assertRead("/deviceStructure/EMR-F_",                                            8);
+            ITUtilNames.assertRead("/deviceStructure/EMR-TT",                                            0);
 
             // history
             //     /history/names/{uuid}
-            ITUtilHistory.assertHistoryNames("/" + systemGroupAcc.toString(),           0);
-            ITUtilHistory.assertHistoryNames("/" + systemRFQ.toString(),                0);
-            ITUtilHistory.assertHistoryNames("/" + subsystem010.toString(),             0);
-            ITUtilHistory.assertHistoryNames("/" + disciplineEMR.toString(),            0);
-            ITUtilHistory.assertHistoryNames("/" + deviceGroupEMR.toString(),           0);
-            ITUtilHistory.assertHistoryNames("/" + deviceTypeFS.toString(),             0);
-            ITUtilHistory.assertHistoryNames("/" + uuid.toString(),                     3);
-            ITUtilHistory.assertHistoryNames("/" + uuid2.toString(),                    1);
+            ITUtilHistory.assertHistoryNames("/" + systemGroupAcc.toString(),                            0);
+            ITUtilHistory.assertHistoryNames("/" + systemRFQ.toString(),                                 0);
+            ITUtilHistory.assertHistoryNames("/" + subsystem010.toString(),                              0);
+            ITUtilHistory.assertHistoryNames("/" + disciplineEMR.toString(),                             0);
+            ITUtilHistory.assertHistoryNames("/" + deviceGroupEMR.toString(),                            0);
+            ITUtilHistory.assertHistoryNames("/" + deviceTypeFS.toString(),                              0);
+            ITUtilHistory.assertHistoryNames("/" + uuid.toString(),                                      3);
+            ITUtilHistory.assertHistoryNames("/" + uuid2.toString(),                                     1);
 
             //     /history/names?parameter=value
             //         parameter must be available
-            ITUtilHistory.assertHistoryNames("?name=%010%",                            14, -1);
-            ITUtilHistory.assertHistoryNames("?systemStructure=RFQ-0__",               13, -1);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS",                12);
-            ITUtilHistory.assertHistoryNames("?index=003",                              1, -1);
-            ITUtilHistory.assertHistoryNames("?description=updated description%",       3, -1);
-            ITUtilHistory.assertHistoryNames("?who=test%",                             17, -1);
+            ITUtilHistory.assertHistoryNames("?name=%010%",                                             14, -1);
+            ITUtilHistory.assertHistoryNames("?systemStructure=RFQ-0__",                                13, -1);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS",                                 12);
+            ITUtilHistory.assertHistoryNames("?index=003",                                               1, -1);
+            ITUtilHistory.assertHistoryNames("?description=updated description%",                        3, -1);
+            ITUtilHistory.assertHistoryNames("?who=test%",                                              17, -1);
 
             //     order by
             response  = ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&orderBy=UUID&isAsc=true");
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
index 5657cb8a..c217b8a0 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceGroupIT.java
@@ -1093,24 +1093,30 @@ class StructuresDeviceGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                               1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rsha",               0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha",                0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",           1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",         0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",      0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",       1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",     0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha",  0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1122,24 +1128,30 @@ class StructuresDeviceGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                              1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rsha",               0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rsha",                0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1179,24 +1191,30 @@ class StructuresDeviceGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshc",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc",                 0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1208,24 +1226,30 @@ class StructuresDeviceGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                              1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshc",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshc",                 0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1265,24 +1289,30 @@ class StructuresDeviceGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                               1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshr",               0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr",                0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1294,24 +1324,30 @@ class StructuresDeviceGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICEGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED",                              1, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=APPROVED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=CANCELLED&mnemonic=Rshr",               0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=REJECTED&mnemonic=Rshr",                0);
 
             ITUtilStructures.assertFind("/DEVICEGROUP/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1401,15 +1437,19 @@ class StructuresDeviceGroupIT {
             ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid3.toString());
             ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 0);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 0);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 0);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 0);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 0);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 0);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di",    Boolean.FALSE);
             ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-P1", Boolean.FALSE);
@@ -1574,15 +1614,19 @@ class StructuresDeviceGroupIT {
             ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid3.toString());
             ITUtilStructures.assertFind("/DEVICEGROUP/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 0);
-            ITUtilStructures.assertRead("/mnemonic/C9", 0);
-            ITUtilStructures.assertRead("/mnemonic/R9", 0);
-            ITUtilStructures.assertRead("/mnemonic/A9", 0);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  0);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  0);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  0);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  0);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  0);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  0);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  0);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  0);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di",    Boolean.FALSE);
             ITUtilStructures.assertExists(Type.DEVICEGROUP, "Di-P9", Boolean.FALSE);
@@ -1931,36 +1975,36 @@ class StructuresDeviceGroupIT {
             ITUtilStructures.assertRead("/DEVICEGROUP?deleted=true&statuses=REJECTED&mnemonicPath=Di2",                    5);
             ITUtilStructures.assertRead("/DEVICEGROUP?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2",  10);
 
-            ITUtilStructures.assertRead("/DEVICEGROUP?parent=" + discipline2Uuid.toString(), 45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?parent=" + uuid.toString(),             0);
-
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=na",                               0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=na_",                              0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=na__",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=na___",                            0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=na%",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?name=name",                            45, -1);
-
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonic=A__",                          0);
-
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=desc",                      0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=desc%",                    35, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=sc",                        0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=sc%",                       0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=%sc",                       0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=%sc%",                     45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?description=description",              35, -1);
-
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=test who",                         45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=test",                              0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=who",                               0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=test%",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=%who",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=%est%",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=%wh%",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=wh%",                               0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=asdf",                              0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?who=%asdf%",                            0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?parent=" + discipline2Uuid.toString(),                              45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?parent=" + uuid.toString(),                                          0);
+
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=na",                                                            0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=na_",                                                           0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=na__",                                                         45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=na___",                                                         0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=na%",                                                          45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?name=name",                                                         45, -1);
+
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonic=A__",                                                       0);
+
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=desc",                                                   0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=desc%",                                                 35, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=sc",                                                     0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=sc%",                                                    0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=%sc",                                                    0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=%sc%",                                                  45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?description=description",                                           35, -1);
+
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=test who",                                                      45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=test",                                                           0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=who",                                                            0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=test%",                                                         45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=%who",                                                          45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=%est%",                                                         45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=%wh%",                                                          45, -1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=wh%",                                                            0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=asdf",                                                           0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?who=%asdf%",                                                         0);
 
             // order by
             //     avoid
@@ -2017,27 +2061,27 @@ class StructuresDeviceGroupIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=100",                  30);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=100",                   0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=30",                   30);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=30",                    0);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=12",                   12);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=12",                   12);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12",                    6);
-            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=3&pageSize=12",                    0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=100",                                     30);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=30",                                      30);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=30",                                       0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=0&pageSize=12",                                      12);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=1&pageSize=12",                                      12);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=2&pageSize=12",                                       6);
+            ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&page=3&pageSize=12",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=0&pageSize=12",         12);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=1&pageSize=12",         12);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=2&pageSize=12",          1);
-            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=3&pageSize=12",          0);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=2&pageSize=12",    1);
+            ITUtilStructures.assertRead("/DEVICEGROUP?statuses=PENDING&statuses=APPROVED&mnemonicPath=Di2&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=0&pageSize=12",        12);
-            response2 = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=2&pageSize=12",        6);
+            response  = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=0&pageSize=12",  12);
+            response2 = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=2&pageSize=12",  6);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=0&pageSize=12",       12);
-            response2 = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=2&pageSize=12",         6);
+            response  = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=false&page=0&pageSize=12", 12);
+            response2 = ITUtilStructures.assertRead("/DEVICEGROUP?mnemonicPath=Di2&orderBy=WHEN&isAsc=true&page=2&pageSize=12",   6);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -2049,49 +2093,59 @@ class StructuresDeviceGroupIT {
             // children
             //     /children/{uuid}
             //     uuid, statuses, deleted
-            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                  0);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString(),                                      15, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED",               15, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=ARCHIVED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED,PENDING",       0, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED,PENDING",       15, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=false",  9, -1);
-            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=true",   5, -1);
+            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                           0);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString(),                                               15, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED",                        15, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=ARCHIVED",                         0, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED",                        0, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=PENDING",                          0, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=REJECTED",                         0, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=CANCELLED,PENDING",                0, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED,PENDING",                15, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=false",           9, -1);
+            ITUtilStructures.assertRead("/children/" + discipline2Uuid.toString() + "?statuses=APPROVED&deleted=true",            5, -1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                        0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                                      0);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                                      0);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                                      0);
-            ITUtilStructures.assertRead("/mnemonic/Di2",                                      1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                            0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                          0);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                          0);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Di2",                                                                          1);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Di2?statuses=APPROVED&deleted=false",                                          1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/D",                                    0);
-            ITUtilStructures.assertRead("/mnemonicPath/D%",                                  17, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/D__",                                 16, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Di_",                                 16, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Di2",                                 16);
+            ITUtilStructures.assertRead("/mnemonicPath/D",                                                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/D%",                                                                      17, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/D__",                                                                     16, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di_",                                                                     16, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di2",                                                                     31);
+            ITUtilStructures.assertRead("/mnemonicPath/D?statuses=APPROVED&deleted=false",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/D%?statuses=APPROVED&deleted=false",                                      17, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/D__?statuses=APPROVED&deleted=false",                                     16, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di_?statuses=APPROVED&deleted=false",                                     16, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di2?statuses=APPROVED&deleted=false",                                     16);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                      2);
-            ITUtilHistory.assertHistoryStructures("/" + disciplineUuid.toString(),            2);
-            ITUtilHistory.assertHistoryStructures("/" + discipline2Uuid.toString(),           2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                          2);
+            ITUtilHistory.assertHistoryStructures("/" + disciplineUuid.toString(),                                                2);
+            ITUtilHistory.assertHistoryStructures("/" + discipline2Uuid.toString(),                                               2);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + uuid.toString(),               0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + disciplineUuid.toString(),     0, -1);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + discipline2Uuid.toString(),  100);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&name=na%",                              100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&mnemonic=AF_",                            0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%",                    40);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&who=%wh%",                              100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + uuid.toString(),                                  0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + disciplineUuid.toString(),                        0, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&parent=" + discipline2Uuid.toString(),                     100);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&name=na%",                                                 100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&mnemonic=AF_",                                               0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%",                                       40);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&who=%wh%",                                                 100, -1);
 
             //     order by
             //         avoid
@@ -2148,14 +2202,14 @@ class StructuresDeviceGroupIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=100",              40);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=100",               0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=40",               40);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=40",                0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=15",               15);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=15",               15);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=2&pageSize=15",               10);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=3&pageSize=15",                0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=100",                          40);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=100",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=40",                           40);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=40",                            0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=0&pageSize=15",                           15);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=1&pageSize=15",                           15);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=2&pageSize=15",                           10);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&page=3&pageSize=15",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=DEVICEGROUP&description=%other%&orderBy=WHEN&isAsc=true&page=0&pageSize=15",   15);
diff --git a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
index 4ca1ee3f..08818cb8 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDeviceTypeIT.java
@@ -1089,24 +1089,30 @@ class StructuresDeviceTypeIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rsha",   1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rsha",                  1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha",                 0);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1119,24 +1125,30 @@ class StructuresDeviceTypeIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rsha",  1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                               1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rsha",                  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rsha",                 1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rsha",                 0);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",        1);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha", 1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha",                                       1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rsha?statuses=APPROVED&deleted=false",       1);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1177,24 +1189,30 @@ class StructuresDeviceTypeIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshc",   1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                 1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshc",                   1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc",                  0);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1207,24 +1225,30 @@ class StructuresDeviceTypeIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshc", 1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                 0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                               1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshc",                   0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshc",                 1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshc",                  0);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",             1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1265,24 +1289,30 @@ class StructuresDeviceTypeIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshr",   1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshr",                  1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr",                 0);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1295,24 +1325,30 @@ class StructuresDeviceTypeIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DEVICETYPE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr",  1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED",                               1, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&mnemonic=Rshr",                  0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=APPROVED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=CANCELLED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=REJECTED&mnemonic=Rshr",                 1);
 
             ITUtilStructures.assertFind("/DEVICETYPE/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Di",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Di-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Di",      1, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di",                                            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di?statuses=APPROVED&deleted=false",            1, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1403,15 +1439,19 @@ class StructuresDeviceTypeIT {
             ITUtilStructures.assertFind("/DEVICETYPE/" + uuid3.toString());
             ITUtilStructures.assertFind("/DEVICETYPE/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 1);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.DEVICETYPE, "P1",    Boolean.FALSE);
             ITUtilStructures.assertExists(Type.DEVICETYPE, "C1",    Boolean.FALSE);
@@ -1579,15 +1619,19 @@ class StructuresDeviceTypeIT {
             ITUtilStructures.assertFind("/DEVICETYPE/" + uuid3.toString());
             ITUtilStructures.assertFind("/DEVICETYPE/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 1);
-            ITUtilStructures.assertRead("/mnemonic/C9", 1);
-            ITUtilStructures.assertRead("/mnemonic/R9", 1);
-            ITUtilStructures.assertRead("/mnemonic/A9", 1);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  1);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.DEVICETYPE, "P9",    Boolean.FALSE);
             ITUtilStructures.assertExists(Type.DEVICETYPE, "C9",    Boolean.FALSE);
@@ -1939,37 +1983,37 @@ class StructuresDeviceTypeIT {
             ITUtilStructures.assertRead("/DEVICETYPE?deleted=true&statuses=REJECTED&mnemonic=A__",                    5);
             ITUtilStructures.assertRead("/DEVICETYPE?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__",  10);
 
-            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + disciplineUuid.toString(),   0);
-            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + deviceGroupUuid.toString(), 45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + uuid.toString(),             0);
-
-            ITUtilStructures.assertRead("/DEVICETYPE?name=na",                               0);
-            ITUtilStructures.assertRead("/DEVICETYPE?name=na_",                              0);
-            ITUtilStructures.assertRead("/DEVICETYPE?name=na__",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?name=na___",                            0);
-            ITUtilStructures.assertRead("/DEVICETYPE?name=na%",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?name=name",                            45, -1);
-
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonicPath=A__",                      0);
-
-            ITUtilStructures.assertRead("/DEVICETYPE?description=desc",                      0);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=desc%",                    35, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=sc",                        0);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=sc%",                       0);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=%sc",                       0);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=%sc%",                     45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?description=description",              35, -1);
-
-            ITUtilStructures.assertRead("/DEVICETYPE?who=test who",                         45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=test",                              0);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=who",                               0);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=test%",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=%who",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=%est%",                            45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=%wh%",                             45, -1);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=wh%",                               0);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=asdf",                              0);
-            ITUtilStructures.assertRead("/DEVICETYPE?who=%asdf%",                            0);
+            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + disciplineUuid.toString(),                            0);
+            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + deviceGroupUuid.toString(),                          45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?parent=" + uuid.toString(),                                      0);
+
+            ITUtilStructures.assertRead("/DEVICETYPE?name=na",                                                        0);
+            ITUtilStructures.assertRead("/DEVICETYPE?name=na_",                                                       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?name=na__",                                                     45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?name=na___",                                                     0);
+            ITUtilStructures.assertRead("/DEVICETYPE?name=na%",                                                      45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?name=name",                                                     45, -1);
+
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonicPath=A__",                                               0);
+
+            ITUtilStructures.assertRead("/DEVICETYPE?description=desc",                                               0);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=desc%",                                             35, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=sc",                                                 0);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=sc%",                                                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=%sc",                                                0);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=%sc%",                                              45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?description=description",                                       35, -1);
+
+            ITUtilStructures.assertRead("/DEVICETYPE?who=test who",                                                  45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=test",                                                       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=who",                                                        0);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=test%",                                                     45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=%who",                                                      45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=%est%",                                                     45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=%wh%",                                                      45, -1);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=wh%",                                                        0);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=asdf",                                                       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?who=%asdf%",                                                     0);
 
             // order by
             //     avoid
@@ -2026,27 +2070,27 @@ class StructuresDeviceTypeIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=100",     45);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=100",      0);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=45",      45);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=45",       0);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=20",      20);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=20",      20);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20",       5);
-            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=3&pageSize=20",       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=100",                                     45);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=45",                                      45);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=45",                                       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=0&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=1&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=2&pageSize=20",                                       5);
+            ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&page=3&pageSize=20",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",      12);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",      12);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",       6);
-            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",       0);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",    6);
+            ITUtilStructures.assertRead("/DEVICETYPE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",     20);
-            response2 = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",     5);
+            response  = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",  20);
+            response2 = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",  5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20",    20);
-            response2 = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",      5);
+            response  = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20);
+            response2 = ITUtilStructures.assertRead("/DEVICETYPE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",   5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -2059,55 +2103,69 @@ class StructuresDeviceTypeIT {
             // children
             //     /children/{uuid}
             //     uuid, statuses, deleted
-            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                  0);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString(),                                      15, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED",               15, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=ARCHIVED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED,PENDING",       0, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED,PENDING",       15, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=false",  9, -1);
-            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=true",   6, -1);
-            ITUtilStructures.assertRead("/children/" + disciplineUuid.toString(),                             1);
+            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                      0);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString(),                                          15, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED",                   15, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=ARCHIVED",                    0, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED",                   0, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=PENDING",                     0, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=REJECTED",                    0, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=CANCELLED,PENDING",           0, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED,PENDING",           15, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=false",      9, -1);
+            ITUtilStructures.assertRead("/children/" + deviceGroupUuid.toString() + "?statuses=APPROVED&deleted=true",       6, -1);
+            ITUtilStructures.assertRead("/children/" + disciplineUuid.toString(),                                            1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                       0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                                    15, -1);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                                     5);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                                     1);
-            ITUtilStructures.assertRead("/mnemonic/Di",                                      1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                       0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                    15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                    10);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                     2);
+            ITUtilStructures.assertRead("/mnemonic/Di",                                                                      1);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                    15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                     5);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                     1);
+            ITUtilStructures.assertRead("/mnemonic/Di?statuses=APPROVED&deleted=false",                                      1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/A",                                   0);
-            ITUtilStructures.assertRead("/mnemonicPath/A__",                                 0);
-            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                 0);
-            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                 0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-A%",                              15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-A",                                0);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-A__",                             15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-AG_",                              5);
-            ITUtilStructures.assertRead("/mnemonicPath/Di-AG1",                              1);
+            ITUtilStructures.assertRead("/mnemonicPath/A",                                                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__",                                                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A%",                                                              15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A",                                                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A__",                                                             15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-AG_",                                                             10);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-AG1",                                                              2);
+            ITUtilStructures.assertRead("/mnemonicPath/A?statuses=APPROVED&deleted=false",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__?statuses=APPROVED&deleted=false",                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_?statuses=APPROVED&deleted=false",                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1?statuses=APPROVED&deleted=false",                                 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A%?statuses=APPROVED&deleted=false",                              15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A?statuses=APPROVED&deleted=false",                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-A__?statuses=APPROVED&deleted=false",                             15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-AG_?statuses=APPROVED&deleted=false",                              5);
+            ITUtilStructures.assertRead("/mnemonicPath/Di-AG1?statuses=APPROVED&deleted=false",                              1);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                     2);
-            ITUtilHistory.assertHistoryStructures("/" + deviceGroupUuid.toString(),          2);
-            ITUtilHistory.assertHistoryStructures("/" + disciplineUuid.toString(),           2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                     2);
+            ITUtilHistory.assertHistoryStructures("/" + deviceGroupUuid.toString(),                                          2);
+            ITUtilHistory.assertHistoryStructures("/" + disciplineUuid.toString(),                                           2);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + uuid.toString(),               0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + uuid2.toString(),              0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + deviceGroupUuid.toString(),  100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + disciplineUuid.toString(),     0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&name=na%",                              100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_",                           20);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&description=%other%",                    40);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&who=%wh%",                              100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + uuid.toString(),                              0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + uuid2.toString(),                             0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + deviceGroupUuid.toString(),                 100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&parent=" + disciplineUuid.toString(),                    0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&name=na%",                                             100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_",                                          20);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&description=%other%",                                   40);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&who=%wh%",                                             100, -1);
 
             //     order by
             //         avoid
@@ -2164,14 +2222,14 @@ class StructuresDeviceTypeIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=100",       20);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=100",        0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=20",        20);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=20",         0);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=8",          8);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=8",          8);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=2&pageSize=8",          4);
-            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=3&pageSize=8",          0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=100",                         20);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=100",                          0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=20",                          20);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=20",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=0&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=1&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=2&pageSize=8",                            4);
+            ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&page=3&pageSize=8",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=DEVICETYPE&mnemonic=AF_&orderBy=WHEN&isAsc=true&page=0&pageSize=8",    8);
diff --git a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
index 2196f633..69649d3c 100644
--- a/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresDisciplineIT.java
@@ -1024,20 +1024,22 @@ class StructuresDisciplineIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rsha",   1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rsha",                  1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha",                 0);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1049,20 +1051,22 @@ class StructuresDisciplineIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rsha",  1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                               1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rsha",                  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rsha",                 1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rsha",                 0);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rsha",     1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              1);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha", 1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          1);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1102,20 +1106,22 @@ class StructuresDisciplineIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshc",   1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                 1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshc",                   1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc",                  0);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1127,20 +1133,22 @@ class StructuresDisciplineIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshc", 1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                 0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                               1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshc",                   0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshc",                 1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshc",                  0);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1180,20 +1188,22 @@ class StructuresDisciplineIT {
             // read (1)
             length = ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshr",   1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshr",                  1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr",                 0);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1205,20 +1215,22 @@ class StructuresDisciplineIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/DISCIPLINE", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr",  1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED",                               1, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&mnemonic=Rshr",                  0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=APPROVED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=CANCELLED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=REJECTED&mnemonic=Rshr",                 1);
 
             ITUtilStructures.assertFind("/DISCIPLINE/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1308,15 +1320,19 @@ class StructuresDisciplineIT {
             ITUtilStructures.assertFind("/DISCIPLINE/" + uuid3.toString());
             ITUtilStructures.assertFind("/DISCIPLINE/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 1);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.DISCIPLINE, "P1", Boolean.FALSE);
             ITUtilStructures.assertExists(Type.DISCIPLINE, "C1", Boolean.FALSE);
@@ -1480,15 +1496,19 @@ class StructuresDisciplineIT {
             ITUtilStructures.assertFind("/DISCIPLINE/" + uuid3.toString());
             ITUtilStructures.assertFind("/DISCIPLINE/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 1);
-            ITUtilStructures.assertRead("/mnemonic/C9", 1);
-            ITUtilStructures.assertRead("/mnemonic/R9", 1);
-            ITUtilStructures.assertRead("/mnemonic/A9", 1);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  1);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.DISCIPLINE, "P9", Boolean.TRUE);
             ITUtilStructures.assertExists(Type.DISCIPLINE, "C9", Boolean.TRUE);
@@ -1837,35 +1857,35 @@ class StructuresDisciplineIT {
             ITUtilStructures.assertRead("/DISCIPLINE?deleted=true&statuses=REJECTED&mnemonic=A__",                    5);
             ITUtilStructures.assertRead("/DISCIPLINE?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__",  10);
 
-            ITUtilStructures.assertRead("/DISCIPLINE?parent=" + uuid.toString(),      0);
-
-            ITUtilStructures.assertRead("/DISCIPLINE?name=na",                        0);
-            ITUtilStructures.assertRead("/DISCIPLINE?name=na_",                       0);
-            ITUtilStructures.assertRead("/DISCIPLINE?name=na__",                     45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?name=na___",                     0);
-            ITUtilStructures.assertRead("/DISCIPLINE?name=na%",                      45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?name=name",                     45, -1);
-
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonicPath=A__",              45, -1);
-
-            ITUtilStructures.assertRead("/DISCIPLINE?description=desc",               0);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=desc%",             35, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=sc",                 0);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=sc%",                0);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=%sc",                0);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=%sc%",              45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?description=description",       35, -1);
-
-            ITUtilStructures.assertRead("/DISCIPLINE?who=test who",                  45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=test",                       0);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=who",                        0);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=test%",                     45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=%who",                      45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=%est%",                     45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=%wh%",                      45, -1);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=wh%",                        0);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=asdf",                       0);
-            ITUtilStructures.assertRead("/DISCIPLINE?who=%asdf%",                     0);
+            ITUtilStructures.assertRead("/DISCIPLINE?parent=" + uuid.toString(),                                      0);
+
+            ITUtilStructures.assertRead("/DISCIPLINE?name=na",                                                        0);
+            ITUtilStructures.assertRead("/DISCIPLINE?name=na_",                                                       0);
+            ITUtilStructures.assertRead("/DISCIPLINE?name=na__",                                                     45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?name=na___",                                                     0);
+            ITUtilStructures.assertRead("/DISCIPLINE?name=na%",                                                      45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?name=name",                                                     45, -1);
+
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonicPath=A__",                                              45, -1);
+
+            ITUtilStructures.assertRead("/DISCIPLINE?description=desc",                                               0);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=desc%",                                             35, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=sc",                                                 0);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=sc%",                                                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=%sc",                                                0);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=%sc%",                                              45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?description=description",                                       35, -1);
+
+            ITUtilStructures.assertRead("/DISCIPLINE?who=test who",                                                  45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=test",                                                       0);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=who",                                                        0);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=test%",                                                     45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=%who",                                                      45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=%est%",                                                     45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=%wh%",                                                      45, -1);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=wh%",                                                        0);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=asdf",                                                       0);
+            ITUtilStructures.assertRead("/DISCIPLINE?who=%asdf%",                                                     0);
 
             // order by
             //     avoid
@@ -1922,27 +1942,27 @@ class StructuresDisciplineIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=100",                 45);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=100",                  0);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=45",                  45);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=45",                   0);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=20",                  20);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=20",                  20);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20",                   5);
-            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=3&pageSize=20",                   0);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=100",                                     45);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=45",                                      45);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=45",                                       0);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=0&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=1&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=2&pageSize=20",                                       5);
+            ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&page=3&pageSize=20",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",      12);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",      12);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",       6);
-            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",       0);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",    6);
+            ITUtilStructures.assertRead("/DISCIPLINE?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",     20);
-            response2 = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",     5);
+            response  = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",  20);
+            response2 = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",  5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20",    20);
-            response2 = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",      5);
+            response  = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20);
+            response2 = ITUtilStructures.assertRead("/DISCIPLINE?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",   5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -1954,37 +1974,45 @@ class StructuresDisciplineIT {
             // children
             //     /children/{uuid}
             //     uuid, statuses, deleted
-            ITUtilStructures.assertRead("/children/" + uuid.toString(),               0);
+            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                      0);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                             15, -1);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                              5);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                              1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                       0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                    15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                    10);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                     2);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                    15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                     5);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                     1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/A",                            0);
-            ITUtilStructures.assertRead("/mnemonicPath/A__",                         15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/AG_",                          5);
-            ITUtilStructures.assertRead("/mnemonicPath/AG1",                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/A",                                                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__",                                                                15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                                                10);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                                                 2);
+            ITUtilStructures.assertRead("/mnemonicPath/A?statuses=APPROVED&deleted=false",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__?statuses=APPROVED&deleted=false",                                15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_?statuses=APPROVED&deleted=false",                                 5);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1?statuses=APPROVED&deleted=false",                                 1);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),              2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),             8);
-            ITUtilHistory.assertHistoryStructures("/" + uuidRandom.toString(),        0);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                     2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),                                                    8);
+            ITUtilHistory.assertHistoryStructures("/" + uuidRandom.toString(),                                               0);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuid.toString(),          0);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuid2.toString(),         0);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuidRandom.toString(),    0);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&name=na%",                         100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_",                      20);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&description=%other%",               40);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&who=%wh%",                         100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuid.toString(),                              0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuid2.toString(),                             0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&parent=" + uuidRandom.toString(),                        0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&name=na%",                                             100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_",                                          20);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&description=%other%",                                   40);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&who=%wh%",                                             100, -1);
 
             //     order by
             //         avoid
@@ -2041,14 +2069,14 @@ class StructuresDisciplineIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=100",  20);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=100",   0);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=20",   20);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=20",    0);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=8",     8);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=8",     8);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=2&pageSize=8",     4);
-            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=3&pageSize=8",     0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=100",                         20);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=100",                          0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=20",                          20);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=20",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=0&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=1&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=2&pageSize=8",                            4);
+            ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&page=3&pageSize=8",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=DISCIPLINE&mnemonic=AF_&orderBy=WHEN&isAsc=true&page=0&pageSize=8",    8);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
index f047ca99..03dc12dc 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSubsystemIT.java
@@ -1087,30 +1087,42 @@ class StructuresSubsystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rsha",   1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                 1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rsha",                   1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rsha",                  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha",                  0);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",            0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha",     0);
-
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",               1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha?statuses=APPROVED&deleted=false",       0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha",                                      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha?statuses=APPROVED&deleted=false",      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha?statuses=APPROVED&deleted=false",   0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1124,30 +1136,42 @@ class StructuresSubsystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rsha",  1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rsha",                   0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rsha",                  1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rsha",                  0);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",            1);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha",     0);
-
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha",    1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",               1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rsha?statuses=APPROVED&deleted=false",       0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha",                                      1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rsha?statuses=APPROVED&deleted=false",      1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rsha?statuses=APPROVED&deleted=false",   0);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1189,30 +1213,42 @@ class StructuresSubsystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshc",   1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                  1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshc",                    1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshc",                   0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc",                   0);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",            0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc",     0);
-
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                             0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",             0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc?statuses=APPROVED&deleted=false",        0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                         0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc",                                    0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",         0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc?statuses=APPROVED&deleted=false",       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc?statuses=APPROVED&deleted=false",    0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1226,30 +1262,42 @@ class StructuresSubsystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshc", 1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                  0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                                1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshc",                    0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshc",                   0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshc",                  1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshc",                   0);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",            0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc",     0);
-
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                             0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",             0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshc?statuses=APPROVED&deleted=false",        0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                         0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc",                                    0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",         0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshc?statuses=APPROVED&deleted=false",       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshc?statuses=APPROVED&deleted=false",    0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1291,32 +1339,44 @@ class StructuresSubsystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshr",   1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                 1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshr",                   1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshr",                  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr",                  0);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",            0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr?statuses=APPROVED&deleted=false",       0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr",                                      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr?statuses=APPROVED&deleted=false",      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr?statuses=APPROVED&deleted=false",   0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr", 0);
-
-            ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
+            ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "Rshr",        Boolean.FALSE);
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "Sys-Rshr",    Boolean.FALSE);
@@ -1328,30 +1388,42 @@ class StructuresSubsystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SUBSYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr",  1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING",                                 0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED",                                0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED",                               0, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED",                                1, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&mnemonic=Rshr",                   0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=APPROVED&mnemonic=Rshr",                  0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=CANCELLED&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=REJECTED&mnemonic=Rshr",                  1);
 
             ITUtilStructures.assertFind("/SUBSYSTEM/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",              1);
-            ITUtilStructures.assertRead("/mnemonic/Sys",             1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",            0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",          0);
-            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr",     0);
-
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys",         1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",      0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Sys?statuses=APPROVED&deleted=false",               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys?statuses=APPROVED&deleted=false",            0);
+            ITUtilStructures.assertRead("/mnemonic/Sys-Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Sys-Rshr?statuses=APPROVED&deleted=false",       0);
+
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr",                                      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr",                                   0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys?statuses=APPROVED&deleted=false",           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-Rshr?statuses=APPROVED&deleted=false",      0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys-Rshr?statuses=APPROVED&deleted=false",   0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1443,15 +1515,19 @@ class StructuresSubsystemIT {
             ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid3.toString());
             ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 1);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "P1",        Boolean.FALSE);
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "C1",        Boolean.FALSE);
@@ -1623,15 +1699,19 @@ class StructuresSubsystemIT {
             ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid3.toString());
             ITUtilStructures.assertFind("/SUBSYSTEM/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 1);
-            ITUtilStructures.assertRead("/mnemonic/C9", 1);
-            ITUtilStructures.assertRead("/mnemonic/R9", 1);
-            ITUtilStructures.assertRead("/mnemonic/A9", 1);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  1);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "P9",        Boolean.FALSE);
             ITUtilStructures.assertExists(Type.SUBSYSTEM, "C9",        Boolean.FALSE);
@@ -1987,37 +2067,37 @@ class StructuresSubsystemIT {
             ITUtilStructures.assertRead("/SUBSYSTEM?deleted=true&statuses=REJECTED&mnemonic=A__",                    5);
             ITUtilStructures.assertRead("/SUBSYSTEM?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__",  10);
 
-            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + systemGroupUuid.toString(),  0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + systemUuid.toString(),      45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + uuid.toString(),             0);
-
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=na",                               0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=na_",                              0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=na__",                            45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=na___",                            0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=na%",                             45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?name=name",                            45, -1);
-
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonicPath=A__",                      0);
-
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=desc",                      0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=desc%",                    35, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=sc",                        0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=sc%",                       0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=%sc",                       0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=%sc%",                     45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?description=description",              35, -1);
-
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=test who",                         45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=test",                              0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=who",                               0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=test%",                            45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=%who",                             45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=%est%",                            45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=%wh%",                             45, -1);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=wh%",                               0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=asdf",                              0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?who=%asdf%",                            0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + systemGroupUuid.toString(),                           0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + systemUuid.toString(),                               45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?parent=" + uuid.toString(),                                      0);
+
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=na",                                                        0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=na_",                                                       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=na__",                                                     45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=na___",                                                     0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=na%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?name=name",                                                     45, -1);
+
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonicPath=A__",                                               0);
+
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=desc",                                               0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=desc%",                                             35, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=sc",                                                 0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=sc%",                                                0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=%sc",                                                0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=%sc%",                                              45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?description=description",                                       35, -1);
+
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=test who",                                                  45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=test",                                                       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=who",                                                        0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=test%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=%who",                                                      45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=%est%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=%wh%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=wh%",                                                        0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=asdf",                                                       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?who=%asdf%",                                                     0);
 
             // order by
             //     avoid
@@ -2074,27 +2154,27 @@ class StructuresSubsystemIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=100",     45);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=100",      0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=45",      45);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=45",       0);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=20",      20);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=20",      20);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20",       5);
-            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=3&pageSize=20",       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=100",                                     45);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=45",                                      45);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=45",                                       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=0&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=1&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=2&pageSize=20",                                       5);
+            ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&page=3&pageSize=20",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",       6);
-            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",       0);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",    6);
+            ITUtilStructures.assertRead("/SUBSYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",     20);
-            response2 = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",     5);
+            response  = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",  20);
+            response2 = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",  5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20",    20);
-            response2 = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",      5);
+            response  = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20);
+            response2 = ITUtilStructures.assertRead("/SUBSYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",   5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -2107,65 +2187,89 @@ class StructuresSubsystemIT {
             // children
             //     /children/{uuid}
             //     uuid, statuses, deleted
-            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                             0);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString(),                                      15, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED",               15, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=ARCHIVED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED,PENDING",       0, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED,PENDING",       15, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=false",  9, -1);
-            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=true",   6, -1);
-            ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString(),                                  1);
+            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                     0);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString(),                                              15, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED",                       15, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=ARCHIVED",                        0, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED",                       0, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=PENDING",                         0, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=REJECTED",                        0, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=CANCELLED,PENDING",               0, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED,PENDING",               15, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=false",          9, -1);
+            ITUtilStructures.assertRead("/children/" + systemUuid.toString() + "?statuses=APPROVED&deleted=true",           6, -1);
+            ITUtilStructures.assertRead("/children/" + systemGroupUuid.toString(),                                          1);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                      0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                                   15, -1);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                                    5);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                                    1);
-            ITUtilStructures.assertRead("/mnemonic/Sg",                                     1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                      0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                   15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                   10);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                    2);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                                     1);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                      0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                   15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                    5);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                    1);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                                     1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/A",                                  0);
-            ITUtilStructures.assertRead("/mnemonicPath/A__",                                0);
-            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                0);
-            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-A%",                            15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-A",                              0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-A__",                           15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG_",                            5);
-            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG1",                            1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%",                              0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A",                               0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys%",                            0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys__",                           0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys_",                            0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/A",                                                                  0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__",                                                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A%",                                                            15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A",                                                              0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A__",                                                           15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG_",                                                           10);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG1",                                                            2);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%",                                                              0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A",                                                               0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__",                                                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_",                                                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1",                                                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys%",                                                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys__",                                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys_",                                                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys",                                                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/A?statuses=APPROVED&deleted=false",                                  0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__?statuses=APPROVED&deleted=false",                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_?statuses=APPROVED&deleted=false",                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1?statuses=APPROVED&deleted=false",                                0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A%?statuses=APPROVED&deleted=false",                            15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A?statuses=APPROVED&deleted=false",                              0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-A__?statuses=APPROVED&deleted=false",                           15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG_?statuses=APPROVED&deleted=false",                            5);
+            ITUtilStructures.assertRead("/mnemonicPath/Sys-AG1?statuses=APPROVED&deleted=false",                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%?statuses=APPROVED&deleted=false",                              0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A?statuses=APPROVED&deleted=false",                               0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__?statuses=APPROVED&deleted=false",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_?statuses=APPROVED&deleted=false",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1?statuses=APPROVED&deleted=false",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys%?statuses=APPROVED&deleted=false",                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys__?statuses=APPROVED&deleted=false",                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys_?statuses=APPROVED&deleted=false",                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Sys?statuses=APPROVED&deleted=false",                             0);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                    2);
-            ITUtilHistory.assertHistoryStructures("/" + systemUuid.toString(),              2);
-            ITUtilHistory.assertHistoryStructures("/" + systemGroupUuid.toString(),         2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                    2);
+            ITUtilHistory.assertHistoryStructures("/" + systemUuid.toString(),                                              2);
+            ITUtilHistory.assertHistoryStructures("/" + systemGroupUuid.toString(),                                         2);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + uuid.toString(),               0);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + uuid2.toString(),              0);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + systemUuid.toString(),       100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + systemGroupUuid.toString(),    0);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&name=na%",                              100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_",                           20);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&description=%other%",                    40);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&who=%wh%",                              100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + uuid.toString(),                              0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + uuid2.toString(),                             0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + systemUuid.toString(),                      100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&parent=" + systemGroupUuid.toString(),                   0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&name=na%",                                             100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_",                                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&description=%other%",                                   40);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&who=%wh%",                                             100, -1);
 
             //     order by
             //         avoid
@@ -2222,14 +2326,14 @@ class StructuresSubsystemIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=100",       20);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=100",        0);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=20",        20);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=20",         0);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=8",          8);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=8",          8);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=2&pageSize=8",          4);
-            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=3&pageSize=8",          0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=100",                         20);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=100",                          0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=20",                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=20",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=0&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=1&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=2&pageSize=8",                            4);
+            ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&page=3&pageSize=8",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=SUBSYSTEM&mnemonic=AF_&orderBy=WHEN&isAsc=true&page=0&pageSize=8",    8);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
index d6f3fdcf..9910c720 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemGroupIT.java
@@ -1086,20 +1086,22 @@ class StructuresSystemGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rsha",   1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                               1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rsha",                 1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rsha",                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rsha",               0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha",                0);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1111,20 +1113,22 @@ class StructuresSystemGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rsha",  1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                              1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rsha",                 0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rsha",                1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rsha",               0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rsha",                0);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rsha",     1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              1);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha", 1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          1);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1164,20 +1168,22 @@ class StructuresSystemGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshc",   1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                                1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshc",                  1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshc",                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc",                 0);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1189,20 +1195,22 @@ class StructuresSystemGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshc", 1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                                0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                              1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshc",                  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshc",                 0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshc",                1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshc",                 0);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1242,20 +1250,22 @@ class StructuresSystemGroupIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshr",   1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                               1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshr",                 1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshr",               0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr",                0);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1267,20 +1277,22 @@ class StructuresSystemGroupIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEMGROUP", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr",  1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING",                               0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED",                              0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED",                             0, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED",                              1, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&mnemonic=Rshr",                 0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=APPROVED&mnemonic=Rshr",                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=CANCELLED&mnemonic=Rshr",               0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=REJECTED&mnemonic=Rshr",                1);
 
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1370,15 +1382,19 @@ class StructuresSystemGroupIT {
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid3.toString());
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 1);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.SYSTEMGROUP, "P1", Boolean.FALSE);
             ITUtilStructures.assertExists(Type.SYSTEMGROUP, "C1", Boolean.FALSE);
@@ -1542,15 +1558,19 @@ class StructuresSystemGroupIT {
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid3.toString());
             ITUtilStructures.assertFind("/SYSTEMGROUP/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 1);
-            ITUtilStructures.assertRead("/mnemonic/C9", 1);
-            ITUtilStructures.assertRead("/mnemonic/R9", 1);
-            ITUtilStructures.assertRead("/mnemonic/A9", 1);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  1);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.SYSTEMGROUP, "P9", Boolean.TRUE);
             ITUtilStructures.assertExists(Type.SYSTEMGROUP, "C9", Boolean.TRUE);
@@ -1899,35 +1919,35 @@ class StructuresSystemGroupIT {
             ITUtilStructures.assertRead("/SYSTEMGROUP?deleted=true&statuses=REJECTED&mnemonic=A__",                    5);
             ITUtilStructures.assertRead("/SYSTEMGROUP?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__",  10);
 
-            ITUtilStructures.assertRead("/SYSTEMGROUP?parent=" + uuid.toString(),      0);
-
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na",                        0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na_",                       0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na__",                     45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na___",                     0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na%",                      45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?name=name",                     45, -1);
-
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonicPath=A__",              45, -1);
-
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=desc",               0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=desc%",             35, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=sc",                 0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=sc%",                0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=%sc",                0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=%sc%",              45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?description=description",       35, -1);
-
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test who",                  45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test",                       0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=who",                        0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test%",                     45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%who",                      45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%est%",                     45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%wh%",                      45, -1);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=wh%",                        0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=asdf",                       0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%asdf%",                     0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?parent=" + uuid.toString(),                                      0);
+
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na_",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na__",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na___",                                                     0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=na%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?name=name",                                                     45, -1);
+
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonicPath=A__",                                              45, -1);
+
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=desc",                                               0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=desc%",                                             35, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=sc",                                                 0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=sc%",                                                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=%sc",                                                0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=%sc%",                                              45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?description=description",                                       35, -1);
+
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test who",                                                  45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=who",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=test%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%who",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%est%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%wh%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=wh%",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=asdf",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?who=%asdf%",                                                     0);
 
             // order by
             //     avoid
@@ -1985,27 +2005,27 @@ class StructuresSystemGroupIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=100",                 45);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=100",                  0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=45",                  45);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=45",                   0);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=20",                  20);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=20",                  20);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20",                   5);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=3&pageSize=20",                   0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=100",                                     45);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=45",                                      45);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=45",                                       0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=0&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=1&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=2&pageSize=20",                                       5);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&page=3&pageSize=20",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",       6);
-            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",       0);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",    6);
+            ITUtilStructures.assertRead("/SYSTEMGROUP?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",     20);
-            response2 = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",     5);
+            response  = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",  20);
+            response2 = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",  5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20",    20);
-            response2 = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",      5);
+            response  = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20);
+            response2 = ITUtilStructures.assertRead("/SYSTEMGROUP?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",   5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -2017,37 +2037,45 @@ class StructuresSystemGroupIT {
             // children
             //     /children/{uuid}
             //     uuid, statuses, deleted
-            ITUtilStructures.assertRead("/children/" + uuid.toString(),                0);
+            ITUtilStructures.assertRead("/children/" + uuid.toString(),                                                       0);
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                 0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                              15, -1);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                               5);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                               1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                        0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                     15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                     10);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                      2);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                        0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                     15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                      5);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                      1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/A",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/A__",                          15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/AG_",                           5);
-            ITUtilStructures.assertRead("/mnemonicPath/AG1",                           1);
+            ITUtilStructures.assertRead("/mnemonicPath/A",                                                                    0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__",                                                                 15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                                                 10);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                                                  2);
+            ITUtilStructures.assertRead("/mnemonicPath/A?statuses=APPROVED&deleted=false",                                    0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__?statuses=APPROVED&deleted=false",                                 15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_?statuses=APPROVED&deleted=false",                                  5);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1?statuses=APPROVED&deleted=false",                                  1);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),               2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),              8);
-            ITUtilHistory.assertHistoryStructures("/" + uuidRandom.toString(),         0);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                      2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),                                                     8);
+            ITUtilHistory.assertHistoryStructures("/" + uuidRandom.toString(),                                                0);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuid.toString(),          0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuid2.toString(),         0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuidRandom.toString(),    0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&name=na%",                         100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_",                      20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&description=%other%",               40);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&who=%wh%",                         100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuid.toString(),                              0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuid2.toString(),                             0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&parent=" + uuidRandom.toString(),                        0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&name=na%",                                             100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_",                                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&description=%other%",                                   40);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&who=%wh%",                                             100, -1);
 
             //     order by
             //         avoid
@@ -2105,14 +2133,14 @@ class StructuresSystemGroupIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=100",  20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=100",   0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=20",   20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=20",    0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=8",     8);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=8",     8);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=2&pageSize=8",     4);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=3&pageSize=8",     0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=100",                         20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=100",                          0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=20",                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=20",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=0&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=1&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=2&pageSize=8",                            4);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&page=3&pageSize=8",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=SYSTEMGROUP&mnemonic=AF_&orderBy=WHEN&isAsc=true&page=0&pageSize=8",    8);
diff --git a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
index f902c212..b724e5d1 100644
--- a/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
+++ b/src/test/java/org/openepics/names/docker/StructuresSystemIT.java
@@ -1070,24 +1070,30 @@ class StructuresSystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rsha",   1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rsha",  0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                    1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                  0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rsha",                      1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rsha",                     0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rsha",                    0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha",                     0);
 
             ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1100,24 +1106,30 @@ class StructuresSystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rsha",   0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rsha",  1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rsha", 0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha",  0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                   1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                  0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rsha",                      0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rsha",                     1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rsha",                    0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rsha",                     0);
 
             ITUtilStructures.assertFind("/SYSTEM/" + approvedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rsha",        1);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rsha?statuses=APPROVED&deleted=false",              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rsha?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rsha",    1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha",                                          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rsha?statuses=APPROVED&deleted=false",          1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rsha?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + approvedStructureElement.getUuid().toString(), 2);
 
@@ -1158,24 +1170,30 @@ class StructuresSystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshc",   1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshc", 0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                     1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshc",                       1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshc",                      0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshc",                     0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc",                      0);
 
             ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),   1);
 
@@ -1188,24 +1206,30 @@ class StructuresSystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshc",   0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshc",  0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshc", 1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc",  0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                     0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                   1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshc",                       0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshc",                      0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshc",                     1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshc",                      0);
 
             ITUtilStructures.assertFind("/SYSTEM/" + cancelledStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshc",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc",                                               1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc",                                            0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                 1);
+            ITUtilStructures.assertRead("/mnemonic/Rshc?statuses=APPROVED&deleted=false",               0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshc?statuses=APPROVED&deleted=false",            0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshc",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc",                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc",                                        0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshc?statuses=APPROVED&deleted=false",           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshc?statuses=APPROVED&deleted=false",        0);
 
             ITUtilHistory.assertHistoryStructures("/" + cancelledStructureElement.getUuid().toString(), 2);
 
@@ -1246,24 +1270,30 @@ class StructuresSystemIT {
             // read (1)
             length = ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize();
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshr",   1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr",  0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                    1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                  0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshr",                      1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshr",                     0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshr",                    0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr",                     0);
 
             ITUtilStructures.assertFind("/SYSTEM/" + createdStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + createdStructureElement.getUuid().toString(),  1);
 
@@ -1276,24 +1306,30 @@ class StructuresSystemIT {
             // read (2)
             assertEquals(length, ITUtilStructures.assertRead("/SYSTEM", 1, -1).getListSize());
 
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                 0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",               0, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                1, -1);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshr",   0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshr",  0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshr", 0);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr",  1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING",                                    0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED",                                   0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED",                                  0, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED",                                   1, -1);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&mnemonic=Rshr",                      0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=APPROVED&mnemonic=Rshr",                     0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=CANCELLED&mnemonic=Rshr",                    0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=REJECTED&mnemonic=Rshr",                     1);
 
             ITUtilStructures.assertFind("/SYSTEM/" + rejectedStructureElement.getUuid().toString());
 
-            ITUtilStructures.assertRead("/mnemonic/Sg",          1);
-            ITUtilStructures.assertRead("/mnemonic/Rshr",        0);
-            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr",     0);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr",                                              1);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr",                                           0);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                1);
+            ITUtilStructures.assertRead("/mnemonic/Rshr?statuses=APPROVED&deleted=false",              0);
+            ITUtilStructures.assertRead("/mnemonic/Sg-Rshr?statuses=APPROVED&deleted=false",           0);
 
-            ITUtilStructures.assertRead("/mnemonicPath/Sg",      1);
-            ITUtilStructures.assertRead("/mnemonicPath/Rshr",    0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr", 0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg",                                            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr",                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr",                                       0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg?statuses=APPROVED&deleted=false",            1);
+            ITUtilStructures.assertRead("/mnemonicPath/Rshr?statuses=APPROVED&deleted=false",          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-Rshr?statuses=APPROVED&deleted=false",       0);
 
             ITUtilHistory.assertHistoryStructures("/" + rejectedStructureElement.getUuid().toString(), 2);
 
@@ -1384,15 +1420,19 @@ class StructuresSystemIT {
             ITUtilStructures.assertFind("/SYSTEM/" + uuid3.toString());
             ITUtilStructures.assertFind("/SYSTEM/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P1", 0);
-            ITUtilStructures.assertRead("/mnemonic/C1", 0);
-            ITUtilStructures.assertRead("/mnemonic/R1", 0);
-            ITUtilStructures.assertRead("/mnemonic/A1", 1);
+            ITUtilStructures.assertRead("/mnemonic/P1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/C1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/R1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/A1",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/P1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/C1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/R1?statuses=APPROVED&deleted=false", 0);
+            ITUtilStructures.assertRead("/mnemonic/A1?statuses=APPROVED&deleted=false", 1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  1);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 2);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                1);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               2);
 
             ITUtilStructures.assertExists(Type.SYSTEM, "P1",    Boolean.FALSE);
             ITUtilStructures.assertExists(Type.SYSTEM, "C1",    Boolean.FALSE);
@@ -1560,15 +1600,19 @@ class StructuresSystemIT {
             ITUtilStructures.assertFind("/SYSTEM/" + uuid3.toString());
             ITUtilStructures.assertFind("/SYSTEM/" + uuid4.toString());
 
-            ITUtilStructures.assertRead("/mnemonic/P9", 1);
-            ITUtilStructures.assertRead("/mnemonic/C9", 1);
-            ITUtilStructures.assertRead("/mnemonic/R9", 1);
-            ITUtilStructures.assertRead("/mnemonic/A9", 1);
+            ITUtilStructures.assertRead("/mnemonic/P9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/C9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/R9",                                  2);
+            ITUtilStructures.assertRead("/mnemonic/A9",                                  1);
+            ITUtilStructures.assertRead("/mnemonic/P9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/C9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/R9?statuses=APPROVED&deleted=false",  1);
+            ITUtilStructures.assertRead("/mnemonic/A9?statuses=APPROVED&deleted=false",  1);
 
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),  17);
-            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(), 18);
-            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(), 18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                17);
+            ITUtilHistory.assertHistoryStructures("/" + uuid2.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid3.toString(),               18);
+            ITUtilHistory.assertHistoryStructures("/" + uuid4.toString(),               18);
 
             ITUtilStructures.assertExists(Type.SYSTEM, "P9",    Boolean.TRUE);
             ITUtilStructures.assertExists(Type.SYSTEM, "C9",    Boolean.TRUE);
@@ -1920,36 +1964,36 @@ class StructuresSystemIT {
             ITUtilStructures.assertRead("/SYSTEM?deleted=true&statuses=REJECTED&mnemonic=A__",                    5);
             ITUtilStructures.assertRead("/SYSTEM?deleted=true&statuses=PENDING&statuses=APPROVED&mnemonic=A__",  10);
 
-            ITUtilStructures.assertRead("/SYSTEM?parent=" + systemGroupUuid.toString(),    45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?parent=" + uuid.toString(),                0);
-
-            ITUtilStructures.assertRead("/SYSTEM?name=na",                                  0);
-            ITUtilStructures.assertRead("/SYSTEM?name=na_",                                 0);
-            ITUtilStructures.assertRead("/SYSTEM?name=na__",                               45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?name=na___",                               0);
-            ITUtilStructures.assertRead("/SYSTEM?name=na%",                                45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?name=name",                               45, -1);
-
-            ITUtilStructures.assertRead("/SYSTEM?mnemonicPath=A__",                        30);
-
-            ITUtilStructures.assertRead("/SYSTEM?description=desc",                         0);
-            ITUtilStructures.assertRead("/SYSTEM?description=desc%",                       35, -1);
-            ITUtilStructures.assertRead("/SYSTEM?description=sc",                           0);
-            ITUtilStructures.assertRead("/SYSTEM?description=sc%",                          0);
-            ITUtilStructures.assertRead("/SYSTEM?description=%sc",                          0);
-            ITUtilStructures.assertRead("/SYSTEM?description=%sc%",                        45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?description=description",                 35, -1);
-
-            ITUtilStructures.assertRead("/SYSTEM?who=test who",                            45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?who=test",                                 0);
-            ITUtilStructures.assertRead("/SYSTEM?who=who",                                  0);
-            ITUtilStructures.assertRead("/SYSTEM?who=test%",                               45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?who=%who",                                45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?who=%est%",                               45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?who=%wh%",                                45, -1);
-            ITUtilStructures.assertRead("/SYSTEM?who=wh%",                                  0);
-            ITUtilStructures.assertRead("/SYSTEM?who=asdf",                                 0);
-            ITUtilStructures.assertRead("/SYSTEM?who=%asdf%",                               0);
+            ITUtilStructures.assertRead("/SYSTEM?parent=" + systemGroupUuid.toString(),                          45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?parent=" + uuid.toString(),                                      0);
+
+            ITUtilStructures.assertRead("/SYSTEM?name=na",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEM?name=na_",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEM?name=na__",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?name=na___",                                                     0);
+            ITUtilStructures.assertRead("/SYSTEM?name=na%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?name=name",                                                     45, -1);
+
+            ITUtilStructures.assertRead("/SYSTEM?mnemonicPath=A__",                                              30);
+
+            ITUtilStructures.assertRead("/SYSTEM?description=desc",                                               0);
+            ITUtilStructures.assertRead("/SYSTEM?description=desc%",                                             35, -1);
+            ITUtilStructures.assertRead("/SYSTEM?description=sc",                                                 0);
+            ITUtilStructures.assertRead("/SYSTEM?description=sc%",                                                0);
+            ITUtilStructures.assertRead("/SYSTEM?description=%sc",                                                0);
+            ITUtilStructures.assertRead("/SYSTEM?description=%sc%",                                              45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?description=description",                                       35, -1);
+
+            ITUtilStructures.assertRead("/SYSTEM?who=test who",                                                  45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?who=test",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEM?who=who",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEM?who=test%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?who=%who",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?who=%est%",                                                     45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?who=%wh%",                                                      45, -1);
+            ITUtilStructures.assertRead("/SYSTEM?who=wh%",                                                        0);
+            ITUtilStructures.assertRead("/SYSTEM?who=asdf",                                                       0);
+            ITUtilStructures.assertRead("/SYSTEM?who=%asdf%",                                                     0);
 
             // order by
             //     avoid
@@ -2006,27 +2050,27 @@ class StructuresSystemIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             // pagination
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=100",        45);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=100",         0);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=45",         45);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=45",          0);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=20",         20);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=20",         20);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20",          5);
-            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=3&pageSize=20",          0);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=100",                                     45);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=100",                                      0);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=45",                                      45);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=45",                                       0);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=0&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=1&pageSize=20",                                      20);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=2&pageSize=20",                                       5);
+            ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&page=3&pageSize=20",                                       0);
 
             // pagination
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",      12);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",       6);
-            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",       0);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=0&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=1&pageSize=12",   12);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=2&pageSize=12",    6);
+            ITUtilStructures.assertRead("/SYSTEM?statuses=PENDING&statuses=APPROVED&mnemonic=A__&page=3&pageSize=12",    0);
 
             // order by, pagination
-            response  = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",     20);
-            response2 = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",     5);
+            response  = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=0&pageSize=20",  20);
+            response2 = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=2&pageSize=20",  5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20",    20);
-            response2 = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",      5);
+            response  = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=false&page=0&pageSize=20", 20);
+            response2 = ITUtilStructures.assertRead("/SYSTEM?mnemonic=A__&orderBy=WHEN&isAsc=true&page=2&pageSize=20",   5);
             assertEquals(response.getList().get(0), response2.getList().get(response2.getList().size()-1));
 
             // type and uuid
@@ -2052,38 +2096,52 @@ class StructuresSystemIT {
 
             // mnemonic
             //     /mnemonic/{mnemonic}
-            ITUtilStructures.assertRead("/mnemonic/A",                                      0);
-            ITUtilStructures.assertRead("/mnemonic/A__",                                   15, -1);
-            ITUtilStructures.assertRead("/mnemonic/AG_",                                    5);
-            ITUtilStructures.assertRead("/mnemonic/AG1",                                    1);
-            ITUtilStructures.assertRead("/mnemonic/Sg",                                     1);
+            ITUtilStructures.assertRead("/mnemonic/A",                                                                   0);
+            ITUtilStructures.assertRead("/mnemonic/A__",                                                                45, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_",                                                                10);
+            ITUtilStructures.assertRead("/mnemonic/AG1",                                                                 2);
+            ITUtilStructures.assertRead("/mnemonic/Sg",                                                                  1);
+            ITUtilStructures.assertRead("/mnemonic/A?statuses=APPROVED&deleted=false",                                   0);
+            ITUtilStructures.assertRead("/mnemonic/A__?statuses=APPROVED&deleted=false",                                15, -1);
+            ITUtilStructures.assertRead("/mnemonic/AG_?statuses=APPROVED&deleted=false",                                 5);
+            ITUtilStructures.assertRead("/mnemonic/AG1?statuses=APPROVED&deleted=false",                                 1);
+            ITUtilStructures.assertRead("/mnemonic/Sg?statuses=APPROVED&deleted=false",                                  1);
 
             // mnemonic path
             //     /mnemonicPath/{mnemonicPath}
-            ITUtilStructures.assertRead("/mnemonicPath/A",                                  0);
-            ITUtilStructures.assertRead("/mnemonicPath/A__",                               15, -1);
-            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                5);
-            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                1);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%",                              0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A",                               0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_",                             0);
-            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1",                             0);
+            ITUtilStructures.assertRead("/mnemonicPath/A",                                                               0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__",                                                            30, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_",                                                            10);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1",                                                             2);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%",                                                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A",                                                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__",                                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_",                                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1",                                                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/A?statuses=APPROVED&deleted=false",                               0);
+            ITUtilStructures.assertRead("/mnemonicPath/A__?statuses=APPROVED&deleted=false",                            15, -1);
+            ITUtilStructures.assertRead("/mnemonicPath/AG_?statuses=APPROVED&deleted=false",                             5);
+            ITUtilStructures.assertRead("/mnemonicPath/AG1?statuses=APPROVED&deleted=false",                             1);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A%?statuses=APPROVED&deleted=false",                           0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A?statuses=APPROVED&deleted=false",                            0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-A__?statuses=APPROVED&deleted=false",                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG_?statuses=APPROVED&deleted=false",                          0);
+            ITUtilStructures.assertRead("/mnemonicPath/Sg-AG1?statuses=APPROVED&deleted=false",                          0);
 
             // history
             //     /history/structures/{uuid}
-            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                    2);
-            ITUtilHistory.assertHistoryStructures("/" + systemGroupUuid.toString(),         2);
+            ITUtilHistory.assertHistoryStructures("/" + uuid.toString(),                                                 2);
+            ITUtilHistory.assertHistoryStructures("/" + systemGroupUuid.toString(),                                      2);
 
             //     /history/structures?parameter=value
             //         type must be available
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + uuid.toString(),                0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + uuid2.toString(),               0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + systemGroupUuid.toString(),   100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&name=na%",                               100, -1);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_",                            20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&description=%other%",                     40);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&who=%wh%",                               100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + uuid.toString(),                              0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + uuid2.toString(),                             0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&parent=" + systemGroupUuid.toString(),                 100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&name=na%",                                             100, -1);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_",                                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&description=%other%",                                   40);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&who=%wh%",                                             100, -1);
 
             //     order by
             //         avoid
@@ -2140,14 +2198,14 @@ class StructuresSystemIT {
                     || value2 != null && (StringUtils.equals(value2, value0) || StringUtils.equals(value2, value1)));
 
             //     pagination
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=100",        20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=100",         0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=20",         20);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=20",          0);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=8",           8);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=8",           8);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=2&pageSize=8",           4);
-            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=3&pageSize=8",          0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=100",                         20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=100",                          0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=20",                          20);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=20",                           0);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=0&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=1&pageSize=8",                            8);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=2&pageSize=8",                            4);
+            ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&page=3&pageSize=8",                            0);
 
             //     order by, pagination
             ITUtilHistory.assertHistoryStructures("?type=SYSTEM&mnemonic=AF_&orderBy=WHEN&isAsc=true&page=0&pageSize=8",    8);
-- 
GitLab