diff --git a/src/test/java/org/openepics/names/docker/NamesIT.java b/src/test/java/org/openepics/names/docker/NamesIT.java
index 16e6c5c71159e9c1c6263d2bd15700c808ab7d35..765b835debfae450c3af20f7fb346295385b61a0 100644
--- a/src/test/java/org/openepics/names/docker/NamesIT.java
+++ b/src/test/java/org/openepics/names/docker/NamesIT.java
@@ -1171,21 +1171,21 @@ 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);
-            response2 = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=2&pageSize=3",  2);
+            response2 = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=2&pageSize=3",                  2);
             assertEquals(response.getList().get(0),  response2.getList().get(response2.getList().size()-1));
-            response  = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=0&pageSize=3",  3);
-            response2 = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=2&pageSize=3",   2);
+            response  = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=false&page=0&pageSize=3",                  3);
+            response2 = ITUtilNames.assertRead("?index=00_&orderBy=WHEN&isAsc=true&page=2&pageSize=3",                   2);
             assertEquals(response.getList().get(0),  response2.getList().get(response2.getList().size()-1));
 
             // uuid or name
@@ -1204,37 +1204,126 @@ 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",                                            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-F",                                                             0);
+            ITUtilNames.assertRead("/deviceStructure/EMR-F_",                                                            8);
+            ITUtilNames.assertRead("/deviceStructure/EMR-TT",                                                            0);
+
+            // structure uuid
+            //     /structure/{uuid}
+            //         may be non-trivial to understand - may inspect database to learn
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString(),                                            1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=false",                 1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=true",                 13, -1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?deleted=false",                         1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?deleted=true",                          0);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=false&deleted=false",   1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=false&deleted=true",    0);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=true&deleted=false",   11, -1);
+            ITUtilNames.assertRead("/structure/" + systemGroupAcc.toString() + "?includeIndirect=true&deleted=true",     2, -1);
+
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString(),                                                 1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=false",                      1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=true",                      12, -1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?deleted=false",                              1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?deleted=true",                               0);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=false&deleted=false",        1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=false&deleted=true",         0);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=true&deleted=false",        10, -1);
+            ITUtilNames.assertRead("/structure/" + systemRFQ.toString() + "?includeIndirect=true&deleted=true",          2, -1);
+
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString(),                                              9);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=false",                   9);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=true",                    9);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?deleted=false",                           7);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?deleted=true",                            2);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=false&deleted=false",     7);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=false&deleted=true",      2);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=true&deleted=false",      7);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?includeIndirect=true&deleted=true",       2);
+
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString(),                                             1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=false",                  1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=true",                   1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?deleted=false",                          1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?deleted=true",                           0);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=false&deleted=false",    1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=false&deleted=true",     0);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=true&deleted=false",     1);
+            ITUtilNames.assertRead("/structure/" + subsystemN1U1.toString() + "?includeIndirect=true&deleted=true",      0);
+
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString(),                                             0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=false",                  0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=true",                   8, -1);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?deleted=false",                          0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?deleted=true",                           0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=false&deleted=false",    0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=false&deleted=true",     0);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=true&deleted=false",     6, -1);
+            ITUtilNames.assertRead("/structure/" + disciplineEMR.toString() + "?includeIndirect=true&deleted=true",      2, -1);
+
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString(),                                            0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=false",                 0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=true",                  8, -1);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?deleted=false",                         0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?deleted=true",                          0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=false&deleted=false",   0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=false&deleted=true",    0);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=true&deleted=false",    6, -1);
+            ITUtilNames.assertRead("/structure/" + deviceGroupEMR.toString() + "?includeIndirect=true&deleted=true",     2, -1);
+
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString(),                                              8);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=false",                   8);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=true",                    8);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?deleted=false",                           6);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?deleted=true",                            2);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=false&deleted=false",     6);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=false&deleted=true",      2);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=true&deleted=false",      6);
+            ITUtilNames.assertRead("/structure/" + deviceTypeFS.toString() + "?includeIndirect=true&deleted=true",       2);
+
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString(),                                              0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=false",                   0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=true",                    0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?deleted=false",                           0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?deleted=true",                            0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=false&deleted=false",     0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=false&deleted=true",      0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=true&deleted=false",      0);
+            ITUtilNames.assertRead("/structure/" + deviceTypeTT.toString() + "?includeIndirect=true&deleted=true",       0);
+
+            //     pagination
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?page=0&pageSize=4",                       4);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?page=1&pageSize=4",                       4);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?page=2&pageSize=4",                       1);
+            ITUtilNames.assertRead("/structure/" + subsystem010.toString() + "?page=3&pageSize=4",                       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");
@@ -1287,14 +1376,14 @@ class NamesIT {
             assertEquals(response2.getList().get(0).getWhen().toString(),  response.getList().get(response.getList().size()-1).getWhen().toString());
 
             //     pagination
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=100",             12);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=100",              0);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=12",              12);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=12",               0);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=5",                5);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=5",                5);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=2&pageSize=5",                2);
-            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=3&pageSize=5",                0);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=100",                                        12);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=100",                                         0);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=12",                                         12);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=12",                                          0);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=0&pageSize=5",                                           5);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=1&pageSize=5",                                           5);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=2&pageSize=5",                                           2);
+            ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&page=3&pageSize=5",                                           0);
 
             //     order by, pagination
             response  = ITUtilHistory.assertHistoryNames("?deviceStructure=EMR-FS&orderBy=WHEN&isAsc=true&page=0&pageSize=5",       5);