diff --git a/redfish-core/src/redfish.cpp b/redfish-core/src/redfish.cpp
index 67bd25e..45ad5cf 100644
--- a/redfish-core/src/redfish.cpp
+++ b/redfish-core/src/redfish.cpp
@@ -23,6 +23,7 @@
 #include "log_services.hpp"
 #include "manager_diagnostic_data.hpp"
 #include "manager_logservices_journal.hpp"
+#include "manager_logservices_journal_eventlog.hpp"
 #include "managers.hpp"
 #include "memory.hpp"
 #include "message_registries.hpp"
@@ -115,10 +116,34 @@
     requestRoutesCableCollection(app);
 
     requestRoutesSystemsLogServiceCollection(app);
-    requestRoutesSystemsEventLogService(app);
+    requestRoutesManagersLogServiceCollection(app);
 
     requestRoutesSystemsLogServicesPostCode(app);
 
+    if constexpr (BMCWEB_REDFISH_EVENTLOG_LOCATION == "systems")
+    {
+        requestRoutesSystemsEventLogService(app);
+        if constexpr (BMCWEB_REDFISH_DBUS_LOG)
+        {
+            requestRoutesDBusLogServiceActionsClear(app);
+            requestRoutesDBusEventLogEntryCollection(app);
+            requestRoutesDBusEventLogEntry(app);
+            requestRoutesDBusEventLogEntryDownload(app);
+        }
+        else
+        {
+            requestRoutesJournalEventLogEntryCollection(app);
+            requestRoutesJournalEventLogEntry(app);
+            requestRoutesJournalEventLogClear(app);
+        }
+    }
+
+    if constexpr (BMCWEB_REDFISH_EVENTLOG_LOCATION == "managers")
+    {
+        requestRoutesManagersEventLogService(app);
+        requestRoutesManagersJournalEventLog(app);
+    }
+
     if constexpr (BMCWEB_REDFISH_DUMP_LOG)
     {
         requestRoutesSystemDumpService(app);
@@ -140,8 +165,6 @@
         requestRoutesFaultLogDumpClear(app);
     }
 
-    requestRoutesManagersLogServiceCollection(app);
-
     if constexpr (BMCWEB_REDFISH_BMC_JOURNAL)
     {
         requestRoutesBMCJournalLogService(app);
@@ -171,20 +194,6 @@
         requestNBDVirtualMediaRoutes(app);
     }
 
-    if constexpr (BMCWEB_REDFISH_DBUS_LOG)
-    {
-        requestRoutesDBusLogServiceActionsClear(app);
-        requestRoutesDBusEventLogEntryCollection(app);
-        requestRoutesDBusEventLogEntry(app);
-        requestRoutesDBusEventLogEntryDownload(app);
-    }
-    else
-    {
-        requestRoutesJournalEventLogEntryCollection(app);
-        requestRoutesJournalEventLogEntry(app);
-        requestRoutesJournalEventLogClear(app);
-    }
-
     if constexpr (BMCWEB_REDFISH_HOST_LOGGER)
     {
         requestRoutesSystemsLogServiceHostlogger(app);
