diff --git a/redfish-core/include/utils/pcie_util.hpp b/redfish-core/include/utils/pcie_util.hpp
index 7b094fe..d9e8480 100644
--- a/redfish-core/include/utils/pcie_util.hpp
+++ b/redfish-core/include/utils/pcie_util.hpp
@@ -3,6 +3,8 @@
 #include "async_resp.hpp"
 #include "dbus_utility.hpp"
 #include "error_messages.hpp"
+#include "generated/enums/pcie_device.hpp"
+#include "generated/enums/pcie_slots.hpp"
 #include "http/utility.hpp"
 
 #include <boost/system/error_code.hpp>
@@ -11,6 +13,7 @@
 
 #include <array>
 #include <memory>
+#include <optional>
 #include <string>
 #include <string_view>
 
@@ -72,5 +75,99 @@
         });
 }
 
+inline std::optional<pcie_slots::SlotTypes>
+    dbusSlotTypeToRf(const std::string& slotType)
+{
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength")
+    {
+        return pcie_slots::SlotTypes::FullLength;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.HalfLength")
+    {
+        return pcie_slots::SlotTypes::HalfLength;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.LowProfile")
+    {
+        return pcie_slots::SlotTypes::LowProfile;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.Mini")
+    {
+        return pcie_slots::SlotTypes::Mini;
+    }
+    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.M_2")
+    {
+        return pcie_slots::SlotTypes::M2;
+    }
+    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM")
+    {
+        return pcie_slots::SlotTypes::OEM;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OCP3Small")
+    {
+        return pcie_slots::SlotTypes::OCP3Small;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OCP3Large")
+    {
+        return pcie_slots::SlotTypes::OCP3Large;
+    }
+    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2")
+    {
+        return pcie_slots::SlotTypes::U2;
+    }
+    if (slotType ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.Unknown")
+    {
+        return pcie_slots::SlotTypes::Invalid;
+    }
+
+    // Unspecified slotType should return an internal error.
+    return std::nullopt;
+}
+
+inline std::optional<pcie_device::PCIeTypes>
+    redfishPcieGenerationFromDbus(const std::string& generationInUse)
+{
+    if (generationInUse ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen1")
+    {
+        return pcie_device::PCIeTypes::Gen1;
+    }
+    if (generationInUse ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen2")
+    {
+        return pcie_device::PCIeTypes::Gen2;
+    }
+    if (generationInUse ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen3")
+    {
+        return pcie_device::PCIeTypes::Gen3;
+    }
+    if (generationInUse ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen4")
+    {
+        return pcie_device::PCIeTypes::Gen4;
+    }
+    if (generationInUse ==
+        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen5")
+    {
+        return pcie_device::PCIeTypes::Gen5;
+    }
+    if (generationInUse.empty() ||
+        generationInUse ==
+            "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Unknown")
+    {
+        return pcie_device::PCIeTypes::Invalid;
+    }
+
+    // The value is not unknown or Gen1-5, need return an internal error.
+    return std::nullopt;
+}
+
 } // namespace pcie_util
 } // namespace redfish
diff --git a/redfish-core/lib/pcie.hpp b/redfish-core/lib/pcie.hpp
index 1c36b18..b5c6c15 100644
--- a/redfish-core/lib/pcie.hpp
+++ b/redfish-core/lib/pcie.hpp
@@ -18,11 +18,11 @@
 
 #include "app.hpp"
 #include "dbus_utility.hpp"
-#include "generated/enums/pcie_device.hpp"
 #include "query.hpp"
 #include "registries/privilege_registry.hpp"
 #include "utils/collection.hpp"
 #include "utils/dbus_utils.hpp"
+#include "utils/pcie_util.hpp"
 
 #include <boost/system/linux_error.hpp>
 #include <boost/url/format.hpp>
@@ -141,45 +141,6 @@
             std::bind_front(handlePCIeDeviceCollectionGet, std::ref(app)));
 }
 
-inline std::optional<pcie_device::PCIeTypes>
-    redfishPcieGenerationFromDbus(const std::string& generationInUse)
-{
-    if (generationInUse ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen1")
-    {
-        return pcie_device::PCIeTypes::Gen1;
-    }
-    if (generationInUse ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen2")
-    {
-        return pcie_device::PCIeTypes::Gen2;
-    }
-    if (generationInUse ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen3")
-    {
-        return pcie_device::PCIeTypes::Gen3;
-    }
-    if (generationInUse ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen4")
-    {
-        return pcie_device::PCIeTypes::Gen4;
-    }
-    if (generationInUse ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Gen5")
-    {
-        return pcie_device::PCIeTypes::Gen5;
-    }
-    if (generationInUse.empty() ||
-        generationInUse ==
-            "xyz.openbmc_project.Inventory.Item.PCIeSlot.Generations.Unknown")
-    {
-        return pcie_device::PCIeTypes::Invalid;
-    }
-
-    // The value is not unknown or Gen1-5, need return an internal error.
-    return std::nullopt;
-}
-
 inline void
     getPCIeDeviceState(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                        const std::string& pcieDevicePath,
@@ -298,7 +259,7 @@
     if (generationInUse != nullptr)
     {
         std::optional<pcie_device::PCIeTypes> redfishGenerationInUse =
-            redfishPcieGenerationFromDbus(*generationInUse);
+            pcie_util::redfishPcieGenerationFromDbus(*generationInUse);
 
         if (!redfishGenerationInUse)
         {
diff --git a/redfish-core/lib/pcie_slots.hpp b/redfish-core/lib/pcie_slots.hpp
index 51a5e69..7246aea 100644
--- a/redfish-core/lib/pcie_slots.hpp
+++ b/redfish-core/lib/pcie_slots.hpp
@@ -4,11 +4,12 @@
 #include "dbus_utility.hpp"
 #include "error_messages.hpp"
 #include "generated/enums/pcie_slots.hpp"
-#include "pcie.hpp"
+#include "query.hpp"
 #include "registries/privilege_registry.hpp"
 #include "utility.hpp"
 #include "utils/dbus_utils.hpp"
 #include "utils/json_utils.hpp"
+#include "utils/pcie_util.hpp"
 
 #include <boost/system/error_code.hpp>
 #include <boost/url/format.hpp>
@@ -21,61 +22,6 @@
 namespace redfish
 {
 
-inline std::optional<pcie_slots::SlotTypes>
-    dbusSlotTypeToRf(const std::string& slotType)
-{
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.FullLength")
-    {
-        return pcie_slots::SlotTypes::FullLength;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.HalfLength")
-    {
-        return pcie_slots::SlotTypes::HalfLength;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.LowProfile")
-    {
-        return pcie_slots::SlotTypes::LowProfile;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.Mini")
-    {
-        return pcie_slots::SlotTypes::Mini;
-    }
-    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.M_2")
-    {
-        return pcie_slots::SlotTypes::M2;
-    }
-    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OEM")
-    {
-        return pcie_slots::SlotTypes::OEM;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OCP3Small")
-    {
-        return pcie_slots::SlotTypes::OCP3Small;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.OCP3Large")
-    {
-        return pcie_slots::SlotTypes::OCP3Large;
-    }
-    if (slotType == "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.U_2")
-    {
-        return pcie_slots::SlotTypes::U2;
-    }
-    if (slotType ==
-        "xyz.openbmc_project.Inventory.Item.PCIeSlot.SlotTypes.Unknown")
-    {
-        return pcie_slots::SlotTypes::Invalid;
-    }
-
-    // Unspecified slotType should return an internal error.
-    return std::nullopt;
-}
-
 inline void
     onPcieSlotGetAllDone(const std::shared_ptr<bmcweb::AsyncResp>& asyncResp,
                          const boost::system::error_code& ec,
@@ -120,7 +66,7 @@
     if (generation != nullptr)
     {
         std::optional<pcie_device::PCIeTypes> pcieType =
-            redfishPcieGenerationFromDbus(*generation);
+            pcie_util::redfishPcieGenerationFromDbus(*generation);
         if (!pcieType)
         {
             messages::internalError(asyncResp->res);
@@ -140,7 +86,7 @@
     if (slotType != nullptr)
     {
         std::optional<pcie_slots::SlotTypes> redfishSlotType =
-            dbusSlotTypeToRf(*slotType);
+            pcie_util::dbusSlotTypeToRf(*slotType);
         if (!redfishSlotType)
         {
             messages::internalError(asyncResp->res);
