diff --git a/vpd-manager/include/utility/json_utility.hpp b/vpd-manager/include/utility/json_utility.hpp
index 8a4ae44..55010ad 100644
--- a/vpd-manager/include/utility/json_utility.hpp
+++ b/vpd-manager/include/utility/json_utility.hpp
@@ -1088,5 +1088,46 @@
         return nlohmann::json{};
     }
 }
+
+/** @brief API to get IM value from persisted data location.
+ *
+ * @return IM value on success, empty string otherwise.
+ */
+inline std::string getImFromPersistedLocation() noexcept
+{
+    std::string l_imFilePath{constants::pimPersistVsbpPath};
+
+    try
+    {
+        auto l_parsedVsbpJsonObj = getParsedJson(l_imFilePath);
+        if (!l_parsedVsbpJsonObj.contains("value0") ||
+            !l_parsedVsbpJsonObj["value0"].contains(constants::kwdIM) ||
+            !l_parsedVsbpJsonObj["value0"][constants::kwdIM].is_array())
+        {
+            throw std::runtime_error(
+                "Json is empty or mandatory tag(s) missing from JSON");
+        }
+
+        types::BinaryVector l_imValue =
+            l_parsedVsbpJsonObj["value0"][constants::kwdIM]
+                .get<types::BinaryVector>();
+
+        std::ostringstream l_imData;
+        for (auto& l_byte : l_imValue)
+        {
+            l_imData << std::setw(2) << std::setfill('0') << std::hex
+                     << static_cast<int>(l_byte);
+        }
+        return l_imData.str();
+    }
+    catch (const std::exception& l_ex)
+    {
+        logging::logMessage(
+            "Error while getting IM value from PIM persisted file: " +
+            l_imFilePath + ", reason: " + std::string(l_ex.what()));
+    }
+
+    return std::string();
+}
 } // namespace jsonUtility
 } // namespace vpd
