diff --git a/vpd-manager/include/constants.hpp b/vpd-manager/include/constants.hpp
index e605cd1..5195c38 100644
--- a/vpd-manager/include/constants.hpp
+++ b/vpd-manager/include/constants.hpp
@@ -142,6 +142,7 @@
 constexpr auto kwdFN = "FN";
 constexpr auto recVSYS = "VSYS";
 constexpr auto recVCEN = "VCEN";
+constexpr auto recVSBP = "VSBP";
 constexpr auto locationCodeInf = "com.ibm.ipzvpd.Location";
 constexpr auto xyzLocationCodeInf =
     "xyz.openbmc_project.Inventory.Decorator.LocationCode";
diff --git a/vpd-manager/include/single_fab.hpp b/vpd-manager/include/single_fab.hpp
index 8587519..c618cb8 100644
--- a/vpd-manager/include/single_fab.hpp
+++ b/vpd-manager/include/single_fab.hpp
@@ -29,5 +29,14 @@
      * @return IM value on success, empty string otherwise.
      */
     std::string getImFromPlanar() const noexcept;
+
+    /**
+     * @brief API to update IM value on system planar EEPROM path.
+     *
+     * @param[in] i_imValue - IM value to be updated.
+     *
+     * @return true if value updated successfully, otherwise false.
+     */
+    bool setImOnPlanar(const std::string& i_imValue) const noexcept;
 };
 } // namespace vpd
diff --git a/vpd-manager/src/single_fab.cpp b/vpd-manager/src/single_fab.cpp
index 24556d0..c198841 100644
--- a/vpd-manager/src/single_fab.cpp
+++ b/vpd-manager/src/single_fab.cpp
@@ -3,8 +3,10 @@
 #include "single_fab.hpp"
 
 #include "constants.hpp"
+#include "parser.hpp"
 #include "types.hpp"
 
+#include <nlohmann/json.hpp>
 #include <utility/json_utility.hpp>
 
 namespace vpd
@@ -41,12 +43,7 @@
         return l_imData.str();
     }
     catch (const std::exception& l_ex)
-    {
-        logging::logMessage(
-            "Error while getting IM value from PIM persisted file: " +
-            std::string(pimPersistVsbpPath) +
-            ", reason: " + std::string(l_ex.what()));
-    }
+    {}
 
     return std::string();
 }
@@ -85,4 +82,33 @@
 
     return std::string();
 }
+
+bool SingleFab::setImOnPlanar(const std::string& i_imValue) const noexcept
+{
+    try
+    {
+        types::BinaryVector l_imValue;
+        const std::string l_systemPlanarEepromPath = SYSTEM_VPD_FILE_PATH;
+
+        // Convert string to vector of bytes
+        for (auto l_value : i_imValue | std::views::chunk(2))
+        {
+            std::string l_byteString(l_value.begin(), l_value.end());
+            l_imValue.push_back(
+                static_cast<uint8_t>(std::stoi(l_byteString, nullptr, 16)));
+        }
+
+        std::shared_ptr<Parser> l_parserObj = std::make_shared<Parser>(
+            l_systemPlanarEepromPath, nlohmann::json{});
+
+        int l_bytes_updated = l_parserObj->updateVpdKeywordOnHardware(
+            std::make_tuple(constants::recVSBP, constants::kwdIM, l_imValue));
+
+        return l_bytes_updated > 0 ? true : false;
+    }
+    catch (const std::exception& l_ex)
+    {
+        return false;
+    }
+}
 } // namespace vpd
