diff --git a/selutility.cpp b/selutility.cpp
index 3f9d9ab..f52d51e 100644
--- a/selutility.cpp
+++ b/selutility.cpp
@@ -1,5 +1,6 @@
 #include <chrono>
 #include <vector>
+#include <experimental/filesystem>
 #include <phosphor-logging/elog-errors.hpp>
 #include "host-ipmid/ipmid-api.h"
 #include "xyz/openbmc_project/Common/error.hpp"
@@ -214,6 +215,43 @@
     return std::chrono::duration_cast<std::chrono::seconds>(chronoTimeStamp);
 }
 
+void readLoggingObjectPaths(ObjectPaths& paths)
+{
+    sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
+    auto depth = 0;
+    paths.clear();
+
+    auto mapperCall = bus.new_method_call(mapperBusName,
+                                          mapperObjPath,
+                                          mapperIntf,
+                                          "GetSubTreePaths");
+    mapperCall.append(logBasePath);
+    mapperCall.append(depth);
+    mapperCall.append(ObjectPaths({logEntryIntf}));
+
+    auto reply = bus.call(mapperCall);
+    if (reply.is_method_error())
+    {
+        log<level::INFO>("Error in reading logging entry object paths");
+    }
+    else
+    {
+        reply.read(paths);
+
+        std::sort(paths.begin(), paths.end(), [](const std::string& a,
+                                                 const std::string& b)
+        {
+            namespace fs = std::experimental::filesystem;
+            fs::path pathA(a);
+            fs::path pathB(b);
+            auto idA = std::stoul(pathA.filename().string());
+            auto idB = std::stoul(pathB.filename().string());
+
+            return idA < idB;
+        });
+    }
+}
+
 } // namespace sel
 
 } // namespace ipmi
diff --git a/selutility.hpp b/selutility.hpp
index 2cae8c3..164ebe6 100644
--- a/selutility.hpp
+++ b/selutility.hpp
@@ -20,6 +20,7 @@
 
 static constexpr auto propIntf = "org.freedesktop.DBus.Properties";
 
+using ObjectPaths = std::vector<std::string>;
 using PropertyType = sdbusplus::message::variant<bool, uint32_t, uint64_t,
                      std::string, std::vector<std::string>>;
 
@@ -122,6 +123,21 @@
  */
 std::chrono::seconds getEntryTimeStamp(const std::string& objPath);
 
+/** @brief Read the logging entry object paths
+ *
+ *  This API would read the logging dbus logging entry object paths and sorting
+ *  the filename in the numeric order. The paths is cleared before populating
+ *  the object paths.
+ *
+ *  @param[in,out] paths - sorted list of logging entry object paths.
+ *
+ *  @note This function is invoked when the Get SEL Info command or the Delete
+ *        SEL entry command is invoked. The Get SEL Entry command is preceded
+ *        typically by Get SEL Info command, so readLoggingObjectPaths is not
+ *        invoked before each Get SEL entry command.
+ */
+void readLoggingObjectPaths(ObjectPaths& paths);
+
 namespace internal
 {
 
