diff --git a/go.mod b/go.mod
index b7a19a152..ca3eae9a2 100644
--- a/go.mod
+++ b/go.mod
@@ -14,7 +14,7 @@ require (
 	github.com/jedib0t/go-pretty/v6 v6.6.3
 	github.com/jfrog/build-info-go v1.10.7
 	github.com/jfrog/gofrog v1.7.6
-	github.com/jfrog/jfrog-client-go v1.48.4
+	github.com/jfrog/jfrog-client-go v1.48.5
 	github.com/magiconair/properties v1.8.7
 	github.com/manifoldco/promptui v0.9.0
 	github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
@@ -96,7 +96,7 @@ require (
 	gopkg.in/warnings.v0 v0.1.2 // indirect
 )
 
-// replace github.com/jfrog/jfrog-client-go => github.com/eyalbe4/jfrog-client-go v1.28.1-0.20241220200217-c4b9ef90c453
+// replace github.com/jfrog/jfrog-client-go => github.com/eyalbe4/jfrog-client-go v1.28.1-0.20241222155750-04d75d451f23
 
 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd
 
diff --git a/go.sum b/go.sum
index 02ff60664..302de5215 100644
--- a/go.sum
+++ b/go.sum
@@ -93,8 +93,8 @@ github.com/jfrog/build-info-go v1.10.7 h1:10NVHYg0193gJpQft+S4WQfvYMtj5jlwwhJRvk
 github.com/jfrog/build-info-go v1.10.7/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
 github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
 github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
-github.com/jfrog/jfrog-client-go v1.48.4 h1:uXvBr2ebFKpBRUhWgC9TSSJe32IbSYGlbDp9tDzBcaY=
-github.com/jfrog/jfrog-client-go v1.48.4/go.mod h1:2ySOMva54L3EYYIlCBYBTcTgqfrrQ19gtpA/MWfA/ec=
+github.com/jfrog/jfrog-client-go v1.48.5 h1:q8v8oZ2HwwVw6+ZCwKbuIpUmxpWUeZzvTASQl/QKxKw=
+github.com/jfrog/jfrog-client-go v1.48.5/go.mod h1:2ySOMva54L3EYYIlCBYBTcTgqfrrQ19gtpA/MWfA/ec=
 github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
 github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
 github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
diff --git a/utils/usage/visibility_system_manager.go b/utils/usage/visibility_system_manager.go
index aa1cd78f2..e9053bf01 100644
--- a/utils/usage/visibility_system_manager.go
+++ b/utils/usage/visibility_system_manager.go
@@ -1,12 +1,12 @@
 package usage
 
 import (
-	"encoding/json"
 	"os"
 
 	"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
 	"github.com/jfrog/jfrog-cli-core/v2/utils/config"
 	"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
+	"github.com/jfrog/jfrog-client-go/jfconnect/services"
 )
 
 type VisibilitySystemManager struct {
@@ -19,24 +19,8 @@ func NewVisibilitySystemManager(serverDetails *config.ServerDetails) *Visibility
 	}
 }
 
-type labels struct {
-	ProductID                            string `json:"product_id"`
-	FeatureID                            string `json:"feature_id"`
-	OIDCUsed                             string `json:"oidc_used"`
-	JobID                                string `json:"job_id"`
-	RunID                                string `json:"run_id"`
-	GitRepo                              string `json:"git_repo"`
-	GhTokenForCodeScanningAlertsProvided string `json:"gh_token_for_code_scanning_alerts_provided"`
-}
-
-type visibilityMetric struct {
-	Value       int    `json:"value"`
-	MetricsName string `json:"metrics_name"`
-	Labels      labels `json:"labels"`
-}
-
-func (vsm *VisibilitySystemManager) createMetric(commandName string) ([]byte, error) {
-	metricLabels := labels{
+func (vsm *VisibilitySystemManager) createMetric(commandName string) services.VisibilityMetric {
+	metricLabels := services.Labels{
 		ProductID:                            coreutils.GetCliUserAgentName(),
 		FeatureID:                            commandName,
 		OIDCUsed:                             os.Getenv("JFROG_CLI_USAGE_OIDC_USED"),
@@ -46,13 +30,11 @@ func (vsm *VisibilitySystemManager) createMetric(commandName string) ([]byte, er
 		GhTokenForCodeScanningAlertsProvided: os.Getenv("JFROG_CLI_USAGE_GH_TOKEN_FOR_CODE_SCANNING_ALERTS_PROVIDED"),
 	}
 
-	metric := visibilityMetric{
+	return services.VisibilityMetric{
 		Value:       1,
 		MetricsName: "jfcli_commands_count",
 		Labels:      metricLabels,
 	}
-
-	return json.Marshal(metric)
 }
 
 func (vsm *VisibilitySystemManager) SendUsage(commandName string) error {
@@ -60,9 +42,5 @@ func (vsm *VisibilitySystemManager) SendUsage(commandName string) error {
 	if err != nil {
 		return err
 	}
-	metric, err := vsm.createMetric(commandName)
-	if err != nil {
-		return err
-	}
-	return manager.PostMetric(metric)
+	return manager.PostVisibilityMetric(vsm.createMetric(commandName))
 }
diff --git a/utils/usage/visibility_system_manager_test.go b/utils/usage/visibility_system_manager_test.go
index d5888fb4d..bc27f4433 100644
--- a/utils/usage/visibility_system_manager_test.go
+++ b/utils/usage/visibility_system_manager_test.go
@@ -1,6 +1,7 @@
 package usage
 
 import (
+	"encoding/json"
 	"testing"
 
 	"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
@@ -29,7 +30,8 @@ func TestCreateMetric(t *testing.T) {
 	}()
 
 	commandName := "testCommand"
-	metric, err := NewVisibilitySystemManager(nil).createMetric(commandName)
+	metric := NewVisibilitySystemManager(nil).createMetric(commandName)
+	metricJSON, err := json.Marshal(metric)
 	assert.NoError(t, err)
 
 	// Define the expected JSON structure
@@ -48,5 +50,5 @@ func TestCreateMetric(t *testing.T) {
 	}`
 
 	// Compare the generated JSON to the expected JSON
-	assert.JSONEq(t, expectedJSON, string(metric))
+	assert.JSONEq(t, expectedJSON, string(metricJSON))
 }