diff --git a/controller/northbound/server/auth_test.go b/controller/northbound/server/auth_test.go
index 8ad8cb6de1b5042d68debf09db1751507f5e3731..e5c9e7389d443c0f653f53a3c5f32966f5c2671d 100644
--- a/controller/northbound/server/auth_test.go
+++ b/controller/northbound/server/auth_test.go
@@ -89,9 +89,9 @@ func TestAuth_Login(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "username",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("username"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				}},
 		},
 	}
@@ -160,9 +160,9 @@ func TestAuth_Logout(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "username",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("username"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				}},
 		},
 	}
diff --git a/controller/northbound/server/role_test.go b/controller/northbound/server/role_test.go
index d2f3dc7e042ebefe196f3b2cb356daebde57ce1f..bb787a4160530b0454d4b2c0198f47c0f9a98ffc 100644
--- a/controller/northbound/server/role_test.go
+++ b/controller/northbound/server/role_test.go
@@ -84,9 +84,9 @@ func TestRole_CreateRoles(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "roles[0].name",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 3 characters",
+					FieldPath:    stringToPointer("roles[0].name"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 3 characters"),
 				}},
 		},
 		{
@@ -105,9 +105,9 @@ func TestRole_CreateRoles(t *testing.T) {
 			want:    &apb.CreateRolesResponse{},
 			wantErr: true,
 			validationErrors: []*validate.Violation{{
-				FieldPath:    "roles[0].description",
-				ConstraintId: "string.min_len",
-				Message:      "value length must be at least 3 characters",
+				FieldPath:    stringToPointer("roles[0].description"),
+				ConstraintId: stringToPointer("string.min_len"),
+				Message:      stringToPointer("value length must be at least 3 characters"),
 			}},
 		},
 	}
@@ -181,9 +181,9 @@ func TestRole_GetRole(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "role_name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("role_name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
@@ -355,9 +355,9 @@ func TestRole_UpdateRoles(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "roles[0].name",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 3 characters",
+					FieldPath:    stringToPointer("roles[0].name"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 3 characters"),
 				},
 			},
 		},
@@ -379,9 +379,9 @@ func TestRole_UpdateRoles(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "roles[0].description",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 3 characters",
+					FieldPath:    stringToPointer("roles[0].description"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 3 characters"),
 				},
 			},
 		},
@@ -456,14 +456,14 @@ func TestRole_DeletePermissionsForRole(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "role_name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("role_name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 				{
-					FieldPath:    "permissions_to_delete",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("permissions_to_delete"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
@@ -537,9 +537,9 @@ func TestRole_DeleteRoles(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "role_name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("role_name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
diff --git a/controller/northbound/server/test_util_test.go b/controller/northbound/server/test_util_test.go
index 82b68911ee29fe620ed30d96317ea0ca9e6a8ec5..5e843cac5da9d0bb0aa75e1e8aa3d28fd8137ffe 100644
--- a/controller/northbound/server/test_util_test.go
+++ b/controller/northbound/server/test_util_test.go
@@ -305,3 +305,7 @@ func initUUIDs(t *testing.T) {
 // 		_ = mneServer.mneService.Delete(mne)
 // 	}
 // }
+
+func stringToPointer(str string) *string {
+	return &str
+}
diff --git a/controller/northbound/server/topology_test.go b/controller/northbound/server/topology_test.go
index cc5a6f2ae0cc14d8e0bcb738af8a974f3613eef3..44ce77b57b19c31d5cc6292e5af5c2ac265e3a42 100644
--- a/controller/northbound/server/topology_test.go
+++ b/controller/northbound/server/topology_test.go
@@ -285,29 +285,29 @@ func TestTopology_AddLink(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "link.name",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 1 characters",
+					FieldPath:    stringToPointer("link.name"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 1 characters"),
 				},
 				{
-					FieldPath:    "link.sourceNode",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("link.sourceNode"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 				{
-					FieldPath:    "link.targetNode",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("link.targetNode"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 				{
-					FieldPath:    "link.sourcePort",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("link.sourcePort"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 				{
-					FieldPath:    "link.targetPort",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("link.targetPort"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
@@ -461,9 +461,9 @@ func TestTopology_DeleteLink(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "id",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("id"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				}},
 		},
 	}
diff --git a/controller/northbound/server/user_test.go b/controller/northbound/server/user_test.go
index 6d2058dee8e113108b21a95cdb30b58b55f66ec8..4a1c663279ce5607a40ff3dd1fd8d87f03d7e0bf 100644
--- a/controller/northbound/server/user_test.go
+++ b/controller/northbound/server/user_test.go
@@ -90,9 +90,9 @@ func TestUser_CreateUsers(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "user[0].password",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 5 characters",
+					FieldPath:    stringToPointer("user[0].password"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 5 characters"),
 				}},
 		},
 		{
@@ -116,9 +116,9 @@ func TestUser_CreateUsers(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "user[0].name",
-					ConstraintId: "string.min_len",
-					Message:      "value length must be at least 3 characters",
+					FieldPath:    stringToPointer("user[0].name"),
+					ConstraintId: stringToPointer("string.min_len"),
+					Message:      stringToPointer("value length must be at least 3 characters"),
 				}},
 		},
 	}
@@ -190,9 +190,9 @@ func TestUser_GetUser(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				}},
 		},
 	}
@@ -341,9 +341,9 @@ func TestUser_UpdateUsers(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
@@ -402,9 +402,9 @@ func TestUser_DeleteUsers(t *testing.T) {
 			wantErr: true,
 			validationErrors: []*validate.Violation{
 				{
-					FieldPath:    "name",
-					ConstraintId: "required",
-					Message:      "value is required",
+					FieldPath:    stringToPointer("name"),
+					ConstraintId: stringToPointer("required"),
+					Message:      stringToPointer("value is required"),
 				},
 			},
 		},
diff --git a/controller/northbound/server/utils_test.go b/controller/northbound/server/utils_test.go
index cfd0458979ebc26e589c4ab132425536de243ccd..d86de701bf8e6c97d960497b6c8e42f8aeb6c268 100644
--- a/controller/northbound/server/utils_test.go
+++ b/controller/northbound/server/utils_test.go
@@ -9,7 +9,7 @@ import (
 
 func contains(array []*validate.Violation, err *validate.Violation) bool {
 	for _, v := range array {
-		if v.FieldPath == err.FieldPath && v.ConstraintId == err.ConstraintId && v.Message == err.Message {
+		if *v.FieldPath == *err.FieldPath && *v.ConstraintId == *err.ConstraintId && *v.Message == *err.Message {
 			return true
 		}
 	}
diff --git a/go.mod b/go.mod
index 896f6897d8c228dc387a365306371e0a6d6577c2..6d581b9195719ed3694223517424d7b9b9ead146 100644
--- a/go.mod
+++ b/go.mod
@@ -86,8 +86,8 @@ require (
 )
 
 require (
-	buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2
-	github.com/bufbuild/protovalidate-go v0.6.5
+	buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2
+	github.com/bufbuild/protovalidate-go v0.7.0
 	github.com/hashicorp/go-multierror v1.1.1
 	github.com/hashicorp/go-plugin v1.4.10
 	github.com/lesismal/nbio v1.5.11
diff --git a/go.sum b/go.sum
index c3042bfcda73022be0e4446a1ace030f50c19921..52c2893740bfd1519c6607b415372aa84246f004 100644
--- a/go.sum
+++ b/go.sum
@@ -8,6 +8,8 @@ atomicgo.dev/schedule v0.1.0 h1:nTthAbhZS5YZmgYbb2+DH8uQIZcTlIrd4eYr3UQxEjs=
 atomicgo.dev/schedule v0.1.0/go.mod h1:xeUa3oAkiuHYh8bKiQBRojqAMq3PXXbJujjb0hw8pEU=
 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 h1:SZRVx928rbYZ6hEKUIN+vtGDkl7uotABRWGY4OAg5gM=
 buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw=
+buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2 h1:hl0FrmGlNpQZIGvU1/jDz0lsPDd0BhCE0QDRwPfLZcA=
+buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2/go.mod h1:ylS4c28ACSI59oJrOdW4pHS4n0Hw4TgSPHn8rpHl4Yw=
 cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
@@ -43,6 +45,8 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
 github.com/bufbuild/protovalidate-go v0.6.5 h1:WucDKXIbK22WjkO8A8J6Yyxxy0jl91Oe9LSMduq3YEE=
 github.com/bufbuild/protovalidate-go v0.6.5/go.mod h1:LHDiGCWSM3GagZEnyEZ1sPtFwi6Ja4tVTi/DCc+iDFI=
+github.com/bufbuild/protovalidate-go v0.7.0 h1:MYU9GSZM7TSsWNywvyXoEc8y3kc1MNqD3k5mddIBEL4=
+github.com/bufbuild/protovalidate-go v0.7.0/go.mod h1:PHV5pFuWlRzdDW02/cmVyNzdiQ+RNNwo7idGxdzS7o4=
 github.com/c-bata/go-prompt v0.2.6 h1:POP+nrHE+DfLYx370bedwNhsqmpCUynWPxuHi0C5vZI=
 github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY=
 github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=