diff --git a/phalerror/create_pel.cpp b/phalerror/create_pel.cpp
index e3e6117..4ca8bb0 100644
--- a/phalerror/create_pel.cpp
+++ b/phalerror/create_pel.cpp
@@ -1,5 +1,7 @@
 #include "create_pel.hpp"
 
+#include "util.hpp"
+
 #include <fcntl.h>
 #include <fmt/format.h>
 #include <libekb.H>
@@ -23,41 +25,6 @@
 {
 using namespace phosphor::logging;
 
-namespace util
-{
-std::string getService(sdbusplus::bus::bus& bus, const std::string& objectPath,
-                       const std::string& interface)
-{
-    constexpr auto mapperBusBame = "xyz.openbmc_project.ObjectMapper";
-    constexpr auto mapperObjectPath = "/xyz/openbmc_project/object_mapper";
-    constexpr auto mapperInterface = "xyz.openbmc_project.ObjectMapper";
-    std::vector<std::pair<std::string, std::vector<std::string>>> response;
-    auto method = bus.new_method_call(mapperBusBame, mapperObjectPath,
-                                      mapperInterface, "GetObject");
-    method.append(objectPath, std::vector<std::string>({interface}));
-    try
-    {
-        auto reply = bus.call(method);
-        reply.read(response);
-    }
-    catch (const sdbusplus::exception::SdBusError& e)
-    {
-        log<level::ERR>("D-Bus call exception",
-                        entry("OBJPATH=%s", mapperObjectPath),
-                        entry("INTERFACE=%s", mapperInterface),
-                        entry("EXCEPTION=%s", e.what()));
-
-        throw std::runtime_error("Service name is not found");
-    }
-
-    if (response.empty())
-    {
-        throw std::runtime_error("Service name response is empty");
-    }
-    return response.begin()->first;
-}
-} // namespace util
-
 namespace pel
 {
 void createBootErrorPEL(const FFDCData& ffdcData, const json& calloutData)
