diff --git a/id/system/system.go b/id/system/system.go
index 77084f5dcb8dc702b2b14337e97cdc97fd80930b..810062927a8cb21c26acc5e8a32017e9d68ca936 100644
--- a/id/system/system.go
+++ b/id/system/system.go
@@ -63,9 +63,11 @@ func Handler(obj any) *id.ObjectId {
 		i.UserID = val.GetID(context.TODO())
 		return id.MustObjectId(&i)
 	case *auth.ClientPrincipal:
-		var i id.ClientId
-		i.ClientID = val.GetID(context.TODO())
-		return id.MustObjectId(&i)
+		client, _ := val.Client(context.TODO())
+		if client == nil {
+			return id.MustObjectId(&id.ClientId{})
+		}
+		return Handler(client)
 	case *auth.SystemPrincipal:
 		return id.MustObjectId(&id.SystemId{})
 	case *auth.Anonymous: