diff --git a/redfish-core/lib/metric_report_definition.hpp b/redfish-core/lib/metric_report_definition.hpp
index 9a6b25e..5006936 100644
--- a/redfish-core/lib/metric_report_definition.hpp
+++ b/redfish-core/lib/metric_report_definition.hpp
@@ -1190,7 +1190,8 @@
 
 inline void setReportMetrics(
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp, std::string_view id,
-    std::vector<nlohmann::json::object_t>&& metrics)
+    std::vector<std::variant<nlohmann::json::object_t, std::nullptr_t>>&&
+        metrics)
 {
     dbus::utility::getAllProperties(
         telemetry::service, telemetry::getDbusReportPath(id),
@@ -1222,8 +1223,17 @@
                 chassisSensors;
 
             size_t index = 0;
-            for (nlohmann::json::object_t& metric : redfishMetrics)
+            for (std::variant<nlohmann::json::object_t, std::nullptr_t>&
+                     metricVariant : redfishMetrics)
             {
+                nlohmann::json::object_t* metric =
+                    std::get_if<nlohmann::json::object_t>(&metricVariant);
+                if (metric == nullptr)
+                {
+                    index++;
+                    continue;
+                }
+
                 AddReportArgs::MetricArgs metricArgs;
                 std::vector<
                     std::tuple<sdbusplus::message::object_path, std::string>>
@@ -1240,7 +1250,7 @@
                     metricArgs.collectionDuration = std::get<3>(existing);
                 }
 
-                if (!getUserMetric(asyncResp->res, metric, metricArgs))
+                if (!getUserMetric(asyncResp->res, *metric, metricArgs))
                 {
                     return;
                 }
@@ -1332,7 +1342,9 @@
     std::optional<std::string> reportingTypeStr;
     std::optional<std::string> reportUpdatesStr;
     std::optional<bool> metricReportDefinitionEnabled;
-    std::optional<std::vector<nlohmann::json::object_t>> metrics;
+    std::optional<
+        std::vector<std::variant<nlohmann::json::object_t, std::nullptr_t>>>
+        metrics;
     std::optional<std::vector<std::string>> reportActionsStr;
     std::optional<std::string> scheduleDurationStr;
 
