diff --git a/redfish-core/lib/message_registries.hpp b/redfish-core/lib/message_registries.hpp
index 92721eb..94588ac 100644
--- a/redfish-core/lib/message_registries.hpp
+++ b/redfish-core/lib/message_registries.hpp
@@ -23,6 +23,7 @@
 #include "registries/privilege_registry.hpp"
 #include "registries/resource_event_message_registry.hpp"
 #include "registries/task_event_message_registry.hpp"
+#include "registries/telemetry_message_registry.hpp"
 
 #include <boost/url/format.hpp>
 
@@ -48,11 +49,11 @@
     asyncResp->res.jsonValue["Name"] = "MessageRegistryFile Collection";
     asyncResp->res.jsonValue["Description"] =
         "Collection of MessageRegistryFiles";
-    asyncResp->res.jsonValue["Members@odata.count"] = 4;
+    asyncResp->res.jsonValue["Members@odata.count"] = 5;
 
     nlohmann::json& members = asyncResp->res.jsonValue["Members"];
-    for (const char* memberName :
-         std::to_array({"Base", "TaskEvent", "ResourceEvent", "OpenBMC"}))
+    for (const char* memberName : std::to_array(
+             {"Base", "TaskEvent", "ResourceEvent", "OpenBMC", "Telemetry"}))
     {
         nlohmann::json::object_t member;
         member["@odata.id"] = boost::urls::format("/redfish/v1/Registries/{}",
@@ -105,6 +106,11 @@
         header = &registries::resource_event::header;
         url = registries::resource_event::url;
     }
+    else if (registry == "Telemetry")
+    {
+        header = &registries::telemetry::header;
+        url = registries::telemetry::url;
+    }
     else
     {
         messages::resourceNotFound(asyncResp->res, "MessageRegistryFile",
@@ -194,6 +200,15 @@
             registryEntries.emplace_back(&entry);
         }
     }
+    else if (registry == "Telemetry")
+    {
+        header = &registries::telemetry::header;
+        for (const registries::MessageEntry& entry :
+             registries::telemetry::registry)
+        {
+            registryEntries.emplace_back(&entry);
+        }
+    }
     else
     {
         messages::resourceNotFound(asyncResp->res, "MessageRegistryFile",
diff --git a/redfish-core/src/registries.cpp b/redfish-core/src/registries.cpp
index 8c8b36a..61b27b5 100644
--- a/redfish-core/src/registries.cpp
+++ b/redfish-core/src/registries.cpp
@@ -2,6 +2,7 @@
 
 #include "registries/base_message_registry.hpp"
 #include "registries/openbmc_message_registry.hpp"
+#include "registries/telemetry_message_registry.hpp"
 #include "str_utility.hpp"
 
 #include <algorithm>
@@ -52,6 +53,11 @@
         return getMessageFromRegistry(
             messageKey, std::span<const MessageEntry>(openbmc::registry));
     }
+    if (std::string(telemetry::header.registryPrefix) == registryName)
+    {
+        return getMessageFromRegistry(
+            messageKey, std::span<const MessageEntry>(telemetry::registry));
+    }
     return nullptr;
 }
 
