diff --git a/redfish-core/lib/log_services.hpp b/redfish-core/lib/log_services.hpp
index fd76da5..cde992b 100644
--- a/redfish-core/lib/log_services.hpp
+++ b/redfish-core/lib/log_services.hpp
@@ -1426,7 +1426,7 @@
     return LogParseError::success;
 }
 
-inline void fillEventLogLogEntryFromPropertyMap(
+inline bool fillEventLogLogEntryFromPropertyMap(
     const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
     const dbus::utility::DBusPropertiesMap& resp,
     nlohmann::json& objectToFillOut)
@@ -1437,7 +1437,7 @@
     if (!optEntry.has_value())
     {
         messages::internalError(asyncResp->res);
-        return;
+        return false;
     }
     DbusEventLogEntry entry = optEntry.value();
 
@@ -1472,6 +1472,7 @@
             "/redfish/v1/Systems/{}/LogServices/EventLog/Entries/{}/attachment",
             BMCWEB_REDFISH_SYSTEM_URI_NAME, std::to_string(entry.Id));
     }
+    return true;
 }
 
 inline void afterLogEntriesGetManagedObjects(
@@ -1507,14 +1508,15 @@
                                             propertyMap.second);
             }
         }
-        fillEventLogLogEntryFromPropertyMap(asyncResp, propsFlattened,
-                                            entriesArray.emplace_back());
+        bool success = fillEventLogLogEntryFromPropertyMap(
+            asyncResp, propsFlattened, entriesArray.emplace_back());
+        if (!success)
+        {
+            return;
+        }
     }
 
-    std::ranges::sort(entriesArray, [](const nlohmann::json& left,
-                                       const nlohmann::json& right) {
-        return (left["Id"] <= right["Id"]);
-    });
+    redfish::json_util::sortJsonArrayByKey(entriesArray, "Id");
     asyncResp->res.jsonValue["Members@odata.count"] = entriesArray.size();
     asyncResp->res.jsonValue["Members"] = std::move(entriesArray);
 }
