diff --git a/cli/cmd/userGet.go b/cli/cmd/userGet.go
index b5f1a0bd9ba21765a81df889fabc182029126615..1a487a3a7f02a2aa275f479ca064210ee89fbe38 100644
--- a/cli/cmd/userGet.go
+++ b/cli/cmd/userGet.go
@@ -33,6 +33,7 @@ package cmd
 
 import (
 	"code.fbi.h-da.de/danet/gosdn/controller/api"
+	"github.com/google/uuid"
 	log "github.com/sirupsen/logrus"
 	"github.com/spf13/cobra"
 	"github.com/spf13/viper"
@@ -45,7 +46,12 @@ var userGetCmd = &cobra.Command{
 	Long:  `Requests one user using the provided name to search for it in the stored users.`,
 
 	RunE: func(cmd *cobra.Command, args []string) error {
-		resp, err := api.GetUser(createContextWithAuthorization(), viper.GetString("controllerAPIEndpoint"), nbUserName)
+		resp, err := api.GetUser(
+			createContextWithAuthorization(),
+			viper.GetString("controllerAPIEndpoint"),
+			nbUserName,
+			uuid.Nil,
+		)
 		if err != nil {
 			return err
 		}
diff --git a/controller/api/role.go b/controller/api/role.go
index b9d6bcc5c66186db408cf6c974a1bfab101d0769..cef73197238fa77d13a81d9a561a9ea3ea20ee2b 100644
--- a/controller/api/role.go
+++ b/controller/api/role.go
@@ -6,6 +6,7 @@ import (
 
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
 	nbi "code.fbi.h-da.de/danet/gosdn/controller/northbound/client"
+	"github.com/google/uuid"
 )
 
 // CreateRoles creates roles with provided data
@@ -24,7 +25,7 @@ func CreateRoles(ctx context.Context, addr string, roles []*apb.Role) (*apb.Crea
 }
 
 // GetRole returns one requested role found by name
-func GetRole(ctx context.Context, addr, name string) (*apb.GetRoleResponse, error) {
+func GetRole(ctx context.Context, addr, name string, uuid uuid.UUID) (*apb.GetRoleResponse, error) {
 	roleClient, err := nbi.RoleClient(addr, dialOptions...)
 	if err != nil {
 		return nil, err
@@ -33,6 +34,7 @@ func GetRole(ctx context.Context, addr, name string) (*apb.GetRoleResponse, erro
 	r := &apb.GetRoleRequest{
 		Timestamp: time.Now().UnixNano(),
 		RoleName:  name,
+		Id:        uuid.String(),
 	}
 
 	return roleClient.GetRole(ctx, r)
diff --git a/controller/api/role_test.go b/controller/api/role_test.go
index c98b0d277579b2376b86aa5b03d7e2e051b09a50..2dd79fd69e1318f88040637e7db6082b46cfb8cb 100644
--- a/controller/api/role_test.go
+++ b/controller/api/role_test.go
@@ -61,6 +61,7 @@ func TestGetRole(t *testing.T) {
 		ctx  context.Context
 		addr string
 		name string
+		uuid uuid.UUID
 	}
 	tests := []struct {
 		name    string
@@ -97,7 +98,7 @@ func TestGetRole(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			got, err := GetRole(tt.args.ctx, tt.args.addr, tt.args.name)
+			got, err := GetRole(tt.args.ctx, tt.args.addr, tt.args.name, tt.args.uuid)
 			if (err != nil) != tt.wantErr {
 				t.Errorf("GetRole() error = %v, wantErr %v", err, tt.wantErr)
 				return
diff --git a/controller/northbound/server/role.go b/controller/northbound/server/role.go
index 4cb05b6e16e885082f2e6a1b88466f000f2a7961..4141c6250d51b81984b652430e852f6f0a3a4eb4 100644
--- a/controller/northbound/server/role.go
+++ b/controller/northbound/server/role.go
@@ -2,6 +2,7 @@ package server
 
 import (
 	"context"
+	"fmt"
 	"time"
 
 	apb "code.fbi.h-da.de/danet/gosdn/api/go/gosdn/rbac"
@@ -59,7 +60,12 @@ func (r Role) GetRole(ctx context.Context, request *apb.GetRoleRequest) (*apb.Ge
 	start := metrics.StartHook(labels, grpcRequestsTotal)
 	defer metrics.FinishHook(labels, start, grpcRequestDurationSecondsTotal, grpcRequestDurationSeconds)
 
-	roleData, err := r.roleService.Get(store.Query{Name: request.RoleName})
+	roleID, err := uuid.Parse(request.Id)
+	if err != nil {
+		return nil, fmt.Errorf("could not parse role uuid")
+	}
+
+	roleData, err := r.roleService.Get(store.Query{Name: request.RoleName, ID: roleID})
 	if err != nil {
 		return nil, err
 	}