diff --git a/extensions/openpower-pels/data_interface.cpp b/extensions/openpower-pels/data_interface.cpp
index f64609a..252dd95 100644
--- a/extensions/openpower-pels/data_interface.cpp
+++ b/extensions/openpower-pels/data_interface.cpp
@@ -214,26 +214,6 @@
     return std::string{};
 }
 
-uint8_t DataInterface::getPLDMInstanceID(uint8_t eid) const
-{
-    return 0;
-// Don't use until PLDM switches to async D-Bus.
-#if 0
-    auto service = getService(object_path::pldm, interface::pldmRequester);
-
-    auto method =
-        _bus.new_method_call(service.c_str(), object_path::pldm,
-                             interface::pldmRequester, "GetInstanceId");
-    method.append(eid);
-    auto reply = _bus.call(method);
-
-    uint8_t instanceID = 0;
-    reply.read(instanceID);
-
-    return instanceID;
-#endif
-}
-
 /**
  * @brief Return a value found in the /etc/os-release file
  *
diff --git a/extensions/openpower-pels/data_interface.hpp b/extensions/openpower-pels/data_interface.hpp
index 6caf2b8..3fb4e1c 100644
--- a/extensions/openpower-pels/data_interface.hpp
+++ b/extensions/openpower-pels/data_interface.hpp
@@ -69,20 +69,6 @@
         return _hostUp;
     }
 
-    /**
-     * @brief Returns the PLDM instance ID to use for PLDM commands
-     *
-     * The base class implementation just returns zero.
-     *
-     * @param[in] eid - The PLDM EID
-     *
-     * @return uint8_t - The instance ID
-     */
-    virtual uint8_t getPLDMInstanceID(uint8_t eid) const
-    {
-        return 0;
-    }
-
     using HostStateChangeFunc = std::function<void(bool)>;
 
     /**
@@ -349,15 +335,6 @@
     explicit DataInterface(sdbusplus::bus::bus& bus);
 
     /**
-     * @brief Returns the PLDM instance ID to use for PLDM commands
-     *
-     * @param[in] eid - The PLDM EID
-     *
-     * @return uint8_t - The instance ID
-     */
-    uint8_t getPLDMInstanceID(uint8_t eid) const override;
-
-    /**
      * @brief Finds the D-Bus service name that hosts the
      *        passed in path and interface.
      *
