diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index a2b1788..7fac1f9 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -15,6 +15,7 @@
 */
 #pragma once
 #include "dbus_log_watcher.hpp"
+#include "dbus_singleton.hpp"
 #include "dbus_utility.hpp"
 #include "error_messages.hpp"
 #include "event_log.hpp"
@@ -31,6 +32,7 @@
 #include "utils/time_utils.hpp"
 
 #include <boost/asio/io_context.hpp>
+#include <boost/asio/steady_timer.hpp>
 #include <boost/circular_buffer.hpp>
 #include <boost/container/flat_map.hpp>
 #include <boost/url/format.hpp>
@@ -144,6 +146,12 @@
 
             // Update retry configuration.
             subValue->updateRetryConfig(retryAttempts, retryTimeoutInterval);
+
+            // schedule a heartbeat if sendHeartbeat was set to true
+            if (subValue->userSub->sendHeartbeat)
+            {
+                subValue->scheduleNextHeartbeatEvent();
+            }
         }
     }
 
diff --git a/redfish-core/include/heartbeat_messages.hpp b/redfish-core/include/heartbeat_messages.hpp
new file mode 100644
index 0000000..0d4839b
--- /dev/null
+++ b/redfish-core/include/heartbeat_messages.hpp
@@ -0,0 +1,38 @@
+#pragma once
+#include "registries/heartbeat_event_message_registry.hpp"
+
+#include <nlohmann/json.hpp>
+
+#include <array>
+#include <span>
+#include <string_view>
+
+namespace redfish::messages
+{
+
+inline nlohmann::json
+    getLogHeartbeat(redfish::registries::heartbeat_event::Index name,
+                    std::span<const std::string_view> args)
+{
+    size_t index = static_cast<size_t>(name);
+    if (index >= redfish::registries::heartbeat_event::registry.size())
+    {
+        return {};
+    }
+    return getLogFromRegistry(redfish::registries::heartbeat_event::header,
+                              redfish::registries::heartbeat_event::registry,
+                              index, args);
+}
+
+/**
+ * @brief Formats RedfishServiceFunctional message into JSON
+ * Message body: "Redfish service is functional."
+ *
+ * @returns Message RedfishServiceFunctional formatted to JSON */
+inline nlohmann::json redfishServiceFunctional()
+{
+    return getLogHeartbeat(
+        registries::heartbeat_event::Index::redfishServiceFunctional, {});
+}
+
+} // namespace redfish::messages
diff --git a/redfish-core/include/registries_selector.hpp b/redfish-core/include/registries_selector.hpp
index 48b3cf7..8b9cdf3 100644
--- a/redfish-core/include/registries_selector.hpp
+++ b/redfish-core/include/registries_selector.hpp
@@ -1,5 +1,6 @@
 #pragma once
 #include "registries/base_message_registry.hpp"
+#include "registries/heartbeat_event_message_registry.hpp"
 #include "registries/openbmc_message_registry.hpp"
 #include "registries/task_event_message_registry.hpp"
 
@@ -19,6 +20,10 @@
     {
         return {openbmc::registry};
     }
+    if (heartbeat_event::header.registryPrefix == registryName)
+    {
+        return {heartbeat_event::registry};
+    }
     if (base::header.registryPrefix == registryName)
     {
         return {base::registry};
diff --git a/redfish-core/include/subscription.hpp b/redfish-core/include/subscription.hpp
index 62f7826..d1c3ab8 100644
--- a/redfish-core/include/subscription.hpp
+++ b/redfish-core/include/subscription.hpp
@@ -54,6 +54,12 @@
     void resHandler(const std::shared_ptr<Subscription>& /*unused*/,
                     const crow::Response& res);
 
+    void sendHeartbeatEvent();
+    void scheduleNextHeartbeatEvent();
+    void heartbeatParametersChanged();
+    void onHbTimeout(const std::weak_ptr<Subscription>& weakSelf,
+                     const boost::system::error_code& ec);
+
     bool sendEventToSubscriber(std::string&& msg);
 
     bool sendTestEventLog();
@@ -85,6 +91,7 @@
     crow::sse_socket::Connection* sseConn = nullptr;
 
     std::optional<crow::HttpClient> client;
+    boost::asio::steady_timer hbTimer;
 
   public:
     std::optional<filter_ast::LogicalAnd> filter;
