diff --git a/vpd-manager/include/constants.hpp b/vpd-manager/include/constants.hpp
index 9358f78..f71b18e 100644
--- a/vpd-manager/include/constants.hpp
+++ b/vpd-manager/include/constants.hpp
@@ -138,6 +138,7 @@
 constexpr auto kwdSE = "SE";
 constexpr auto kwdHW = "HW";
 constexpr auto kwdIM = "IM";
+constexpr auto kwdPN = "PN";
 constexpr auto recVSYS = "VSYS";
 constexpr auto recVCEN = "VCEN";
 constexpr auto locationCodeInf = "com.ibm.ipzvpd.Location";
@@ -228,5 +229,9 @@
     "com.ibm.VPD.Collection.Status.InProgress";
 static constexpr auto vpdCollectionNotStarted =
     "com.ibm.VPD.Collection.Status.NotStarted";
+static constexpr auto power_vs_50003_json =
+    "/usr/share/vpd/50003_power_vs.json";
+static constexpr auto power_vs_50001_json =
+    "/usr/share/vpd/50001_power_vs.json";
 } // namespace constants
 } // namespace vpd
diff --git a/vpd-manager/include/manager.hpp b/vpd-manager/include/manager.hpp
index e744f7a..ad67694 100644
--- a/vpd-manager/include/manager.hpp
+++ b/vpd-manager/include/manager.hpp
@@ -262,6 +262,19 @@
     void processFailedEeproms();
 
     /**
+     * @brief API to check and update PowerVS VPD.
+     *
+     * The API will read the existing data from the DBus and if found
+     * different than what has been read from JSON, it will update the VPD with
+     * JSON data on hardware and DBus both.
+     *
+     * @param[in] i_powerVsJsonObj - PowerVS JSON object.
+     * @param[out] o_failedPathList - List of path failed to update.
+     */
+    void checkAndUpdatePowerVsVpd(const nlohmann::json& i_powerVsJsonObj,
+                                  std::vector<std::string>& o_failedPathList);
+
+    /**
      * @brief API to handle configuration w.r.t. PowerVS systems.
      *
      * Some FRUs VPD is specific to powerVS system. The API detects the
diff --git a/vpd-manager/include/utility/json_utility.hpp b/vpd-manager/include/utility/json_utility.hpp
index e570f9e..8a4ae44 100644
--- a/vpd-manager/include/utility/json_utility.hpp
+++ b/vpd-manager/include/utility/json_utility.hpp
@@ -1055,5 +1055,38 @@
     return l_frusReplaceableAtStandby;
 }
 
+/**
+ * @brief API to select powerVS JSON based on system IM.
+ *
+ * The API selects respective JSON based on system IM, parse it and return the
+ * JSON object. Empty JSON will be returned in case of any error. Caller needs
+ * to handle empty value.
+ *
+ * @param[in] i_imValue - IM value of the system.
+ * @return Parsed JSON object, empty JSON otherwise.
+ */
+inline nlohmann::json getPowerVsJson(const types::BinaryVector& i_imValue)
+{
+    try
+    {
+        if ((i_imValue.at(0) == constants::HEX_VALUE_50) &&
+            (i_imValue.at(1) == constants::HEX_VALUE_00) &&
+            (i_imValue.at(2) == constants::HEX_VALUE_30))
+        {
+            return jsonUtility::getParsedJson(constants::power_vs_50003_json);
+        }
+        else if (i_imValue.at(0) == constants::HEX_VALUE_50 &&
+                 (i_imValue.at(1) == constants::HEX_VALUE_00) &&
+                 (i_imValue.at(2) == constants::HEX_VALUE_10))
+        {
+            return jsonUtility::getParsedJson(constants::power_vs_50001_json);
+        }
+        return nlohmann::json{};
+    }
+    catch (const std::exception& l_ex)
+    {
+        return nlohmann::json{};
+    }
+}
 } // namespace jsonUtility
 } // namespace vpd
