diff --git a/redfish-core/lib/event_service.hpp b/redfish-core/lib/event_service.hpp
index 5a66c97..02bb21f 100644
--- a/redfish-core/lib/event_service.hpp
+++ b/redfish-core/lib/event_service.hpp
@@ -43,8 +43,6 @@
     "Task"};
 #endif
 
-static constexpr const uint8_t maxNoOfSubscriptions = 20;
-
 inline void requestRoutesEventService(App& app)
 {
     BMCWEB_ROUTE(app, "/redfish/v1/EventService/")
@@ -62,6 +60,9 @@
             "#EventService.v1_5_0.EventService";
         asyncResp->res.jsonValue["Id"] = "EventService";
         asyncResp->res.jsonValue["Name"] = "Event Service";
+        asyncResp->res.jsonValue["ServerSentEventUri"] =
+            "/redfish/v1/EventService/SSE";
+
         asyncResp->res.jsonValue["Subscriptions"]["@odata.id"] =
             "/redfish/v1/EventService/Subscriptions";
         asyncResp->res
diff --git a/redfish-core/lib/eventservice_sse.hpp b/redfish-core/lib/eventservice_sse.hpp
new file mode 100644
index 0000000..864383c
--- /dev/null
+++ b/redfish-core/lib/eventservice_sse.hpp
@@ -0,0 +1,53 @@
+#pragma once
+
+#include <app.hpp>
+#include <event_service_manager.hpp>
+
+namespace redfish
+{
+
+inline void createSubscription(crow::sse_socket::Connection& conn)
+{
+    EventServiceManager& manager =
+        EventServiceManager::getInstance(&conn.getIoContext());
+    if ((manager.getNumberOfSubscriptions() >= maxNoOfSubscriptions) ||
+        manager.getNumberOfSSESubscriptions() >= maxNoOfSSESubscriptions)
+    {
+        BMCWEB_LOG_WARNING << "Max SSE subscriptions reached";
+        conn.close("Max SSE subscriptions reached");
+        return;
+    }
+    std::shared_ptr<redfish::Subscription> subValue =
+        std::make_shared<redfish::Subscription>(conn);
+
+    // GET on this URI means, Its SSE subscriptionType.
+    subValue->subscriptionType = redfish::subscriptionTypeSSE;
+
+    subValue->protocol = "Redfish";
+    subValue->retryPolicy = "TerminateAfterRetries";
+    subValue->eventFormatType = "Event";
+
+    std::string id = manager.addSubscription(subValue, false);
+    if (id.empty())
+    {
+        conn.close("Internal Error");
+    }
+}
+
+inline void deleteSubscription(crow::sse_socket::Connection& conn)
+{
+    redfish::EventServiceManager::getInstance(&conn.getIoContext())
+        .deleteSseSubscription(conn);
+}
+
+inline void requestRoutesEventServiceSse(App& app)
+{
+    // Note, this endpoint is given the same privilege level as creating a
+    // subscription, because functionally, that's the operation being done
+    BMCWEB_ROUTE(app, "/redfish/v1/EventService/SSE")
+        .privileges(redfish::privileges::postEventDestinationCollection)
+        .serverSentEvent()
+        .onopen(createSubscription)
+        .onclose(deleteSubscription);
+}
+} // namespace redfish
