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
