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 e14b0e5e73c44ff6d66086855920d9a0f89fb0a1..3f7cd29a29b08884f5faaedef5db720a29b4f205 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
@@ -137,19 +137,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "201",
-                    description  = "Method completed OK. Return array of created name elements.",
+                    description  = "OK. Return array of created name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = NameElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -196,19 +196,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of name elements.",
+                    description  = "OK. Return paged array of name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageNameElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -245,19 +245,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of name elements.",
+                    description  = "OK. Return paged array of name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageNameElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -293,19 +293,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of name elements.",
+                    description  = "OK. Return paged array of name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageNameElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -341,19 +341,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of name elements.",
+                    description  = "OK. Return paged array of name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageNameElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -389,19 +389,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of name elements.",
+                    description  = "OK. Return paged array of name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageNameElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -431,19 +431,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return name equivalence.",
+                    description  = "OK. Return name equivalence.",
                     content = @Content(
                             mediaType = "text/plain",
                             schema = @Schema(implementation = String.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -472,20 +472,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if name exists, false otherwise. "
+                    description  = "OK. Response is true if name exists, false otherwise. "
                     + "Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBoolean.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -518,20 +518,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if name is legacy name, false otherwise. "
+                    description  = "OK. Response is true if name is legacy name, false otherwise. "
                     + "Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBoolean.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -564,20 +564,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if name is valid to create, false otherwise. "
+                    description  = "OK. Response is true if name is valid to create, false otherwise. "
                     + "Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBoolean.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -618,20 +618,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all name elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all name elements validated ok, false otherwise. "
                     + "Responses contain array with result for each name element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -682,20 +682,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all name elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all name elements validated ok, false otherwise. "
                     + "Responses contain array with result for each name element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -744,20 +744,20 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all name elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all name elements validated ok, false otherwise. "
                     + "Responses contain array with result for each name element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -806,19 +806,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of updated name elements.",
+                    description  = "OK. Return array of updated name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = NameElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -864,19 +864,19 @@ public interface INames {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of deleted name elements.",
+                    description  = "OK. Return array of deleted name elements.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = NameElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
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 73d6dbf80b9e83386cc939994ea3315960696bee..d49c221677b5e2326a82f1b90292ab5742047db1 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
@@ -161,19 +161,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "201",
-                    description  = "Method completed OK. Return array of structure elements for created structures (proposals).",
+                    description  = "OK. Return array of structure elements for created structures (proposals).",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -222,19 +222,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of structure elements.",
+                    description  = "OK. Return paged array of structure elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageStructureElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -275,19 +275,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of structure elements.",
+                    description  = "OK. Return paged array of structure elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageStructureElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -324,19 +324,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of structure elements.",
+                    description  = "OK. Return paged array of structure elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageStructureElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -372,19 +372,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of structure elements.",
+                    description  = "OK. Return paged array of structure elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageStructureElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -421,19 +421,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return paged array of structure elements.",
+                    description  = "OK. Return paged array of structure elements.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponsePageStructureElements.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description = "Internal server error. Message and details are available.",
+                    description = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -464,19 +464,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return mnemonic equivalence.",
+                    description  = "OK. Return mnemonic equivalence.",
                     content = @Content(
                             mediaType = "text/plain",
                             schema = @Schema(implementation = String.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -513,20 +513,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if mnemonic path exists, false otherwise. "
+                    description  = "OK. Response is true if mnemonic path exists, false otherwise. "
                     + "Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBoolean.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -567,20 +567,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if structure is valid to create, false otherwise. "
+                    description  = "OK. Response is true if structure is valid to create, false otherwise. "
                     + "Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBoolean.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -630,20 +630,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -702,20 +702,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -770,20 +770,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -842,20 +842,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -914,20 +914,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -986,20 +986,20 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Response is true if all structure elements validated ok, false otherwise. "
+                    description  = "OK. Response is true if all structure elements validated ok, false otherwise. "
                     + "Responses contain array with result for each structure element. Message and details are available if no response is available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = ResponseBooleanList.class))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -1049,19 +1049,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of structure elements for updated structures (proposals).",
+                    description  = "OK. Return array of structure elements for updated structures (proposals).",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -1108,19 +1108,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of structure elements for deleted structures (proposals).",
+                    description  = "OK. Return array of structure elements for deleted structures (proposals).",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -1170,19 +1170,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of structure elements for approved structures.",
+                    description  = "OK. Return array of structure elements for approved structures.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -1230,19 +1230,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of structure elements for cancelled structures.",
+                    description  = "OK. Return array of structure elements for cancelled structures.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description  = "Internal server error. Message and details are available.",
+                    description  = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
@@ -1290,19 +1290,19 @@ public interface IStructures {
     @ApiResponses(value = {
             @ApiResponse(
                     responseCode = "200",
-                    description  = "Method completed OK. Return array of structure elements for rejected structures.",
+                    description  = "OK. Return array of structure elements for rejected structures.",
                     content = @Content(
                             mediaType = "application/json",
                             array = @ArraySchema(schema = @Schema(implementation = StructureElement.class)))),
             @ApiResponse(
                     responseCode = "400",
-                    description  = "Bad request. Message and details are available.",
+                    description  = "Bad request. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class))),
             @ApiResponse(
                     responseCode = "500",
-                    description = "Internal server error. Message and details are available.",
+                    description = "Internal server error. Reason and information such as message, details, field are available.",
                     content = @Content(
                             mediaType = "application/json",
                             schema = @Schema(implementation = Response.class)))
diff --git a/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java b/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java
index cc6dc3c9b53aa26158b797576e402ba59f972cce..c39844c21dc4eb2b9c96c14ef5064657a3be5c4c 100644
--- a/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java
+++ b/src/main/java/org/openepics/names/rest/controller/GlobalControllerExceptionHandler.java
@@ -55,9 +55,11 @@ public class GlobalControllerExceptionHandler extends ResponseEntityExceptionHan
         HttpStatus resultStatus = HttpStatus.INTERNAL_SERVER_ERROR;
 
         if (ex instanceof ServiceHttpStatusException) {
+            ServiceHttpStatusException shse = (ServiceHttpStatusException) ex;
             response.setMessage(StringUtils.trimToEmpty(ex.getMessage()));
-            response.setDetails(StringUtils.trimToEmpty(((ServiceHttpStatusException) ex).getDetails()));
-            resultStatus = ((ServiceHttpStatusException) ex).getHttpStatus();
+            response.setDetails(StringUtils.trimToEmpty(shse.getDetails()));
+            response.setField(StringUtils.trimToEmpty(shse.getField()));
+            resultStatus = shse.getHttpStatus();
         }
 
         return new ResponseEntity<>(response, Response.HEADER_JSON, resultStatus);
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 5abce3cf096a72c4cfc2be5bc01bfad2611f9cdc..bd3b44236ddaf6243933c0c6e2132018aa868f3d 100644
--- a/src/main/java/org/openepics/names/rest/controller/NamesController.java
+++ b/src/main/java/org/openepics/names/rest/controller/NamesController.java
@@ -198,7 +198,7 @@ public class NamesController implements INames {
         } catch (ServiceHttpStatusException e) {
             LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e);
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
-            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()), Response.HEADER_JSON, HttpStatus.OK);
+            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, e.getMessage());
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -213,7 +213,7 @@ public class NamesController implements INames {
         } catch (ServiceHttpStatusException e) {
             LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e);
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
-            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()), Response.HEADER_JSON, HttpStatus.OK);
+            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, e.getMessage());
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -228,7 +228,7 @@ public class NamesController implements INames {
         } catch (ServiceHttpStatusException e) {
             LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e);
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
-            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()), Response.HEADER_JSON, HttpStatus.OK);
+            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, e.getMessage());
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -254,7 +254,7 @@ public class NamesController implements INames {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -284,7 +284,7 @@ public class NamesController implements INames {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -314,7 +314,7 @@ public class NamesController implements INames {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, 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 1ca9d87edebec1583d9081074c296a39809f43ff..98f363309321f121ee1f07d301aed91ddc8066ca 100644
--- a/src/main/java/org/openepics/names/rest/controller/StructuresController.java
+++ b/src/main/java/org/openepics/names/rest/controller/StructuresController.java
@@ -211,7 +211,7 @@ public class StructuresController implements IStructures {
         } catch (ServiceHttpStatusException e) {
             LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e);
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
-            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()), Response.HEADER_JSON, HttpStatus.OK);
+            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, e.getMessage());
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -226,7 +226,7 @@ public class StructuresController implements IStructures {
         } catch (ServiceHttpStatusException e) {
             LogUtil.logServiceHttpStatusException(LOGGER, Level.SEVERE, e);
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
-            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()), Response.HEADER_JSON, HttpStatus.OK);
+            return new ResponseEntity<>(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()), Response.HEADER_JSON, HttpStatus.OK);
         } catch (Exception e) {
             LOGGER.log(Level.SEVERE, e.getMessage());
             LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -252,7 +252,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -282,7 +282,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -312,7 +312,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -342,7 +342,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -372,7 +372,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
@@ -402,7 +402,7 @@ public class StructuresController implements IStructures {
                     response = false;
                     reason = ExceptionUtil.ONE_OR_MORE_ELEMENTS_ARE_NOT_CORRECT;
                 }
-                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails()));
+                responses.add(new ResponseBoolean(Boolean.FALSE, e.getMessage(), e.getDetails(), e.getField()));
             } catch (Exception e) {
                 LOGGER.log(Level.SEVERE, e.getMessage());
                 LogUtil.logStackTraceElements(LOGGER, Level.SEVERE, e);
diff --git a/src/main/java/org/openepics/names/service/NamesService.java b/src/main/java/org/openepics/names/service/NamesService.java
index 2253996af7baf8c2c8a9c551fefe2210377e4a2b..bdf2c295c61d61ff5500d4ff8956e7feffe258d7 100644
--- a/src/main/java/org/openepics/names/service/NamesService.java
+++ b/src/main/java/org/openepics/names/service/NamesService.java
@@ -372,49 +372,49 @@ public class NamesService {
 
         // do
         List<Name> names = nameRepository.readNames(false, FieldName.NAME, name);
-        ValidateUtil.validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST, "name not available", name);
+        ValidateUtil.validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST, "name not available", name, null);
 
         Name toBeChecked = names.get(0);
 
         // system structure
         if (toBeChecked.getSystemgroupUuid() != null) {
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(toBeChecked.getSystemgroupUuid().toString());
-            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name);
+            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null);
 
             if (systemGroup.isDeleted()) {
                 return Boolean.TRUE;
             }
         } else if (toBeChecked.getSystemUuid() != null) {
             org.openepics.names.repository.model.System system = holderIRepositories.getSystemRepository().findLatestNotDeletedByUuid(toBeChecked.getSystemUuid().toString());
-            ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name);
+            ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name, null);
 
             if (system.isDeleted()) {
                 return Boolean.TRUE;
             }
 
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(system.getParentUuid().toString());
-            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name);
+            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null);
 
             if (systemGroup.isDeleted()) {
                 return Boolean.TRUE;
             }
         } else if (toBeChecked.getSubsystemUuid() != null) {
             Subsystem subsystem = holderIRepositories.getSubsystemRepository().findLatestNotDeletedByUuid(toBeChecked.getSubsystemUuid().toString());
-            ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST, "subsystem not available", name);
+            ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST, "subsystem not available", name, null);
 
             if (subsystem.isDeleted()) {
                 return Boolean.TRUE;
             }
 
             org.openepics.names.repository.model.System system = holderIRepositories.getSystemRepository().findLatestNotDeletedByUuid(subsystem.getParentUuid().toString());
-            ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name);
+            ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST, "system not available", name, null);
 
             if (system.isDeleted()) {
                 return Boolean.TRUE;
             }
 
             SystemGroup systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(system.getParentUuid().toString());
-            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name);
+            ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST, "system group not available", name, null);
 
             if (systemGroup.isDeleted()) {
                 return Boolean.TRUE;
@@ -423,21 +423,21 @@ public class NamesService {
         // device structure
         if (toBeChecked.getDevicetypeUuid() != null) {
             DeviceType deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByUuid(toBeChecked.getDevicetypeUuid().toString());
-            ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, "device type not available", name);
+            ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, "device type not available", name, null);
 
             if (deviceType.isDeleted()) {
                 return Boolean.TRUE;
             }
 
             DeviceGroup deviceGroup = holderIRepositories.getDeviceGroupRepository().findLatestNotDeletedByUuid(deviceType.getParentUuid().toString());
-            ValidateUtil.validateCondition(deviceGroup != null, HttpStatus.BAD_REQUEST, "device group not available", name);
+            ValidateUtil.validateCondition(deviceGroup != null, HttpStatus.BAD_REQUEST, "device group not available", name, null);
 
             if (deviceGroup.isDeleted()) {
                 return Boolean.TRUE;
             }
 
             Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByUuid(deviceType.getParentUuid().toString());
-            ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, "device group not available", name);
+            ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, "device group not available", name, null);
 
             if (discipline.isDeleted()) {
                 return Boolean.TRUE;
diff --git a/src/main/java/org/openepics/names/util/ExceptionUtil.java b/src/main/java/org/openepics/names/util/ExceptionUtil.java
index e008c924d179ee661fea65a3d0e353e146b79727..d44c8525f083b586fbcc50bb74ad301e13c76644 100644
--- a/src/main/java/org/openepics/names/util/ExceptionUtil.java
+++ b/src/main/java/org/openepics/names/util/ExceptionUtil.java
@@ -167,12 +167,12 @@ public class ExceptionUtil {
      * @param status http status
      * @param message message
      * @param details details
-     * @param userFriendly user friendly
+     * @param field field
      * @param cause cause
      * @return service http status exception
      */
-    protected static ServiceHttpStatusException createServiceHttpStatusException(HttpStatus status, String message, String details, String userFriendly, Throwable cause) {
-        return new ServiceHttpStatusException(status, message, details, userFriendly, cause);
+    protected static ServiceHttpStatusException createServiceHttpStatusException(HttpStatus status, String message, String details, String field, Throwable cause) {
+        return new ServiceHttpStatusException(status, message, details, field, cause);
     }
 
     /**
@@ -180,10 +180,12 @@ public class ExceptionUtil {
      * Intended for communication inside server.
      *
      * @param message message
+     * @param details details
+     * @param field field
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionBadRequest(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.BAD_REQUEST, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionBadRequest(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.BAD_REQUEST, message, details, field, null);
     }
 
     /**
@@ -191,10 +193,12 @@ public class ExceptionUtil {
      * Intended for communication inside server.
      *
      * @param message message
+     * @param details details
+     * @param field field
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionUnauthorized(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.UNAUTHORIZED, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionUnauthorized(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.UNAUTHORIZED, message, details, field, null);
     }
 
     /**
@@ -202,10 +206,12 @@ public class ExceptionUtil {
      * Intended for communication inside server.
      *
      * @param message message
+     * @param details details
+     * @param field field
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionForbidden(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.FORBIDDEN, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionForbidden(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.FORBIDDEN, message, details, field, null);
     }
 
     /**
@@ -213,10 +219,12 @@ public class ExceptionUtil {
      * Intended for communication inside server.
      *
      * @param message message
+     * @param details details
+     * @param field field
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionNotFound(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.NOT_FOUND, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionNotFound(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.NOT_FOUND, message, details, field, null);
     }
 
     /**
@@ -224,10 +232,12 @@ public class ExceptionUtil {
      * Intended for communication inside server.
      *
      * @param message message
+     * @param details details
+     * @param field field
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionConflict(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.CONFLICT, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionConflict(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.CONFLICT, message, details, field, null);
     }
 
     /**
@@ -237,8 +247,8 @@ public class ExceptionUtil {
      * @param message message
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionInternalServerError(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionInternalServerError(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.INTERNAL_SERVER_ERROR, message, details, field, null);
     }
 
     /**
@@ -248,8 +258,8 @@ public class ExceptionUtil {
      * @param message message
      * @return service http status exception
      */
-    public static ServiceHttpStatusException createServiceHttpStatusExceptionNotImplemented(String message, String details, String userFriendly) {
-        return createServiceHttpStatusException(HttpStatus.NOT_IMPLEMENTED, message, details, userFriendly, null);
+    public static ServiceHttpStatusException createServiceHttpStatusExceptionNotImplemented(String message, String details, String field) {
+        return createServiceHttpStatusException(HttpStatus.NOT_IMPLEMENTED, message, details, field, null);
     }
 
 }
diff --git a/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java b/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java
index f0b79ab134a1fb6832a1f2ef690abffef9398ab2..7a839db88e82fb0650441a89960a3b62a14826b0 100644
--- a/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java
+++ b/src/main/java/org/openepics/names/util/ServiceHttpStatusException.java
@@ -34,20 +34,22 @@ public class ServiceHttpStatusException extends RuntimeException {
 
     private final HttpStatus httpStatus;
     private final String details;
-    private final String userFriendly;
+    private final String field;
 
     /**
      * Public constructor.
      *
      * @param httpStatus http status
      * @param message message
+     * @param details details
+     * @param field field
      * @param cause cause
      */
-    public ServiceHttpStatusException(HttpStatus httpStatus, String message, String details, String userFriendly, Throwable cause) {
+    public ServiceHttpStatusException(HttpStatus httpStatus, String message, String details, String field, Throwable cause) {
         super(message, cause);
         this.httpStatus = httpStatus;
         this.details = details;
-        this.userFriendly = userFriendly;
+        this.field = field;
     }
 
     /**
@@ -69,12 +71,12 @@ public class ServiceHttpStatusException extends RuntimeException {
     }
 
     /**
-     * Return user friendly of exception.
+     * Return field of exception.
      *
-     * @return user friendly
+     * @return field
      */
-    public String getUserFriendly() {
-        return userFriendly;
+    public String getField() {
+        return field;
     }
 
 }
diff --git a/src/main/java/org/openepics/names/util/ValidateUtil.java b/src/main/java/org/openepics/names/util/ValidateUtil.java
index 6ee8f1a54179240b3b6f6ccdaa8b45f2545aaa95..91ad1ade99f94c79e8705dbfcdcd92208408f277 100644
--- a/src/main/java/org/openepics/names/util/ValidateUtil.java
+++ b/src/main/java/org/openepics/names/util/ValidateUtil.java
@@ -107,7 +107,7 @@ public class ValidateUtil {
     public static void validateInputComment(String comment) {
         // available
         validateCondition(!StringUtils.isEmpty(comment), HttpStatus.BAD_REQUEST,
-                "comment " + ValidateUtil.IS_NOT_AVAILABLE, comment);
+                "comment " + ValidateUtil.IS_NOT_AVAILABLE, comment, "comment");
     }
 
     /**
@@ -118,7 +118,7 @@ public class ValidateUtil {
     public static void validateInputDescription(String description) {
         // available
         validateCondition(!StringUtils.isEmpty(description), HttpStatus.BAD_REQUEST,
-                "description " + ValidateUtil.IS_NOT_AVAILABLE, description);
+                "description " + ValidateUtil.IS_NOT_AVAILABLE, description, "description");
     }
 
     /**
@@ -129,7 +129,7 @@ public class ValidateUtil {
     public static void validateInputIndex(String index) {
         // available
         validateCondition(!StringUtils.isEmpty(index), HttpStatus.BAD_REQUEST,
-                "index " + ValidateUtil.IS_NOT_AVAILABLE, index);
+                "index " + ValidateUtil.IS_NOT_AVAILABLE, index, "index");
     }
 
     /**
@@ -140,7 +140,7 @@ public class ValidateUtil {
     public static void validateInputMnemonic(String mnemonic) {
         // available
         validateCondition(!StringUtils.isEmpty(mnemonic), HttpStatus.BAD_REQUEST,
-                "mnemonic " + ValidateUtil.IS_NOT_AVAILABLE, mnemonic);
+                "mnemonic " + ValidateUtil.IS_NOT_AVAILABLE, mnemonic, "mnemonic");
     }
 
     /**
@@ -151,7 +151,7 @@ public class ValidateUtil {
     public static void validateInputMnemonicpath(String mnemonicpath) {
         // available
         validateCondition(!StringUtils.isEmpty(mnemonicpath), HttpStatus.BAD_REQUEST,
-                "mnemonicpath " + ValidateUtil.IS_NOT_AVAILABLE, mnemonicpath);
+                "mnemonicpath " + ValidateUtil.IS_NOT_AVAILABLE, mnemonicpath, "mnemonicpath");
     }
 
     /**
@@ -162,7 +162,7 @@ public class ValidateUtil {
     public static void validateInputName(String name) {
         // available
         validateCondition(!StringUtils.isEmpty(name), HttpStatus.BAD_REQUEST,
-                "name " + ValidateUtil.IS_NOT_AVAILABLE, name);
+                "name " + ValidateUtil.IS_NOT_AVAILABLE, name, "name");
     }
 
     /**
@@ -183,11 +183,11 @@ public class ValidateUtil {
     public static void validateInputStatus(Status status, Status expected) {
         // available
         validateCondition(status != null, HttpStatus.BAD_REQUEST,
-                "status " + ValidateUtil.IS_NOT_AVAILABLE, null);
+                "status " + ValidateUtil.IS_NOT_AVAILABLE, null, "status");
         // expected status
         if (expected != null) {
             validateCondition(expected.equals(status), HttpStatus.BAD_REQUEST,
-                    "status " + ValidateUtil.IS_NOT_CORRECT, status.toString());
+                    "status " + ValidateUtil.IS_NOT_CORRECT, status.toString(), "status");
         }
     }
 
@@ -209,11 +209,11 @@ public class ValidateUtil {
     public static void validateInputType(Type type, Type expected) {
         // available
         validateCondition(type != null, HttpStatus.BAD_REQUEST,
-                "type " + ValidateUtil.IS_NOT_AVAILABLE, null);
+                "type " + ValidateUtil.IS_NOT_AVAILABLE, null, "type");
         // expected type
         if (expected != null) {
             validateCondition(expected.equals(type), HttpStatus.BAD_REQUEST,
-                    "type " + ValidateUtil.IS_NOT_CORRECT, type.toString());
+                    "type " + ValidateUtil.IS_NOT_CORRECT, type.toString(), "type");
         }
     }
 
@@ -226,7 +226,7 @@ public class ValidateUtil {
         // available
         // correct
         validateCondition(!StringUtils.isEmpty(uuid), HttpStatus.BAD_REQUEST,
-                "uuid " + ValidateUtil.IS_NOT_AVAILABLE, uuid);
+                "uuid " + ValidateUtil.IS_NOT_AVAILABLE, uuid, "uuid");
         try {
             UUID.fromString(uuid);
         } catch (IllegalArgumentException e) {
@@ -265,7 +265,7 @@ public class ValidateUtil {
         boolean condition = ((queryFields == null && queryValues == null)
                 || (queryFields != null && queryValues != null && queryFields.length == queryValues.length && queryFields.length > 0));
         ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty");
+                "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty", null);
         if (queryFields != null) {
             for (int i=0; i<queryFields.length; i++) {
                 if (FieldName.UUID.equals(queryFields[i])) {
@@ -327,7 +327,7 @@ public class ValidateUtil {
 
         if (!NameChoice.DELETE.equals(nameChoice)) {
             ValidateUtil.validateCondition(nameElement.getParentsystemstructure() != null, HttpStatus.BAD_REQUEST,
-                    "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+                    "parent system structure uuid " + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "parentsystemstructure");
 
             // parentdevicestructure optional
 
@@ -413,7 +413,7 @@ public class ValidateUtil {
         if (NameChoice.UPDATE.equals(nameChoice) || NameChoice.DELETE.equals(nameChoice)) {
             List<Name> names = nameRepository.readNames(false, FieldName.UUID, nameElement.getUuid().toString());
             validateCondition(names != null && names.size() == 1, HttpStatus.BAD_REQUEST,
-                    ValidateUtil.NAME + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, nameElement.toString());
+                    ValidateUtil.NAME + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, nameElement.toString(), "uuid");
         }
 
         SystemGroup systemGroup = null;
@@ -451,21 +451,21 @@ public class ValidateUtil {
             if (nameElement.getParentdevicestructure() != null) {
                 countDevicestructureIndex++;
                 deviceType = holderIRepositories.getDeviceTypeRepository().findLatestByUuid(nameElement.getParentdevicestructure().toString());
-                ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
-                ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
+                ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure");
+                ValidateUtil.validateCondition(!deviceType.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentdevicestructure");
             }
 
             // system structure
             if (systemGroup != null) {
-                ValidateUtil.validateCondition(!systemGroup.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
+                ValidateUtil.validateCondition(!systemGroup.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure");
 
                 derivedName = NameUtil.getName(systemGroup, deviceType, nameElement.getIndex(), holder);
             } else if (system != null) {
-                ValidateUtil.validateCondition(!system.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
+                ValidateUtil.validateCondition(!system.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure");
 
                 derivedName = NameUtil.getName(system, deviceType, nameElement.getIndex(), holder);
             } else if (subsystem != null) {
-                ValidateUtil.validateCondition(!subsystem.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString());
+                ValidateUtil.validateCondition(!subsystem.isDeleted(), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_DELETED, nameElement.toString(), "parentsystemstructure");
 
                 derivedName = NameUtil.getName(subsystem, deviceType, nameElement.getIndex(), holder);
             } else {
@@ -477,11 +477,11 @@ public class ValidateUtil {
                 countDevicestructureIndex++;
                 // TODO overrideRuleset depend on user authority
                 condition = namingConvention.isInstanceIndexValid(derivedName, false);
-                validateCondition(condition, HttpStatus.BAD_REQUEST, "instance index " + ValidateUtil.IS_NOT_VALID, nameElement.toString());
+                validateCondition(condition, HttpStatus.BAD_REQUEST, "instance index " + ValidateUtil.IS_NOT_VALID, nameElement.toString(), "index");
             }
 
             condition = countDevicestructureIndex == 0 || countDevicestructureIndex == 2;
-            ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + "or instance index " + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString());
+            ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + "or instance index " + ValidateUtil.IS_NOT_AVAILABLE, nameElement.toString(), "parentdevicestructure");
 
             // name
             //     ok with same name, name equivalence if same uuid
@@ -492,7 +492,7 @@ public class ValidateUtil {
                 // NameChoice.UPDATE.equals(nameChoice)
                 condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid());
             }
-            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.EXISTS, nameElement.toString());
+            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name " + ValidateUtil.EXISTS, nameElement.toString(), null);
 
             names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(derivedName));
             if (NameChoice.CREATE.equals(nameChoice)) {
@@ -501,7 +501,7 @@ public class ValidateUtil {
                 // NameChoice.UPDATE.equals(nameChoice)
                 condition = names == null || names.isEmpty() || names.size() == 1 && names.get(0).getUuid().equals(nameElement.getUuid());
             }
-            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString());
+            validateCondition(condition, HttpStatus.BAD_REQUEST, "convention name equivalence " + ValidateUtil.EXISTS, nameElement.toString(), null);
         } else if (NameChoice.DELETE.equals(nameChoice)) {
             // n.a.
             //     uuid    - already handled
@@ -584,21 +584,21 @@ public class ValidateUtil {
         if (!StringUtils.isEmpty(dt)) {
             deviceType = holderIRepositories.getDeviceTypeRepository().findLatestNotDeletedByMnemonic(dt);
             ValidateUtil.validateCondition(deviceType != null, HttpStatus.BAD_REQUEST,
-                    ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+                    ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
         }
 
         // system structure
         if (!StringUtils.isEmpty(sg)) {
             systemGroup = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(sg);
             ValidateUtil.validateCondition(systemGroup != null, HttpStatus.BAD_REQUEST,
-                    ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+                    ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
 
             derivedName = NameUtil.getName(systemGroup, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
         } else {
             if (!StringUtils.isEmpty(sys)) {
                 system = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(sys);
                 ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST,
-                        ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+                        ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
 
                 derivedName = NameUtil.getName(system, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
             } else {
@@ -607,11 +607,11 @@ public class ValidateUtil {
             }
             // TODO is this condition correct?
             ValidateUtil.validateCondition(system != null, HttpStatus.BAD_REQUEST,
-                    ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+                    ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
             if (!StringUtils.isEmpty(sub)) {
                 subsystem = holderIRepositories.getSubsystemRepository().findLatestNotDeletedByParentAndMnemonic(system.getUuid().toString(), sub);
                 ValidateUtil.validateCondition(subsystem != null, HttpStatus.BAD_REQUEST,
-                        ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name);
+                        ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_AVAILABLE, name, null);
 
                 derivedName = NameUtil.getName(subsystem, deviceType, NamingConventionUtil.extractInstanceIndex(name), holder);
             }
@@ -622,7 +622,7 @@ public class ValidateUtil {
             // TODO overrideRuleset depend on user authority
             condition = namingConvention.isInstanceIndexValid(name, false);
             validateCondition(condition, HttpStatus.BAD_REQUEST,
-                    "instance index " + ValidateUtil.IS_NOT_VALID, name);
+                    "instance index " + ValidateUtil.IS_NOT_VALID, name, null);
         }
 
         // name
@@ -631,17 +631,17 @@ public class ValidateUtil {
         //     convention name equivalence not exists
         condition = StringUtils.equals(name, derivedName);
         validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "convention name " + ValidateUtil.IS_NOT_CORRECT, name);
+                "convention name " + ValidateUtil.IS_NOT_CORRECT, name, null);
 
         List<Name> names = nameRepository.readNames(false, FieldName.NAME, name);
         condition = names == null || names.isEmpty();
         validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "convention name " + ValidateUtil.EXISTS, name);
+                "convention name " + ValidateUtil.EXISTS, name, null);
 
         names = nameRepository.readNames(false, FieldName.NAMEEQUIVALENCE, namingConvention.equivalenceClassRepresentative(name));
         condition = names == null || names.isEmpty();
         validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "convention name equivalence " + ValidateUtil.EXISTS, name);
+                "convention name equivalence " + ValidateUtil.EXISTS, name, null);
     }
 
     // ----------------------------------------------------------------------------------------------------
@@ -678,7 +678,7 @@ public class ValidateUtil {
         boolean condition = ((queryFields == null && queryValues == null)
                 || (queryFields != null && queryValues != null && queryFields.length == queryValues.length && queryFields.length > 0));
         ValidateUtil.validateCondition(condition, HttpStatus.BAD_REQUEST,
-                "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty");
+                "url and parameters " + ValidateUtil.ARE_NOT_CORRECT, "queryFields, queryValues with different lengths or empty", null);
         if (queryFields != null) {
             for (int i=0; i<queryFields.length; i++) {
                 if (FieldStructure.UUID.equals(queryFields[i])) {
@@ -769,16 +769,16 @@ public class ValidateUtil {
 
         if (!StructureChoice.DELETE.equals(structureChoice)) {
             if (Type.SYSTEM.equals(structureElement.getType())) {
-                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent");
                 ValidateUtil.validateInputUuid(structureElement.getParent().toString());
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
-                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent");
                 ValidateUtil.validateInputUuid(structureElement.getParent().toString());
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
-                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent");
                 ValidateUtil.validateInputUuid(structureElement.getParent().toString());
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
-                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString());
+                validateCondition(structureElement.getParent() != null, HttpStatus.BAD_REQUEST, "parent uuid " + ValidateUtil.IS_NOT_AVAILABLE, structureElement.toString(), "parent");
                 ValidateUtil.validateInputUuid(structureElement.getParent().toString());
             }
 
@@ -788,7 +788,7 @@ public class ValidateUtil {
             //     validate mnemonic input (value itself, not in relation to other values)
             //     validateMnemonic takes isMnemonicRequired into account
             MnemonicValidation mnemonicValidation = namingConvention.validateMnemonic(structureElement.getType(), structureElement.getMnemonic());
-            validateCondition(MnemonicValidation.VALID.equals(mnemonicValidation), HttpStatus.BAD_REQUEST, "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString());
+            validateCondition(MnemonicValidation.VALID.equals(mnemonicValidation), HttpStatus.BAD_REQUEST, "mnemonic " + ValidateUtil.IS_NOT_VALID, structureElement.toString(), "mnemonic");
 
             validateInputDescription(structureElement.getDescription());
         }
@@ -905,80 +905,80 @@ public class ValidateUtil {
                 // status, uuid
                 // status, not deleted, uuid
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 List<System> systems = null;
 
                 // status, uuid
                 // status, not deleted, uuid
                 systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systems != null && systems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systems != null && systems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 List<Subsystem> subsystems = null;
 
                 // status, uuid
                 // status, not deleted, uuid
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 List<Discipline> disciplines = null;
 
                 // status, uuid
                 // status, not deleted, uuid
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 List<DeviceGroup> deviceGroups = null;
 
                 // status, uuid
                 // status, not deleted, uuid
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 List<DeviceType> deviceTypes = null;
 
                 // status, uuid
                 // status, not deleted, uuid
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 0, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             }
         } else if (StructureChoice.APPROVE.equals(structureChoice) || StructureChoice.CANCEL.equals(structureChoice) || StructureChoice.REJECT.equals(structureChoice)) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
                 // status, uuid
                 List<SystemGroup> systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 // status, uuid
                 List<System> systems = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 // status, uuid
                 List<Subsystem> subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 // status, uuid
                 List<Discipline> disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 // status, uuid
                 List<DeviceGroup> deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 // status, uuid
                 List<DeviceType> deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString());
+                ValidateUtil.validateCondition(deviceTypes != null && deviceTypes.size() == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, structureElement.toString(), "uuid");
             }
         }
     }
@@ -1022,19 +1022,19 @@ public class ValidateUtil {
 
                     // status, mnemonic
                     systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, false, FieldStructure.MNEMONIC, structureElement.getMnemonic());
-                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                     systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONIC, structureElement.getMnemonic());
-                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                     // status, mnemonic equivalence
                     systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()));
-                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                     systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()));
-                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                    validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                    validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 }
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 List<SystemGroup> systemGroups = null;
@@ -1044,24 +1044,24 @@ public class ValidateUtil {
                 // status, parent
                 message = ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString());
-                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, parent, mnemonic
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systemGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systemGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, parent, mnemonic equivalence
                 systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systemGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 systems = holderRepositories.getSystemRepository().readSystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systemGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 List<System> systems = null;
                 List<Subsystem> subsystems = null;
@@ -1070,43 +1070,43 @@ public class ValidateUtil {
                 // status, parent
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString());
-                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, parent, mnemonic
                 message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systems.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {systems.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status. parent, mnemonic equivalence
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systems.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {systems.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 List<Discipline> disciplines = null;
                 String message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
 
                 // status, mnemonic
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, false, FieldStructure.MNEMONIC, structureElement.getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONIC, structureElement.getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()));
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic()));
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 List<Discipline> disciplines = null;
                 String message = null;
@@ -1114,13 +1114,13 @@ public class ValidateUtil {
                 // status, parent
                 message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString());
-                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // note rules for mnemonic for device group
 
                 // mnemonic
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
-                ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 List<DeviceGroup> deviceGroups = null;
                 List<DeviceType> deviceTypes = null;
@@ -1129,24 +1129,24 @@ public class ValidateUtil {
                 // status, parent
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, structureElement.getParent().toString());
-                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, parent, mnemonic
                 message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {deviceGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONIC}, new String[] {deviceGroups.get(0).getUuid().toString(), structureElement.getMnemonic()}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, parent, mnemonic equivalence
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.PENDING}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {deviceGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(new Status[] {Status.APPROVED}, false, new FieldStructure[] {FieldStructure.PARENT, FieldStructure.MNEMONICEQUIVALENCE}, new String[] {deviceGroups.get(0).getUuid().toString(), namingConvention.equivalenceClassRepresentative(structureElement.getMnemonic())}, null, null, null, null);
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(structureElement.getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             }
         } else if (StructureChoice.APPROVE.equals(structureChoice)) {
             if (Type.SYSTEMGROUP.equals(structureElement.getType())) {
@@ -1156,17 +1156,17 @@ public class ValidateUtil {
 
                 // to be approved - status, uuid
                 toBeApproved = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, mnemonic
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systemGroups == null || systemGroups.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systemGroups == null || systemGroups.isEmpty() || systemGroups.size() == 1 && systemGroups.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.SYSTEM.equals(structureElement.getType())) {
                 List<SystemGroup> systemGroups = null;
                 List<System> toBeApproved = null;
@@ -1176,23 +1176,23 @@ public class ValidateUtil {
                 // to be approved - status, uuid
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getSystemRepository().readSystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, parent
                 message = ValidateUtil.SYSTEMGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systemGroups = holderRepositories.getSystemGroupRepository().readSystemGroups(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString());
-                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(systemGroups != null && systemGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, mnemonic
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, systems == null || systems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, systems == null || systems.isEmpty() || systems.size() == 1 && systems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.SUBSYSTEM.equals(structureElement.getType())) {
                 List<System> systems = null;
                 List<Subsystem> toBeApproved = null;
@@ -1202,23 +1202,23 @@ public class ValidateUtil {
                 // to be approved - status, uuid
                 message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getSubsystemRepository().readSubsystems(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, parent
                 message = ValidateUtil.SYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 systems = holderRepositories.getSystemRepository().readSystems(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString());
-                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(systems != null && systems.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, mnemonic
                 message = ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 subsystems = holderRepositories.getSubsystemRepository().readSubsystems(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, subsystems == null || subsystems.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, subsystems == null || subsystems.isEmpty() || subsystems.size() == 1 && subsystems.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DISCIPLINE.equals(structureElement.getType())) {
                 List<Discipline> toBeApproved = null;
                 List<Discipline> disciplines = null;
@@ -1226,17 +1226,17 @@ public class ValidateUtil {
 
                 // to be approved - status, uuid
                 toBeApproved = holderRepositories.getDisciplineRepository().readDisciplines(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, mnemonic
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, disciplines == null || disciplines.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, disciplines == null || disciplines.isEmpty() || disciplines.size() == 1 && disciplines.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DEVICEGROUP.equals(structureElement.getType())) {
                 List<Discipline> disciplines = null;
                 List<DeviceGroup> toBeApproved = null;
@@ -1245,18 +1245,18 @@ public class ValidateUtil {
                 // to be approved - status, uuid
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, parent
                 message = ValidateUtil.DISCIPLINE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 disciplines = holderRepositories.getDisciplineRepository().readDisciplines(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString());
-                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(disciplines != null && disciplines.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // note rules for mnemonic for device group
 
                 // mnemonic
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
-                ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(StringUtils.isEmpty(structureElement.getMnemonic()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             } else if (Type.DEVICETYPE.equals(structureElement.getType())) {
                 List<DeviceGroup> deviceGroups = null;
                 List<DeviceType> toBeApproved = null;
@@ -1266,23 +1266,23 @@ public class ValidateUtil {
                 // to be approved - status, uuid
                 message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 toBeApproved = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.PENDING, null, FieldStructure.UUID, structureElement.getUuid().toString());
-                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(toBeApproved != null && toBeApproved.size() == 1, HttpStatus.BAD_REQUEST, message, details, "uuid");
 
                 // status, parent
                 message = ValidateUtil.DEVICEGROUP + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 deviceGroups = holderRepositories.getDeviceGroupRepository().readDeviceGroups(Status.APPROVED, false, FieldStructure.UUID, toBeApproved.get(0).getParentUuid().toString());
-                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details);
+                ValidateUtil.validateCondition(deviceGroups != null && deviceGroups.size() == 1, HttpStatus.BAD_REQUEST, message, details, "parent");
 
                 // status, mnemonic
                 message = ValidateUtil.DEVICETYPE + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT;
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.MNEMONIC, toBeApproved.get(0).getMnemonic());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
 
                 // status, mnemonic equivalence
                 deviceTypes = holderRepositories.getDeviceTypeRepository().readDeviceTypes(Status.APPROVED, false, FieldStructure.MNEMONICEQUIVALENCE, toBeApproved.get(0).getMnemonicEquivalence());
-                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details);
-                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details);
+                validateConditionIfStructureChoice(StructureChoice.CREATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty(),   HttpStatus.BAD_REQUEST, message, details, "mnemonic");
+                validateConditionIfStructureChoice(StructureChoice.UPDATE, structureChoice, deviceTypes == null || deviceTypes.isEmpty() || deviceTypes.size() == 1 && deviceTypes.get(0).getUuid().equals(toBeApproved.get(0).getUuid()), HttpStatus.BAD_REQUEST, message, details, "mnemonic");
             }
         }
     }
@@ -1306,25 +1306,25 @@ public class ValidateUtil {
 
         String[] path = NamingConventionUtil.string2MnemonicPath(mnemonicpath);
         validateCondition(path != null && path.length >= 1 && path.length <= 2,
-                HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path + ", " + mnemonicpath);
+                HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path + ", " + mnemonicpath, null);
         String mnemonicpathEquivalence = namingConvention.equivalenceClassRepresentative(mnemonicpath);
 
         if (Type.SYSTEMGROUP.equals(type)) {
-            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath);
+            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null);
 
             // system group may have empty path but there will be mnemonicpath in this context
 
             // mnemonic
             SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByMnemonic(path[0]);
-            ValidateUtil.validateCondition(sg == null, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path duplicate", path[0] + ", " + mnemonicpath);
+            ValidateUtil.validateCondition(sg == null, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null);
 
             // mnemonic equivalence
             List<SystemGroup> systemGroups = holderIRepositories.getSystemGroupRepository().findLatestNotDeleted();
             for (SystemGroup systemGroup : systemGroups) {
-                validateCondition(!StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath);
+                validateCondition(!StringUtils.equals(systemGroup.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEMGROUP + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null);
             }
         } else if (Type.SYSTEM.equals(type)) {
-            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath);
+            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null);
 
             // path with 1 element  - system group or  system ---> check both individually
             // check mnemonic, mnemonic equivalence
@@ -1332,90 +1332,90 @@ public class ValidateUtil {
             // mnemonic system group
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             // mnemonic path system group
             mnemonicPaths = StructureUtil.getMnemonicPathsSystemGroup(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null);
             }
 
             // mnemonic
             mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             // mnemonic equivalence
             mnemonicPaths = StructureUtil.getMnemonicPathsSystem(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null);
             }
         } else if (Type.SUBSYSTEM.equals(type)) {
-            validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath);
+            validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null);
 
             System sys = holderIRepositories.getSystemRepository().findLatestNotDeletedByMnemonic(path[0]);
-            ValidateUtil.validateCondition(sys != null, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path not available", path[0] + ", " + mnemonicpath);
+            ValidateUtil.validateCondition(sys != null, HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path not available", path[0] + ", " + mnemonicpath, null);
             SystemGroup sg = holderIRepositories.getSystemGroupRepository().findLatestNotDeletedByUuid(sys.getParentUuid().toString());
 
             // mnemonic
-            validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath);
+            validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             if (!StringUtils.isEmpty(sg.getMnemonic())) {
-                validateCondition(!StringUtils.equals(sg.getMnemonic(), path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(sg.getMnemonic(), path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             // mnemonic equivalence
-            validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath);
+            validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             if (!StringUtils.isEmpty(sg.getMnemonic())) {
-                validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(sg.getMnemonic()), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             mnemonicPaths = StructureUtil.getMnemonicPathsSubsystem(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path equivalence duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.SUBSYSTEM + " mnemonic path equivalence duplicate", mnemonicpath, null);
             }
         } else if (Type.DISCIPLINE.equals(type)) {
-            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath);
+            validateCondition(path.length == 1, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null);
 
             // mnemonic
             Discipline di = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]);
-            ValidateUtil.validateCondition(di == null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path duplicate", path[0] + ", " + mnemonicpath);
+            ValidateUtil.validateCondition(di == null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path duplicate", path[0] + ", " + mnemonicpath, null);
 
             // mnemonic equivalence
             List<Discipline> disciplines = holderIRepositories.getDisciplineRepository().findLatestNotDeleted();
             for (Discipline discipline : disciplines) {
                 validateCondition(!StringUtils.equals(discipline.getMnemonicEquivalence(), namingConvention.equivalenceClassRepresentative(path[0])),
-                        HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath);
+                        HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " mnemonic path equivalence duplicate", path[0] + ", " + mnemonicpath, null);
             }
         } else if (Type.DEVICEGROUP.equals(type)) {
             throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(ValidateUtil.DEVICEGROUP + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null);
         } else if (Type.DEVICETYPE.equals(type)) {
-            validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " " + ValidateUtil.DEVICETYPE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath);
+            validateCondition(path.length == 2, HttpStatus.BAD_REQUEST, ValidateUtil.STRUCTURE + " " + ValidateUtil.DEVICETYPE + " mnemonic path " + ValidateUtil.IS_NOT_VALID, path.length + ", " + mnemonicpath, null);
 
             // discipline
             Discipline discipline = holderIRepositories.getDisciplineRepository().findLatestNotDeletedByMnemonic(path[0]);
-            ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath);
+            ValidateUtil.validateCondition(discipline != null, HttpStatus.BAD_REQUEST, ValidateUtil.DISCIPLINE + " " + ValidateUtil.IS_NOT_VALID, path[0] + ", " + mnemonicpath, null);
 
             // mnemonic
-            validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath);
+            validateCondition(!StringUtils.equals(path[0], path[1]), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null);
 
             List<String> mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, false, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpath, existingPath), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null);
             }
 
             // mnemonic equivalence
-            validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath);
+            validateCondition(!StringUtils.equals(namingConvention.equivalenceClassRepresentative(path[0]), namingConvention.equivalenceClassRepresentative(path[1])), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path duplicate", mnemonicpath, null);
 
             mnemonicPaths = StructureUtil.getMnemonicPathsDeviceType(holder, true, namingConvention);
             for (String existingPath : mnemonicPaths) {
-                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path equivalence duplicate", mnemonicpath);
+                validateCondition(!StringUtils.equals(mnemonicpathEquivalence, namingConvention.equivalenceClassRepresentative(existingPath)), HttpStatus.BAD_REQUEST, ValidateUtil.DEVICETYPE + " mnemonic path equivalence duplicate", mnemonicpath, null);
             }
 
             // since device group is between discipline and device type and device group has no mnemonic,
@@ -1436,16 +1436,17 @@ public class ValidateUtil {
      * @param status http status
      * @param message message
      * @param details details
+     * @param field field
      *
      * @see ServiceHttpStatusException
      */
-    public static void validateCondition(boolean condition, HttpStatus status, String message, String details) {
+    public static void validateCondition(boolean condition, HttpStatus status, String message, String details, String field) {
         if (!condition) {
             switch(status) {
                 case BAD_REQUEST:
-                    throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(message, details, null);
+                    throw ExceptionUtil.createServiceHttpStatusExceptionBadRequest(message, details, field);
                 default:
-                    throw ExceptionUtil.createServiceHttpStatusExceptionInternalServerError(message, details, null);
+                    throw ExceptionUtil.createServiceHttpStatusExceptionInternalServerError(message, details, field);
             }
         }
     }
@@ -1458,12 +1459,13 @@ public class ValidateUtil {
      * @param status http status
      * @param message message
      * @param details details
+     * @param field field
      *
      * @see ServiceHttpStatusException
      */
-    public static void validateConditionIfPrecondition(boolean precondition, boolean condition, HttpStatus status, String message, String details) {
+    public static void validateConditionIfPrecondition(boolean precondition, boolean condition, HttpStatus status, String message, String details, String field) {
         if (precondition) {
-            validateCondition(condition, status, message, details);
+            validateCondition(condition, status, message, details, field);
         }
     }
 
@@ -1476,11 +1478,12 @@ public class ValidateUtil {
      * @param status http status
      * @param message message
      * @param details details
+     * @param field field
      *
      * @see ServiceHttpStatusException
      */
-    public static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, HttpStatus status, String message, String details) {
-        validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, status, message, details);
+    public static void validateConditionIfStructureChoice(StructureChoice expected, StructureChoice actual, boolean condition, HttpStatus status, String message, String details, String field) {
+        validateConditionIfPrecondition(expected != null && expected.equals(actual), condition, status, message, details, field);
     }
 
 
diff --git a/src/test/java/org/openepics/names/util/ExceptionUtilTest.java b/src/test/java/org/openepics/names/util/ExceptionUtilTest.java
index af5aae8145c34d4a24935dea854a9ad15dd3e4e8..b2d4ae9b15d11bc4a9cb4e5e168dbfa428212074 100644
--- a/src/test/java/org/openepics/names/util/ExceptionUtilTest.java
+++ b/src/test/java/org/openepics/names/util/ExceptionUtilTest.java
@@ -89,56 +89,56 @@ public class ExceptionUtilTest {
         assertNull(exception.getHttpStatus());
         assertNull(exception.getMessage());
         assertNull(exception.getDetails());
-        assertNull(exception.getUserFriendly());
+        assertNull(exception.getField());
         assertNull(exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionBadRequest(null, null, null);
         assertEquals(HttpStatus.BAD_REQUEST, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionUnauthorized(null, null, null);
         assertEquals(HttpStatus.UNAUTHORIZED, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionForbidden(null, null, null);
         assertEquals(HttpStatus.FORBIDDEN, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionNotFound(null, null, null);
         assertEquals(HttpStatus.NOT_FOUND, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionConflict(null, null, null);
         assertEquals(HttpStatus.CONFLICT, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionInternalServerError(null, null, null);
         assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
 
         exception = ExceptionUtil.createServiceHttpStatusExceptionNotImplemented(null, null, null);
         assertEquals(HttpStatus.NOT_IMPLEMENTED, exception.getHttpStatus());
         assertEquals(null, exception.getMessage());
         assertEquals(null, exception.getDetails());
-        assertEquals(null, exception.getUserFriendly());
+        assertEquals(null, exception.getField());
         assertEquals(null, exception.getCause());
     }
 
diff --git a/src/test/java/org/openepics/names/util/ValidateUtilTest.java b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
index 98118ac814e4525b121554c77dcca409a42144e4..fb2333047d81db1170e48e5206e4d1339846fbac 100644
--- a/src/test/java/org/openepics/names/util/ValidateUtilTest.java
+++ b/src/test/java/org/openepics/names/util/ValidateUtilTest.java
@@ -395,7 +395,7 @@ public class ValidateUtilTest {
         final List<Subsystem> subsystems = Lists.newArrayList();
         try {
             ValidateUtil.validateCondition(subsystems != null && subsystems.size() == 1, HttpStatus.INTERNAL_SERVER_ERROR,
-                    ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, null);
+                    ValidateUtil.SUBSYSTEM + ValidateUtil.SPACE + ValidateUtil.IS_NOT_CORRECT, null, null);
             fail();
         } catch (ServiceHttpStatusException e) {
             assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, e.getHttpStatus());