diff --git a/redfish-core/include/event_service_manager.hpp b/redfish-core/include/event_service_manager.hpp
index 556a635..4fb07ca 100644
--- a/redfish-core/include/event_service_manager.hpp
+++ b/redfish-core/include/event_service_manager.hpp
@@ -391,8 +391,16 @@
 
     ~Subscription() = default;
 
-    void sendEvent(const std::string& msg)
+    bool sendEvent(const std::string& msg)
     {
+        persistent_data::EventServiceConfig eventServiceConfig =
+            persistent_data::EventServiceStore::getInstance()
+                .getEventServiceConfig();
+        if (!eventServiceConfig.enabled)
+        {
+            return false;
+        }
+
         if (conn == nullptr)
         {
             // create the HttpClient connection
@@ -408,9 +416,10 @@
         {
             sseConn->sendData(eventSeqNum, msg);
         }
+        return true;
     }
 
-    void sendTestEventLog()
+    bool sendTestEventLog()
     {
         nlohmann::json logEntryArray;
         logEntryArray.push_back({});
@@ -431,7 +440,7 @@
                               {"Name", "Event Log"},
                               {"Events", logEntryArray}};
 
-        this->sendEvent(
+        return this->sendEvent(
             msg.dump(2, ' ', true, nlohmann::json::error_handler_t::replace));
     }
 
@@ -971,18 +980,27 @@
         return false;
     }
 
-    void sendTestEventLog()
+    bool sendTestEventLog()
     {
         for (const auto& it : this->subscriptionsMap)
         {
             std::shared_ptr<Subscription> entry = it.second;
-            entry->sendTestEventLog();
+            if (!entry->sendTestEventLog())
+            {
+                return false;
+            }
         }
+        return true;
     }
 
     void sendEvent(const nlohmann::json& eventMessageIn,
                    const std::string& origin, const std::string& resType)
     {
+        if (!serviceEnabled || !noOfEventLogSubscribers)
+        {
+            BMCWEB_LOG_DEBUG << "EventService disabled or no Subscriptions.";
+            return;
+        }
         nlohmann::json eventRecord = nlohmann::json::array();
         nlohmann::json eventMessage = eventMessageIn;
         // MemberId is 0 : since we are sending one event record.
diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index 115bfee..9b4f6bd 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -161,7 +161,12 @@
         .methods(boost::beast::http::verb::post)(
             [](const crow::Request&,
                const std::shared_ptr<bmcweb::AsyncResp>& asyncResp) {
-                EventServiceManager::getInstance().sendTestEventLog();
+                if (!EventServiceManager::getInstance().sendTestEventLog())
+                {
+                    messages::serviceDisabled(asyncResp->res,
+                                              "/redfish/v1/EventService/");
+                    return;
+                }
                 asyncResp->res.result(boost::beast::http::status::no_content);
             });
 }
