diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index d415496..04ca735 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -34,6 +34,7 @@
 
 #include <charconv>
 #include <memory>
+#include <optional>
 #include <ranges>
 #include <span>
 #include <string>
@@ -299,6 +300,8 @@
             std::optional<std::string> subscriptionType;
             std::optional<std::string> eventFormatType2;
             std::optional<std::string> retryPolicy;
+            std::optional<bool> sendHeartbeat;
+            std::optional<uint64_t> hbIntervalMinutes;
             std::optional<std::vector<std::string>> msgIds;
             std::optional<std::vector<std::string>> regPrefixes;
             std::optional<std::vector<std::string>> originResources;
@@ -312,6 +315,7 @@
                     "DeliveryRetryPolicy", retryPolicy, //
                     "Destination", destUrl, //
                     "EventFormatType", eventFormatType2, //
+                    "HeartbeatIntervalMinutes", hbIntervalMinutes, //
                     "HttpHeaders", headers, //
                     "MessageIds", msgIds, //
                     "MetricReportDefinitions", mrdJsonArray, //
@@ -319,6 +323,7 @@
                     "Protocol", protocol, //
                     "RegistryPrefixes", regPrefixes, //
                     "ResourceTypes", resTypes, //
+                    "SendHeartbeat", sendHeartbeat, //
                     "SubscriptionType", subscriptionType, //
                     "VerifyCertificate", verifyCertificate //
                     ))
@@ -403,6 +408,18 @@
                                                     "RetryPolicy", "Protocol");
                     return;
                 }
+                if (sendHeartbeat)
+                {
+                    messages::propertyValueConflict(
+                        asyncResp->res, "SendHeartbeat", "Protocol");
+                    return;
+                }
+                if (hbIntervalMinutes)
+                {
+                    messages::propertyValueConflict(
+                        asyncResp->res, "HeartbeatIntervalMinutes", "Protocol");
+                    return;
+                }
                 if (msgIds)
                 {
                     messages::propertyValueConflict(asyncResp->res,
@@ -646,6 +663,21 @@
                 // Default "TerminateAfterRetries"
                 subValue->userSub->retryPolicy = "TerminateAfterRetries";
             }
+            if (sendHeartbeat)
+            {
+                subValue->userSub->sendHeartbeat = *sendHeartbeat;
+            }
+            if (hbIntervalMinutes)
+            {
+                if (*hbIntervalMinutes < 1 || *hbIntervalMinutes > 65535)
+                {
+                    messages::propertyValueOutOfRange(
+                        asyncResp->res, *hbIntervalMinutes,
+                        "HeartbeatIntervalMinutes");
+                    return;
+                }
+                subValue->userSub->hbIntervalMinutes = *hbIntervalMinutes;
+            }
 
             if (mrdJsonArray)
             {
@@ -730,6 +762,8 @@
 
                 jVal["MessageIds"] = userSub.registryMsgIds;
                 jVal["DeliveryRetryPolicy"] = userSub.retryPolicy;
+                jVal["SendHeartbeat"] = userSub.sendHeartbeat;
+                jVal["HeartbeatIntervalMinutes"] = userSub.hbIntervalMinutes;
                 jVal["VerifyCertificate"] = userSub.verifyCertificate;
 
                 nlohmann::json::array_t mrdJsonArray;
@@ -766,6 +800,8 @@
 
                 std::optional<std::string> context;
                 std::optional<std::string> retryPolicy;
+                std::optional<bool> sendHeartbeat;
+                std::optional<uint64_t> hbIntervalMinutes;
                 std::optional<bool> verifyCertificate;
                 std::optional<std::vector<nlohmann::json::object_t>> headers;
 
@@ -773,7 +809,9 @@
                         req, asyncResp->res, //
                         "Context", context, //
                         "DeliveryRetryPolicy", retryPolicy, //
+                        "HeartbeatIntervalMinutes", hbIntervalMinutes, //
                         "HttpHeaders", headers, //
+                        "SendHeartbeat", sendHeartbeat, //
                         "VerifyCertificate", verifyCertificate //
                         ))
                 {
@@ -821,6 +859,22 @@
                     subValue->userSub->retryPolicy = *retryPolicy;
                 }
 
+                if (sendHeartbeat)
+                {
+                    subValue->userSub->sendHeartbeat = *sendHeartbeat;
+                }
+                if (hbIntervalMinutes)
+                {
+                    if (*hbIntervalMinutes < 1 || *hbIntervalMinutes > 65535)
+                    {
+                        messages::propertyValueOutOfRange(
+                            asyncResp->res, *hbIntervalMinutes,
+                            "HeartbeatIntervalMinutes");
+                        return;
+                    }
+                    subValue->userSub->hbIntervalMinutes = *hbIntervalMinutes;
+                }
+
                 if (verifyCertificate)
                 {
                     subValue->userSub->verifyCertificate = *verifyCertificate;
