diff --git a/ee/config/metrics/license/20210204124831_license_md5.yml b/ee/config/metrics/license/20210204124831_license_md5.yml
index cc8417957eedafb8aaf2e5040bae674ddb085d76..f59f41e0785faf4b980af2ebce8fe1c5a0d2ef8e 100644
--- a/ee/config/metrics/license/20210204124831_license_md5.yml
+++ b/ee/config/metrics/license/20210204124831_license_md5.yml
@@ -9,13 +9,16 @@ value_type: string
 status: active
 time_frame: none
 data_source: license
-instrumentation_class: LicenseMdFiveMetric
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - md5
 data_category: standard
 distribution:
-- ee
+  - ee
 tier:
-- premium
-- ultimate
+  - premium
+  - ultimate
 introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/557
 performance_indicator_type: []
 milestone: "<13.9"
diff --git a/ee/config/metrics/license/20210204124833_license_id.yml b/ee/config/metrics/license/20210204124833_license_id.yml
index 1397c859915cbc5ccb0fb483a8f66268f8d3d9ce..28beb96ec7ae8555317c688482362d580a25ca57 100644
--- a/ee/config/metrics/license/20210204124833_license_id.yml
+++ b/ee/config/metrics/license/20210204124833_license_id.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: license
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - id
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124843_license_user_count.yml b/ee/config/metrics/license/20210204124843_license_user_count.yml
index e8100d8057bdef223ee6e27ff0c95344ef8db74d..f050ab2c671ebf6bd383569e1f79a5b55eb2b322 100644
--- a/ee/config/metrics/license/20210204124843_license_user_count.yml
+++ b/ee/config/metrics/license/20210204124843_license_user_count.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: license
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    user_count
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124845_license_starts_at.yml b/ee/config/metrics/license/20210204124845_license_starts_at.yml
index fc3cf6c616f9daf8694f46975a9a859bb7f62a34..c04aba4c5f2c0933a753abd711360220f36ef3c4 100644
--- a/ee/config/metrics/license/20210204124845_license_starts_at.yml
+++ b/ee/config/metrics/license/20210204124845_license_starts_at.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: license
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - starts_at
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124847_license_expires_at.yml b/ee/config/metrics/license/20210204124847_license_expires_at.yml
index 51cf495e5ca7740d8c1af74c054f5b684a5c9279..2d0455db26ff685827fc446c9920304364daee18 100644
--- a/ee/config/metrics/license/20210204124847_license_expires_at.yml
+++ b/ee/config/metrics/license/20210204124847_license_expires_at.yml
@@ -10,6 +10,10 @@ status: active
 data_category: subscription
 time_frame: none
 data_source: license
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - expires_at
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124849_license_plan.yml b/ee/config/metrics/license/20210204124849_license_plan.yml
index f591954f7e760674995220552d6dd70fd78082df..8e52228d0b08fb2242735e03fc9eaba3f1a33814 100644
--- a/ee/config/metrics/license/20210204124849_license_plan.yml
+++ b/ee/config/metrics/license/20210204124849_license_plan.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: license
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - plan
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124851_license_trial.yml b/ee/config/metrics/license/20210204124851_license_trial.yml
index fd14a5b9abca3c9360c65cc2f84a2d8d09116c65..84e979bf728ac9c9fbe8cf7b1d4947c7e1300154 100644
--- a/ee/config/metrics/license/20210204124851_license_trial.yml
+++ b/ee/config/metrics/license/20210204124851_license_trial.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: license
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - trial
 distribution:
 - ee
 tier:
diff --git a/ee/config/metrics/license/20210204124852_license_subscription_id.yml b/ee/config/metrics/license/20210204124852_license_subscription_id.yml
index d91e17902d07c74855bd256078c1ec83d601ffb6..12edf3d00b59a251314ddd9a66980af7e70a9661 100644
--- a/ee/config/metrics/license/20210204124852_license_subscription_id.yml
+++ b/ee/config/metrics/license/20210204124852_license_subscription_id.yml
@@ -9,7 +9,10 @@ value_type: string
 status: active
 time_frame: none
 data_source: license
-instrumentation_class: ZuoraSubscriptionIdMetric
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - subsription_id
 data_category: standard
 distribution:
 - ee
diff --git a/ee/config/metrics/license/20210204124926_license_trial_ends_on.yml b/ee/config/metrics/license/20210204124926_license_trial_ends_on.yml
index ca2433a03d71eaa5490189fd6719e17ec0b40507..7095255a51995745e453c167aa680dd94a1ca903 100644
--- a/ee/config/metrics/license/20210204124926_license_trial_ends_on.yml
+++ b/ee/config/metrics/license/20210204124926_license_trial_ends_on.yml
@@ -10,6 +10,10 @@ status: active
 time_frame: none
 data_source: database
 data_category: subscription
+instrumentation_class: LicenseMetric
+options:
+  attribute:
+    - trial_ends_on
 distribution:
 - ee
 tier:
diff --git a/ee/lib/ee/gitlab/usage_data.rb b/ee/lib/ee/gitlab/usage_data.rb
index ff529830e80d44c826776f1e56ffa37c3354d55a..35118127c1dd90bcd3eab2bd1870c70c99316e23 100644
--- a/ee/lib/ee/gitlab/usage_data.rb
+++ b/ee/lib/ee/gitlab/usage_data.rb
@@ -72,7 +72,7 @@ def features_usage_data
         def features_usage_data_ee
           {
             elasticsearch_enabled: alt_usage_data(fallback: nil) { ::Gitlab::CurrentSettings.elasticsearch_search? },
-            license_trial_ends_on: alt_usage_data(fallback: nil) { License.trial_ends_on },
+            license_trial_ends_on: alt_usage_data(fallback: nil) { add_metric("LicenseMetric", options: { attribute: :trial_ends_on }) },
             geo_enabled: alt_usage_data(fallback: nil) { ::Gitlab::Geo.enabled? },
             user_cap_feature_enabled: add_metric('UserCapSettingEnabledMetric', time_frame: 'none')
           }
diff --git a/ee/lib/gitlab/usage/metrics/instrumentations/license_metric.rb b/ee/lib/gitlab/usage/metrics/instrumentations/license_metric.rb
new file mode 100644
index 0000000000000000000000000000000000000000..af361ad8125a46a3c28c166b8fedb199ff3ff6bd
--- /dev/null
+++ b/ee/lib/gitlab/usage/metrics/instrumentations/license_metric.rb
@@ -0,0 +1,46 @@
+# frozen_string_literal: true
+
+module Gitlab
+  module Usage
+    module Metrics
+      module Instrumentations
+        class LicenseMetric < GenericMetric
+          # Usage example
+          #
+          # In metric YAML defintion
+          # instrumentation_class: LicenseMetric
+          # options:
+          #   attribute: md5
+          # end
+
+          ALLOWED_ATTRIBUTES = %i(md5
+                                  id
+                                  plan
+                                  trial
+                                  starts_at
+                                  expires_at
+                                  user_count
+                                  trial_ends_on
+                                  subscription_id).freeze
+
+          def initialize(time_frame:, options: {})
+            super
+
+            raise ArgumentError, "License options attribute are required" unless license_attribute.present?
+            raise ArgumentError, "attribute should one allowed" unless license_attribute.in?(ALLOWED_ATTRIBUTES)
+          end
+
+          def license_attribute
+            options[:attribute]
+          end
+
+          def value
+            alt_usage_data(fallback: -1) do
+              ::Licese.current.send(license_attribute)
+            end
+          end
+        end
+      end
+    end
+  end
+end
diff --git a/lib/gitlab/utils/usage_data.rb b/lib/gitlab/utils/usage_data.rb
index 0c4d767f12695930291d970740d4c4137aa65a99..d46e43038311f68309e90ea11edf553e86f6c3f8 100644
--- a/lib/gitlab/utils/usage_data.rb
+++ b/lib/gitlab/utils/usage_data.rb
@@ -45,14 +45,13 @@ module UsageData
       MAX_BUCKET_SIZE = 100
       INSTRUMENTATION_CLASS_FALLBACK = -100
 
-      def add_metric(metric, time_frame: 'none')
+      def add_metric(metric, time_frame: 'none', options: {})
         # Results of this method should be overwritten by instrumentation class values
         # -100 indicates the metric was not properly merged.
         return INSTRUMENTATION_CLASS_FALLBACK if Feature.enabled?(:usage_data_instrumentation)
-
         metric_class = "Gitlab::Usage::Metrics::Instrumentations::#{metric}".constantize
 
-        metric_class.new(time_frame: time_frame).value
+        metric_class.new(time_frame: time_frame, options: options).value
       end
 
       def count(relation, column = nil, batch: true, batch_size: nil, start: nil, finish: nil)